Database design 弱实体和外键

Database design 弱实体和外键,database-design,entity-relationship,Database Design,Entity Relationship,引用维基百科的话,弱实体“必须将外键与其属性结合使用来创建主键”,并且“存在依赖于另一个实体”。 但是,一个实体的存在不能依赖于另一个实体而不拥有(部分)PK或FK吗 在经典的Order-OrderLine-Product关系中,OrderLine是一个弱实体,因为它的PK由来自其他实体的两个FK组成,比如orderID和productID 但是订单实体呢?假设它看起来像这样: Order( orderID - not null, Primary key, costumerID -

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

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

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

Order( orderID   - not null, Primary key,
    costumerID - not null, Foreign key,
    date,
    status,
    ...)
很明显,如果没有客户机(CustomerId),订单就不可能存在,但同时,CustomerId不是主键的一部分

  • 那么,在这种情况下,订单实体是否是一个弱实体
  • 如果我们忽略了FK customerID的NOTNULL约束,会怎么样?秩序不再是一个软弱的实体,对吗

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

    在您的示例中,
    OrderLine
    如果其主键由
    orderID
    和一个区分属性(例如
    line\u number
    )组成,那么它将是一个弱实体。如果它的PK由两个FK组成,我们将称之为关系

    您的
    订单
    示例显示了其与
    客户
    的关系的全部参与情况(该关系由两个实体键列
    (orderID,customerID)
    表示)。它不是一个弱实体,因为它有自己的标识符,即,
    orderID
    。如果我们忽略NOTNULL约束,
    订单
    将部分参与其与
    客户的关系

    也看到了我的答案