我一直在网上搜索,但找不到任何有用的信息来帮助区分上述关系,而且它们在我看来都是一样的。我不确定它是否被另一个术语引用,但关系的“onlyOne”端通常在 er 图中用弯曲箭头标记。
真的很感激有人举了一个小例子来帮助区分两者。
我一直在网上搜索,但找不到任何有用的信息来帮助区分上述关系,而且它们在我看来都是一样的。我不确定它是否被另一个术语引用,但关系的“onlyOne”端通常在 er 图中用弯曲箭头标记。
真的很感激有人举了一个小例子来帮助区分两者。
这是关于最小基数,也称为参与。参与指示对于给定实体集的所有实体出现是否必须参与关系。换句话说,参与是强制性的还是可选的?
在这种情况下,圆形/弯曲箭头表示强制参与,因此每个实体出现都必须参与关系。
示例:实体 Employee 和 Department,由关系 WorksFor 链接,该关系是一对多关系(一个 Employee 为一个 Department 工作,一个 Department 可以有多个员工在其中工作)。假设每个 Employee 必须与至少一个 Department 相关联,因此参与是强制性的,您可以将其基数定义为“one and only one”(或“exactly one”)。
注意:那里有许多 ER 符号(Chen's、UML 等等),所以圆形/弯曲箭头并不是表达强制参与的唯一方式。重要的方面是与符号一致。参见例如http://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Diagramming_conventions
一对多示例如下:客户表具有以下字段 customerId、customerName
Orders 表有以下字段 orderId、customerId、amount
客户和订单表之间的关系是一对多,即一位客户可以下许多订单。
多对多示例如下: 带有字段 questionId、问题的问题表(如在 stackoverflow 中)
带有字段 tagId、tagType(数据库、C++ 等)的标签表
这是多对多关系的一个例子,即一个问题可以有很多标签,一个标签可以属于很多问题。您需要一个单独的表来维护此映射。
即TagQuestionMapping tagId, questionId