Database m-to-n关系表的主键或外键

Database m-to-n关系表的主键或外键,database,postgresql,database-design,Database,Postgresql,Database Design,我的数据库中有一个表,它模拟了m-to-n关系。该关系的主键当然是该关系中涉及的两个实体的组合主键 关系是这样的:m个客户有n个订单 create table customer( cid SERIAL PRIMARY KEY, ... ); create table order( oid SERIAL PRIMARY KEY, ... ); create table has( oid INTEGER REFERENC

我的数据库中有一个表,它模拟了m-to-n关系。该关系的主键当然是该关系中涉及的两个实体的组合主键

关系是这样的: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

您应该使用表
has
中的组合键
主键。
has
表中订单和客户ID的组合是该表中的主键,因为它允许识别唯一的单个记录


请注意,表
has
中的
oid
cid
都是外键,分别指向
order
customer
表。

谢谢。外键给了我一个失败,但主键并不像你说的那样:D