Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам Django с наследени таблици на база данни само за четене със съставни първични ключове?

Тогава говорите за наследена база данни САМО ЗА ЧЕТЕНЕ, може би можете да създадете външна схема (изгледи) без PK с няколко колони. Например можете да свържете ключовете на полето. Ето и пример:

Например:

Таблици:

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

Външна схема за четене от 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 модели:

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'    

Можете да прецизирате техниката за създаване на ключове varchar, за да можете да работите с индекси . Не пиша повече мостри, защото не знам каква е марката на вашата база данни.

Повече информация:

Направете Django модели поддържат първични ключове с няколко колони?

билет 373

Алтернативни методи




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите нечислови стойности в колона в MySQL

  2. Автоматично генериране на диаграма на база данни MySQL

  3. Създаване на високодостъпна база данни за Moodle с помощта на MySQL репликация

  4. Пребройте редовете в базата данни на mysql, където времевата марка в интервала X

  5. Клониране на MySQL база данни