sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar Django con tablas de base de datos heredadas de solo lectura con claves primarias compuestas?

Entonces, está hablando de una base de datos READONLY heredada, tal vez pueda crear un esquema externo (vistas) sin PK de varias columnas. Por ejemplo, puede concatenar claves de campo. Aquí y ejemplo:

Por ejemplo:

Mesas:

create table A (
  a1 int not null,
  a2 int not null,
  t1 varchar(100),
  primary key (a1, a2)
)

create table B (
  b1 int not null,
  b2 int not null,
  a1 int not null,
  a2 int not null,
  t1 varchar(100),
  primary key (b1, b2),
  constraint b_2_a foreign key (a1,a2) 
  references A (a1, a2)
)

Esquema externo para ser leído por django:

Create view vA as 
select 
   a1* 1000000 + a2 as a, A.* 
from A

Create view vB as 
select 
   b1* 1000000 + b2 as b, 
   a1* 1000000 + a2 as a, B.* 
from B

modelos Django:

class A(models.Model):
    a = models.IntegerField(  primary_key=True )
    a1 = ...
    class Meta(CommonInfo.Meta):
        db_table = 'vA'    

class B(models.Model):
    b = models.IntegerField(  primary_key=True )
    b1 = ...
    a = models.ForeignKey( A )
    a1 = ...
    class Meta(CommonInfo.Meta):
        db_table = 'vB'    

Puede refinar la técnica para crear claves varchar para poder trabajar con índices . No escribo más muestras porque no sé cuál es la marca de su base de datos.

Más información:

Hacer Django ¿Los modelos admiten claves primarias de varias columnas?

boleto 373

Métodos alternativos