您正在討論傳統的READONLY數據庫,也許您可以創建一個沒有多列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鍵能夠與索引一起工作。我不寫更多的樣本,因爲我不知道你的數據庫品牌是什麼。
的更多信息:
Do Django models support multiple-column primary keys?
ticket 373
Alternative methods
看來,我可以使用一些Django的ORM的沒有問題。僅使用工作部件是否存在任何潛在問題? – davidscolgan