数据库学习笔记(03): Entity-Relationship Model

3

主题

7

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2023-3-25 18:20:12 | 显示全部楼层

  • 用实体(Entity)和联系(Relationship)的术语来表达数据以及数据和数据之间的关系,还有约束等信息
  • E-R模型用于数据库的概念设计阶段
  • E-R模型三个基本概念:实体集、联系集、属性
实体


  • 是现实世界课区别于所有其它对象的事物或对象:例如特定的人,公司,车
  • 实体具有属性:公司名、Id
  • 实体集是共享相同属性的相同类型的实体集合
  • 和对象的区别:

    • 实体是静态的,没有针对实体的操作,只有属性描述

联系


  • 指多个实体之间的关联
  • 联系集是相同类型联系的集合,规范表达:n≥2个实体集上的数学关系





  • 联系集的:表达了参与联系的实体集书目,常见二元联系、三元联系



  • 联系集的超码:参与实体集的主键的组合

    • 联系集多对多:主码是两方的主键的并集
    • 多对一:主键是多方的主键
    • 一对一:主键是两方的候选码中任意一个

属性


  • 简单simple和复合composite属性:例如身份证号是简单属性,地址是符合属性
  • 单值single-valued和多值multivalued属性:例如ID是单值属性,电话号码是多值属性、学位是多值属性

    • 一个特定实体都只有单独的一个值的属性
    • 对某个特定实体,一个属性可能对应一组值

  • 派生属性:例如年龄属性可以由出生日期推导出来
  • 删除属性冗余
约束


  • 映射基数约束Mapping Cardinality Constraints:实体集合中的实体通过联系集合能关联的实体个数





  • 参与约束Participation Constraints:实体集合中的实体参与联系时是否全体参与还是部分参与


E-R Diagram


  • 矩形表示实体集
  • 菱形框表示联系集
  • 属性在矩形框罗列
  • 主键用下划线标识
  • 组合属性、多值属性和导出属性的表达,缩进的方式



  • 具有属性的联系集



  • 基数约束:

    • 箭头所指实体集表示映射的“1”方,线段对应的实体集表示映射的“多”一方
    • one-to-one





    • one-to-many。一名教师可以指导多名学生





    • many-to-many





    • 全参与用双线
    • 另一种表达:



一名学生只能被一位教师指导,一位教师可以指导多名学生


  • Ternary Relationship自学



  • 弱实体:没有主键的实体。弱实体集依赖于一个实际存在的确定的实体集

    • 强实体与弱实体的联系只能是1:1或1:N。弱实体参与联系时应该是“完全参与,因此弱实体的联系侧画成双线边
    • 若要唯一区分弱实体,需要其依赖的强实体的key+弱实体的区分符




  • Diagram for university


Reduction to Relation Schemas


  • 强实体:

    • 关系名即实体名,强实体集的主码就是生成的模式的主码

  • 弱实体:

    • 关系名即实体名,属性外加所依赖的强实体的key,最终弱实体转换的关系的key为强实体key+discriminator。
    • A依赖B,还要在A上简历外码约束,参照B的主码

  • 组合属性

    • 不为单独的符合属性创建一个属性,将组合属性的每一个部分作为关系模式的一个顺序性

  • 多值属性

    • 对于多值属性M,构建一个新的关系模式R,包含对应M的属性A,以及对应M所在实体集/联系集的主码

  • 联系集

    • 多对多:参与的实体集的主码属性的并集成为主码
    • 一对一:任选一个实体集的主码

      • 无需转化为一个关系,只需在一个实体中加入外键

    • 多对一:选多的一方的实体集的主码

      • 无需转化为一个关系,将“1”方的key加入到“N”方中外键约束

    • n元联系集

      • 没有箭头:所有参与实体集的主码的并集
      • 有一个箭头:不在箭头侧的实体集的主码

    • 联系集有属性要额外加上

Extended E-R Features

老师好像没讲?
Translation Steps




  • 为每个实体创建表;包括单值属性。选择key
  • 为每个弱实体类型创建表;包括单值属性。在弱实体中将所有者的key作为外键包括在内。将 key 设置为所有者的外键加上本地部分键。
  • 对于每个 1:1 关系,向关系中涉及的某个实体添加一个外键(向关系中另一个实体添加一个外键)
  • 对于每个 1:N 关系,向关系 N 端的实体添加一个外键(以引用关系 1 端的实体)
  • 对于每个 M:N 关系,创建一个新表。在关系中包括每个参与者实体的外键。新表的键是所有此类外键的集合
  • 对于每个多值属性,构造一个单独的表。对此新表中的实体重复键。它既可以用作此表的键,也可以用作实体的原始表的外键

上篇:数据库学习笔记(02): Relational Model
下篇:数据库学习笔记(04): Relational Database Design
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 立即注册
快速回复 返回顶部 返回列表