E—R数据模型

一、E—模型简介:

    E—R模型(Entity-Relationship Model),又叫实体—关系模型,或E/R模型。是建立数据库过程中最概念化,最接近实体的模型。在E—R模型中,数据结构被表示为“实体—联系”图,图中有三个主要的元素类型:

1.实体集(Entity):从编程的角度来讲,与对象相似。在E—R图中用矩形框表示。

2.属性(Attribute):实体及关系所具有的性质。在E—R图中用椭圆表示。

3.关系(Relationship):两个或多个实体间的男宾连接,可以一对一、一对多、多对一、多对多等多种关系。在E—R图中用棱形表示。

    E—R模型图如图所示:


二、isa关系
    当一个实体集包含子类时,子实体与父实体之间便产生了isa关系。isa关系在E—R图中使用带isa标识的三角符号表示。isa关系中的子实体继承父实体的所有属性,并拥有自己独立的属性。在关系表中体现时,我们可以采用父子表结构的实现方法减少冗余。这种方法相当于Java中的extends关系。将公共属性存储在父表中,在以父表ID作为子表ID,并在子表中存储独立属性。这种访求是典型的“以时间换空间的方法”,只有当表连接不复杂,空间不足,服务器性能允许的情况下,这种方法才比较适用。
    E—R模型如图所示:

三、设计原则
    1.避免冗余:在时间不是很重要的情况下,重点考虑空间,避免重复存储。
    2.简单性考虑:除非有绝对的必要,不要在你的设计中添加更多的成分。
    3.选择正确的联系:实体集可以用多种关系连接起来,往往需要根据实际情况选择正确的联系,保证关系到位,而又不产生数据冗余或令人费解的结果。
    4.选择正确的元素种类:正确的确定属性及实体,特别在属性也可以作为实体考虑的时候,要考虑到应用程序的实现需要及数据库设计的合理性。

四、约束
    1.Key值约束:属性下加下划线表示Key。
    2.单值约束。
    3.完整性约束。

五、弱实体集    弱实体集主要有两个来源。    第一,有时实体集处在一个与isa关系无关的层次体系中。如果集合E中的实体是集合F中的实体的一部分,那么可能仅仅考虑E实体的名字将具有不唯一性,必须要将F实体的名字与E实体结合起来考虑才能具体确实E实体。如:有N多只狗叫阿福,但小三他们家的阿福只有一只。如果,他们家还有两只的话,我估计会产生某种“名号竞争”行为,最终导致只剩下一只阿福。    第二种弱实体的来源是连接实体集,这种弱实体通常可以表示为一种多元关系。如丈夫与妻子之间的夫妻关系,就可以用夫妻实体来表示。单独的夫妻不能直接确定,必须加丈夫ID和妻子ID才能确定。当然,现在社会夫妻这个实体具体表示完全可以由结婚证来代替。虽然现在很多建模工具,不过如果工程比较复杂,画画E-R图还是很有好处的。