Home Foros FOROS PARA AYUDAROS ENTRE VOSOTROS. EL PROFESOR AQUÍ NO RESPONDE Foro Python Claves compuestas o como también se conocen Claves Primarias Multicolumna

Claves compuestas o como también se conocen Claves Primarias Multicolumna

Etiquetado: 

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Autor
    Entradas
  • #11425

    Diego
    Participante

    Buenas a todos

    Desde ya mis felicitaciones a Juan por los cursos que sube, y bueno también en estos momentos mis deseos que todos se encuentren bien.

    Aquí escribo desde Argentina, vamos al grano

    Sin entrar en debates acerca del uso de claves autoincrementales, claves uuid versus claves compuestas, si es mejor o peor, mala o buena practica, me he dado cuenta que en Django que es con lo que estoy trabajando el ORM no soporta claves compuestas, y lo que se puede hacer es usar una clave primaria y a las otras como unique_together

    Por Ej. pongo una clase resumida

    class Articulos(models.Model):

    id_empresa = models.OneToOneField(‘Empresas’, models.DO_NOTHING, db_column=’id_empresa’, primary_key=True)

    id_articulo = models.CharField(max_length=30)

    desc_articulo = models.CharField(max_length=50)

    largo = models.IntegerField()

    ancho = models.IntegerField()

    alto = models.IntegerField()

    peso_unidad_manipuleo = models.IntegerField()

    ean13 = models.CharField(max_length=13)

    class Meta:

    managed = False

    db_table = ‘articulos’

    unique_together = ((‘id_empresa’, ‘id_articulo’),)

    En este caso en un sistema multiempresa se necesita que esta sea la clave principal.

    hasta aquí va todo bien pero cuando uno quiere realizar un update con el modelo Django cometería un error por que solo usa internamente el id_empresa para la actualización.

    Ya se que esto lo puedo resolver con una única columna pero supongamos aunque no es el caso de esta tabla, que la misma tenga 10 millones de registros, si usara un incremental como clave, para buscar la clave id_empresa-id_Articulo la consulta demoraría mucho mas que con la clave multicolumna, dado que tendría que por ej. usar un filtro ( esto es solucionable quizás poniendo un indice en la base de datos ) pero ahí ya me sobraría el autoincremental. Otra solución seria usar la unión en una columna de id_empresaId_articulo pero esto rompería la claves foránea por ejemplo que tengo a una tabla Empresas, y encima estaria haciendo un cambio en el modelo de la base de datos para adaptarme al ORM Django

    La pregunta es si alguien sabe si hay algún API para poder usar Claves Primarias Compuestas con el Framework DJango, ya que este no lo soporta.

    Desde ya agradezco las sugerencias y las criticas también. Espero haberme explicado

    Saludos a todos y cuidensen

    Diego

     

     

     

     

     

     

    #11458

    Ushio Okasaki
    Participante

    Te dejo la documentación de una librería externa.

     

    UUID

    #19836

    kevin
    Participante

    Hola buen dia saludos desde mexico, como podria obtener una llave primaria compuesta en Django ?? ya utilice el unique_together pero no encuentro solucion, aparte cuento con una tabla en mi base de datos que cuenta con 5 llaves primarias y llaves foraneas que se vuelven primarias.

    Agradeceria su pronta respuesta gracias

Viendo 3 entradas - de la 1 a la 3 (de un total de 3)
  • Debes estar registrado para responder a este debate.