E/R模型

作者: 我好菜啊_ | 来源:发表于2018-07-07 17:12 被阅读0次

    实体集

    矩形
    相似实体(抽象对象)的集合

    属性

    椭圆
    实体具有的性质

    联系

    菱形
    两个或多个实体集的联系

    子类

    isa联系(一对一)
    三角形
    变与子类相连,对角与父类相连
    A isa B表示A是B的子类

    属性下面下划线

    引用完整性

    尖箭头时 多对一,一对一这里的一指的是至少对应一个
    圆箭头时 指必须有一个(也就是引用完整性)

    弱实体集

    双矩形
    双菱形表示一个多对一联系(支持联系),(支持实体集)为弱实体集提供键(一那边要用圆箭头)
    提供的也必须得是支持实体集的键属性


    联系集
    连接n个实体集E1,E2,……En的联系R的一个实例由(e1,e2,……,en)的有限集构成,每个ei都是从实体集Ei的当前实例中选出
    这个元组集就是R的联系集


    R是从E到F的多对一联系:
    E中的任一实体可以通过R与F中至多一个实体联系
    表示成E——>F

    R是一对一联系:
    R即是E到F的多对一联系又是F到E的多对一联系
    表示成E<——>F

    R是多对多联系
    R既不是E到F的多对一也不是F到E的多对一
    表示成E——F


    多路联系
    从联系菱形到它涉及的每个实体集的连线
    指向实体集E的箭头表示:如果从该联系的其他每个实体集中选择一个实体,它们至多与E中的一个实体联系


    联系中的角色
    在一个联系中一个实体集可能出现多次
    把联系与实体集用同样多的边连接起来,在边上取名字表示实体集代表的不同角色


    角色

    联系的属性
    直接加在联系上,或再创建一个实体集包含联系的属性


    多路联系到二元联系的转换
    连接实体集:实体是多路联系的联系集的元组(内容和联系集是一样的)
    从连接实体集中引出多对一联系


    多路联系转二路

    子类
    isa联系
    每个子类有它自己特殊的属性/联系
    根的键也是所有节点的键,但节点的键可以是其子集。


    E/R模型设计原则
    1.忠实性:忠实于应用的具体要求
    2.避免冗余(额外空间,更新异常)
    3.简单性
    4.选择正确的联系:一个联系连接起来的实体对或实体集可以从一个或多个其他的
    联系中导出。比如多个联系代表相同的信息或者一个联系可以
    从另外几个联系中导出。
    5.选择正确的元素种类:将实体集E用属性代替的条件是
    1)E必须是联系中的一
    2)若E有几个属性,必须没有属性依赖于其它属性
    3)没有联系包含E多次
    代替方法:
    a)若又从F到E的多对一联系R,删除R把E的属性作为F
    的属性
    b)若有多路联系R的箭头指向E,把E的属性作为R的属
    性,删除R到E的弧


    约束
    1.键
    2.引用完整性
    3.度约束:在连接一个联系到一个实体的边上加一个数字,表示相关实体集中任一
    实体可被联系到的实体数目的约束。


    弱实体集
    键由另一个实体集的部分或全部键属性构成
    若支持实体集F本身就是弱实体集,就再往上找F的支持实体集G提供给F的键属性
    若从E到F有多个不同的支持联系,那么每个联系被用来提供一份F的键的拷贝以帮助E形成键



    从E/R图到关系设计
    直观方法:
    1.每个实体集可转化为具有相同属性的关系
    2.联系转化成的关系,关系属性为联系所连接的实体集的键集合以及联系自身的属性(注意一个实体集在联系中以不同角色出现多次的情况,它的键属性出现次数应和角色数一样多,并且要重命名)
    特殊情况:
    1.弱实体集不能直接转化为关系
    2.isa联系与子类要特殊对待
    3.有时将关系组合:
    考虑有E到F的多对一联系R,则可以把F的键还有R的属性添加到E
    导出的联系中,这样就不用为R创建联系了
    注意若e没有对应的f则关系中的对应分量应为空值
    多对多就不要组合了,会冗余


    找出关系中的键
    若关系R是从(二元)联系转化而来,那么联系的多样性就会影响关系的键。
    如果联系是多对多的,则与其相联的实体集的键属性都是R的键属性。stars-in (starName, title, year)。
    如果联系是E1到E2的多对一,则只有E1(多方)的键属性是R的键属性。owns (title, year, studioName)。
    如果联系是一对一的,则与其相连的任一个实体集的键属性都是它的键属性。 (键不唯一)

    如果一个多路联系R有一个箭头指向实体集E,则相应关系中至少有一个键,不包含E的键。
    Contracts(starName,title,year,salary,studiosName)


    处理弱实体集
    弱实体集自己的属性+支持实体集的键属性+支持联系的属性
    与弱实体集W相连的联系要包含W的键属性,以及对W键有贡献的实体集属性
    支持联系不用转


    处理子类结构
    isa联系不用转

    • E/R法 n+1
      为子类实体集建立关系,并加上根的键属性

    • 面向对象法 2^n (减少空间 避免重复信息)
      枚举层次中所有包含根的子树,为每个子树构造关系,包含子树中所有实体集的所有属性


      面向对象法
    • 空值法 (关系少,查询代价低)
      对一个实体集层次只创建一个关系,包含层次中所有实体集的所有属性,允许元
      组有null值

    相关文章

      网友评论

          本文标题:E/R模型

          本文链接:https://www.haomeiwen.com/subject/axfbuftx.html