Khi đó, bạn đang nói về một cơ sở dữ liệu SN SÀNG kế thừa, có lẽ bạn có thể tạo một lược đồ bên ngoài (các khung nhìn) mà không có PK nhiều cột. Ví dụ, bạn có thể nối các khóa trường. Đây và ví dụ:
Ví dụ:
Bảng:
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)
)
Lược đồ bên ngoài được django đọc:
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
mô hình 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'
Bạn có thể tinh chỉnh kỹ thuật để tạo các khóa varchar để có thể hoạt động với các chỉ mục . Tôi không viết thêm mẫu vì tôi không biết thương hiệu cơ sở dữ liệu của bạn là gì.
Thông tin thêm:
Do Django mô hình hỗ trợ khóa chính nhiều cột?