我的数据库中有一个用于建模m-to-n关系的表。这种关系的主键当然是这种关系中涉及的2个实体的组合主键。
这种关系是这样的:m个客户有n个订单
create table customer(
cid SERIAL PRIMARY KEY,
...
);
create table order(
oid SERIAL PRIMARY KEY,
...
);
create table has(
oid INTEGER REFERENCES order(oid) ON DELETE CASCADE,
cid INTEGER REFERENCES customer(cid) ON DELETE CASCADE,
FOREIGN KEY (oid,cid) or PRIMARY KEY (oid,cid)
);
我对这里使用的内容有点困惑:主键或外键将它们放在一起?
提前感谢您的帮助。
Jaiel
答案 0 :(得分:1)
您应该在表PRIMARY KEY
中使用has
作为复合键。 has
表中的订单和客户ID的组合是该表中的主键,因为它允许标识唯一的单个记录。
请注意,表oid
中的cid
和has
都是外来键,指向order
和customer
表分别。