【问题标题】:PrImary key or foreign key for a m-to-n relation tablem对n关系表的主键或外键
【发布时间】:2017-01-13 02:37:58
【问题描述】:

我的数据库中有一个表,它为 m 对 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)
);

我对在这里使用什么感到有点困惑:主键或外键将它们关联起来?

提前感谢您的帮助。

杰尔

【问题讨论】:

    标签: database postgresql database-design


    【解决方案1】:

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

    注意has 表中的oidcid 都是foreign 键,分别指向ordercustomer 表。

    【讨论】:

    • 谢谢。外键给了我失败,但主键不像你说的那样:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多