gpt4 book ai didi

database-design - 弱实体和外键

转载 作者:行者123 更新时间:2023-12-02 01:18:24 24 4
gpt4 key购买 nike

引用维基百科的话说,一个弱实体“必须将外键与其属性结合使用才能创建主键”。 ,并且“依赖于另一个实体的存在”。
但是一个实体不能在没有(部分)PK FK 的情况下依赖于另一个实体吗?

在经典的 Order - OrderLine - Product 关系中,OrderLine 是一个弱实体,因为它的 PK 由来自其他实体的两个 FK 组成,比如 orderID 和 productID。

但是 Order 实体呢?假设它看起来像这样:

Order( orderID   - not null, Primary key,
costumerID - not null, Foreign key,
date,
status,
...)

很明显,没有客户(costumerID),订单就不能存在,但同时,客户 ID 不是主键的一部分。
  • 那么,在这种情况下,Order 实体是否是弱实体?
  • 如果我们省略了 FK customerID 的 NOT NULL 约束会怎样?秩序不再是一个弱实体,对吧?
  • 最佳答案

    一个实体可以依赖于另一个实体(与另一个实体的关系)而不是弱实体。这称为完全参与,并在 ER 图中用双重角色线表示。

    在您的示例中,OrderLine如果它的 PK 由 orderID 组成,那么它就是一个弱实体。和一个区别属性,例如line_number .如果它的 PK 由两个 FK 组成,我们会称其为关系。

    您的 Order示例显示其与 Customer 的关系的总参与度(关系由两个实体键列 (orderID,customerID) 表示)。它不是弱实体,因为它有自己的标识符,即 orderID .如果我们省略 NOT NULL 约束,Order将部分参与其与 Customer 的关系.

    另请参阅我对 is optionality (mandatory, optional) and participation (total, partial) are same? 的回答

    关于database-design - 弱实体和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41531486/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com