数据建模中的关系

时间:2017-05-02 07:30:12

标签: one-to-many entity-relationship

我有两张桌子

客户(cid(PK),姓名,电话)

订单(oid,cid(FK),日期,金额)

客户可以拥有多个订单,但每个订单只属于一个客户。

问题是他们之间的关系是什么。它是一对多的识别关系还是非识别关系?

由于订单在没有使客户成为识别关系的情况下不能存在?

所以我应该将cid包含在订单表的主键中?

数据库没有任何订单的客户。

1 个答案:

答案 0 :(得分:1)

识别关系不是由两个实体集之间的存在依赖性决定的。存在依赖性通常意味着实体集必须完全参与关系。

识别关系意​​味着一个实体集依赖于另一个实体集来识别身份。依赖实体集称为弱实体集,因为它不能仅由其自己的属性来识别。

在您的示例中,我假设oid是一个自动递增的列。这使得它成为标识Order的代理键,然后Order是常规实体集,因为它可以通过其自己的属性来识别。这意味着两个实体集之间的关系无法识别。

关系由一对列(oid, cid)表示。 oid应该是PK,因此每个订单(oid)只能与一个客户(cid)相关联。但是,cid没有唯一约束,这意味着每个cid都可以与多个oid相关联。因此,这是一对多的关系。

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

相关问题