【数据库系统原理】第四章 高级数据库模型:E/R模型及其设计规则、约束

第四章 高级数据库模型

4.1 E/R 模型

E-R 模型中的主要元素及其概念

  1. 实体 Entity:客观存在并可相互区别的事物。可以是具体的人、事、物或抽象的概念。
  2. 实体集 Entity Set(矩形):相似实体的集合。
  3. 属性 Attribute(椭圆):实体集中的实体具有的某一特性。可以用多个属性来表示一个实体。
  4. 联系 Relationship(菱形):现实世界中,表示事物内部或事物之间的联系;信息世界中,表示实体集内部或实体集之间的联系。

联系的种类

  • 多对一联系

    如果 E 中的任一实体可以通过 R 与 F 中的至多一个实体联系,则 R 是从 E 到 F 的多对一联系。

many-one

  • 一对一联系

    • 如果 R 既是从 E 到 F 的多对一联系,又是从 F 到 E 的多对一联系,则 R 是一对一联系。

    • 当 R 是一对一联系时,F 中的每一个实体最多可以和 E 中的一个实体相联系。

    • 一对一联系也可能会为空

    在这里插入图片描述

  • 多对多联系

    • 定义:如果 R 既不是从 E 到 F 的多对一联系,也不是从 F 到 E 的多对一联系,则 R 是多对多联系。

    • 对定义的理解:

      1. 多对一联系是多对多联系的特殊情况,一对一联系是多对一联系的特殊情况。
      2. 适用于的多对一的任何有用特性,也同样适用于一对一联系;但对多对多关系可能不成立。

      如图:rs
      many-many


  • E-R 图中的箭头表示“最多一个”,若 E 到 F 是多对一关系,则 E -> F。

    • 例:一对一关系
      在这里插入图片描述

多路联系

  • 定义:两个以上实体集之间的联系,由菱形到它设计的每个实体集的连线表示。

  • 多路联系中的箭头

    多路联系中的关系同时发生在两方以上。

    多路联系中,箭头指向的实体集是其他 (n - 1) 个实体集的函数。

    表明该实体集是其他 (n - 1) 个实体集共同唯一决定的结果。


联系中的角色 role

如果在一个联系中,同一个实体集出现两次或多次,则为该实体集与联系间的每一条连线命名,称为角色。


联系的属性

联系的属性,可以通过创建一个实体集,将联系的属性转移到该实体集,并在该实体集和联系之间增加相应的连线。

如图:在这里插入图片描述


多路联系到二元联系的转换 P79

  • 连接(connecting)实体集:它的实体是多路联系的联系集的元组。

  • 针对组成连接实体集的每一个实体集,从连接实体集中引入多对一联系。

    P79,将原来的 Contracts 联系转换为一个实体集,对其中的每一个对应的实体集,添加一个多对一的联系。

    如图:在这里插入图片描述

  • 如果一个实体集扮演多个角色,则每一个角色就是一个联系。


E-R 图中的子类 subclass

  • 定义:子类指实体集中的某些实体,它是原实体集的特例,具有特殊性,比原实体集具有更多的属性。

  • 表示:A isa B(A 是 B 的子类联系,在 E-R 图中是一个三角形,顶角朝向父类)
    在这里插入图片描述

  • 每一个 isa 联系都是一对一的


4.2 E-R 模型的设计规则

  • 忠实性:所设计的实体集、属性和联系必须要能够反映应用需求背景中的实际情况

  • 避免冗余:同一件事在模型中多次出现。

    • 造成存储空间的浪费,需要更多的同步处理机制来保持数据的一致性。
    • 存在危险:① 数据冗余; ② 更新异常的可能。
  • 简单性考虑:用尽可能少的元素来描述模型,必要时再逐个补充。

  • 联系的选择:联系也可能产生冗余。

    • 如果一个联系可以从其他的联系中导出,则应被舍弃。
  • 选择正确的元素种类:实体集或者属性

    • 属性比实体集或联系更容易实现,但不是所有情况都适用。


    • 属性集替代实体集 E 的三个条件

      1. 所有与 E 有关的联系必须有指向 E 的箭头。(E 必须是多对一联系的一方
      2. 若 E 有多个属性,则必须没有属性依赖于其他属性(E 的唯一键是它所有的属性
      3. 没有联系包含 E 多次
    • 满足以上三个条件的实体集 E 转换为属性的方法

      • 如果从实体集 F 到 E 有多对一联系 R,那么删除 R 并把 E 的属性作为 F 的属性,当属性名发生冲突时,进行重命名。
      • 如果有多路联系 R 的箭头指向 E,把 E 的属性作为 R 的属性,并删除从 R 到 E 的弧。

      例:
      在这里插入图片描述
      在这里插入图片描述


    • 连接实体集:用实体集代替多路联系


4.3 E-R 模型中的约束

常见的约束

  • 键约束:属性/属性集,每个实体的键取值唯一;
  • 引用完整性约束:引用值必须先存在
  • 其他约束:联系的度、域约束、自定义约束等。

E-R 模型中的键

  • 定义:实体集 E 的一个属性或属性集。对于E的任意两个不同实体,他们在键上的取值不完全相同(但允许部分相同)

  • 对定义的理解:

    • 每个实体集必须有一个键,若实体集有多个键,则选择一个作为主键;
    • 在 isa 层次中,要求**根实体集(父类)**的键所需的所有属性,并且每个实体集的键都可在父类中找到它的组成部分。
  • 一个实体集键的属性用下划线标出,对于多个键的情况,只标出主键的属性。

    如图,在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值