我有两张桌子
客户(cid(PK),姓名,电话)
订单(oid,cid(FK),日期,金额)
客户可以拥有多个订单,但每个订单只属于一个客户。
问题是他们之间的关系是什么。它是一对多的识别关系还是非识别关系?
由于订单在没有使客户成为识别关系的情况下不能存在?
所以我应该将cid包含在订单表的主键中?
数据库没有任何订单的客户。
答案 0 :(得分:1)
识别关系不是由两个实体集之间的存在依赖性决定的。存在依赖性通常意味着实体集必须完全参与关系。
识别关系意味着一个实体集依赖于另一个实体集来识别身份。依赖实体集称为弱实体集,因为它不能仅由其自己的属性来识别。
在您的示例中,我假设oid
是一个自动递增的列。这使得它成为标识Order
的代理键,然后Order
是常规实体集,因为它可以通过其自己的属性来识别。这意味着两个实体集之间的关系无法识别。
关系由一对列(oid, cid)
表示。 oid
应该是PK,因此每个订单(oid
)只能与一个客户(cid
)相关联。但是,cid
没有唯一约束,这意味着每个cid
都可以与多个oid
相关联。因此,这是一对多的关系。
另请参阅我对以下问题的回答:is optionality (mandatory, optional) and participation (total, partial) are same?