Database design 弱实体和外键
引用维基百科的话,弱实体“必须将外键与其属性结合使用来创建主键”,并且“存在依赖于另一个实体”。 但是,一个实体的存在不能依赖于另一个实体而不拥有(部分)PK或FK吗 在经典的Order-OrderLine-Product关系中,OrderLine是一个弱实体,因为它的PK由来自其他实体的两个FK组成,比如orderID和productID 但是订单实体呢?假设它看起来像这样: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 -
Order( orderID - not null, Primary key,
costumerID - not null, Foreign key,
date,
status,
...)
很明显,如果没有客户机(CustomerId),订单就不可能存在,但同时,CustomerId不是主键的一部分
一个实体的存在依赖于另一个实体(与另一个实体的关系),而不是一个弱实体。这称为完全参与,在ER图中用双重角色线表示 在您的示例中,
OrderLine
如果其主键由orderID
和一个区分属性(例如line\u number
)组成,那么它将是一个弱实体。如果它的PK由两个FK组成,我们将称之为关系
您的订单
示例显示了其与客户
的关系的全部参与情况(该关系由两个实体键列(orderID,customerID)
表示)。它不是一个弱实体,因为它有自己的标识符,即,orderID
。如果我们忽略NOTNULL约束,订单
将部分参与其与客户的关系
也看到了我的答案