数据建模中的关系

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 相关联。因此,这是一个一对多的关系。

另请参阅我对以下问题的回答: