sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bruger man Django med ældre skrivebeskyttede databasetabeller med sammensatte primærnøgler?

Du taler om en ældre READONLY-database, måske kan du oprette et eksternt skema (visninger) uden PK'er med flere kolonner. For eksempel kan du sammenkæde feltnøgler. Her og eksempel:

For eksempel:

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

Eksternt skema, der skal læses af 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 forfine teknikken til at lave varchar-nøgler for at kunne arbejde med indekser . Jeg skriver ikke flere eksempler, fordi jeg ikke ved, hvad dit databasemærke er.

Flere oplysninger:

Do Django modeller understøtter primære nøgler med flere kolonner?

billet 373

Alternative metoder




  1. Migrering fra MySQL Enterprise til MariaDB 10.3

  2. Hvordan make_timestamp() virker i PostgreSQL

  3. Sådan importeres en database ved hjælp af phpMyAdmin

  4. SQL Server Transactional Replication Internals – Del 2