��那么,前面的两个定义之间到底有什么差别呢?前一种情况隐含说明了通常情况下每个员工只有一个电话号码与之相关联(当然,这也不是完全正确的,因为还可以把telephone-number看成是一个多值属性);而第二种情况则表明每个员工可以有多个电话号码(包括0个)。因此,第二个定义比第一个更通用。即使每个员工正好就与一个电话号码相联系,而当有多个员工共用一个电话时,第二个定义更确切。但即使这样,在实际的应用中也很少有人使用第二个定义,为什么呢?第一个定义可能有数据冗余,浪费存储空间,且容易导致数据不一致;第二个定义更接近于现实世界,但不太符合人的思维习惯,查询起来似乎不是很方便,需要通过链接或指针,即员工与电话之间的联系,多了一个中间环节。虽然实体集和属性不是绝对的,但什么可作为属性?什么可作为实体集?这很难回答。主要还是取决于被建模的现实世界的实际情况以及所讨论的属性的相关语义。

��一个对象既可以被描述成实体集,又可以被描述成某个实体集的属性。但是这样所造成的效果是完全不同的。前者是独立存在的,而后者是要依附于某个实体集的。当然是独立的灵活一些,描述能力更强一些,但是要麻烦一些。作为附庸虽然失去了自由,但是就整体来说可能更容易实现。具体的选择还是要根据具体问题进行具体分析,这正是体现人的智慧的时候。
��