最近在翻译一本数据库的教材,碰到Cardinality这个词,这个词在许多国内的数据库教材中不常见。查了一下英文资料觉得很有必要翻一下, 原文地址
内容如下:

Cardinality defines the numeric relationships between occurrences of the entities on either end of the relationship line.

基数是写在关系线两端 ,表明实体从一边通过关系可以得到另一边实体的数量。
(翻译的太烂。。)

 下面是一些实例:


LINK 这是0:0可选的关系,这样表达的意思就是:一个person 可以占用一个停车位(parking space),但是没必要一个person有一个停车位,也没必要一个停车位必须有一个人。虽然这个概念很简单,但是在数据库中实现却并不直接。你可能得令一个实体作为主表,使用触发器或者程序来限制在另一张表里关联的记录数目。

SubType 这是1:0的关系;只有一方有选择性。意思就是说一个人可能是一个程序员,那么一个程序员 一定是一个人。关系中强制方必须作为主表。跟前面一样,用触发器和程序来控制数据库。

Physical Segment 这是1:1的强制型关系。一个人必须有且仅有一个DNA序列,一个DNA序列也必须对应且仅对应一个人。
Possession 这是0:M(0对多)的可选型关系,意思就是一个人可能有0个电话,1个,或多个电话;某个电话可能没有主人,但是最多只能属于一个人。数据库里的实现方式:在phone表里设置一个可以为空的外键列,用这个列来关联person表。

Child 这是1:M的强制型关系,这是在数据库里最常见的一种关系类型,一个人可能是或者不是一个会员,但是有可能对应好几个club的会员(假如member实体表述的是多个club里的所有会员记录),毫无疑问,一个会员必须是一个人。数据库里,会员表必须有一个强制不为空的外键。实现二实体间的关联。
这个例子不太好,假设所有人的名字不重复。
Characteristic 这是0:M的关联,在M的一端是强制性的。这意思是说,一个人必须有至少一个名字,可以有多个名字,一个名字可能属于某一个人(或没主人)。在数据库里,可以再name表里设置一个可以为空的外键指向person表,使用触发器或者程序来强制一个person必须至少有一个名字。

Paradox 这是1:M实体两边都是强制型的关系。

Association 这是M:M(多对多)的可选型关系。概念上是这样的:一个人可以选择为0个,1个或多个老板工作,一个老板可以有0个,1个或多个员工。一般对于M:M这种多对多关系在数据库里面拆分成两个0:M的关系。中间实体表名可以叫做employee,因为它是用来将person实体联系到老板实体的。