数据建模中的关系
Relationships in Data modeling
我有两个table
客户(cid(PK),姓名,phone)
订单(oid,cid (FK),date,amount)
一个客户可以有多个订单,但每个订单只属于一个客户。
问题是他们之间是什么关系。是一对多识别关系还是非识别关系?
因为如果没有使订单成为识别关系的客户,订单就不可能存在?
所以我是否应该在订单的主键中包含 cid table?
数据库不能有没有订单的客户。
识别关系不是由两个实体集之间的存在依赖关系决定的。存在依赖通常意味着实体集必须完全参与关系。
识别关系意味着一个实体集的身份依赖于另一个实体集。依赖实体集被称为弱实体集,因为它不能单独通过其自身的属性来识别。
在您的示例中,我假设 oid
是一个自动递增的列。这使它成为标识 Order
的代理键,然后 Order
是一个常规实体集,因为它可以由其自身的属性标识。这意味着两个实体集之间的关系无法识别。
关系由一对列 (oid, cid)
表示。 oid
应该是PK,这样每个订单(oid
)只能关联一个客户(cid
)。但是,cid
没有唯一约束,这意味着每个 cid
可以与多个 oid
相关联。因此,这是一个一对多的关系。
另请参阅我对以下问题的回答:
我有两个table
客户(cid(PK),姓名,phone)
订单(oid,cid (FK),date,amount)
一个客户可以有多个订单,但每个订单只属于一个客户。
问题是他们之间是什么关系。是一对多识别关系还是非识别关系?
因为如果没有使订单成为识别关系的客户,订单就不可能存在?
所以我是否应该在订单的主键中包含 cid table?
数据库不能有没有订单的客户。
识别关系不是由两个实体集之间的存在依赖关系决定的。存在依赖通常意味着实体集必须完全参与关系。
识别关系意味着一个实体集的身份依赖于另一个实体集。依赖实体集被称为弱实体集,因为它不能单独通过其自身的属性来识别。
在您的示例中,我假设 oid
是一个自动递增的列。这使它成为标识 Order
的代理键,然后 Order
是一个常规实体集,因为它可以由其自身的属性标识。这意味着两个实体集之间的关系无法识别。
关系由一对列 (oid, cid)
表示。 oid
应该是PK,这样每个订单(oid
)只能关联一个客户(cid
)。但是,cid
没有唯一约束,这意味着每个 cid
可以与多个 oid
相关联。因此,这是一个一对多的关系。
另请参阅我对以下问题的回答: