sql >> Databasteknik >  >> RDS >> Mysql

Hur använder man Django med äldre skrivskyddade databastabeller med sammansatta primärnycklar?

Du talar om en äldre READONLY-databas då, kanske du kan skapa ett externt schema (vyer) utan PK:er med flera kolumner. Till exempel kan du sammanfoga fältnycklar. Här och exempel:

Till exempel:

Tabeller:

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)
)

Externt schema som ska läsas av 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

django-modeller:

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'    

Du kan förfina tekniken för att göra varchar-nycklar för att kunna arbeta med index . Jag skriver inte fler exempel eftersom jag inte vet vad ditt databasmärke är.

Mer information:

Do Django modeller stöder primärnycklar med flera kolumner?

biljett 373

Alternativa metoder




  1. Hur kan jag manipulera MySQL fulltext sökrelevans för att göra ett fält mer "värdefullt" än ett annat?

  2. Hur man löser felet `prisma/klienten har inte initierats ännu` på Vercel

  3. Batchinfogning med Native SQL i Hibernate

  4. Isoleringsnivån Läs engagerad