数据库实体关系模型 --- ER Model

数据库实体关系图 --- The Entity-Relationship Model: ER Model

  • ER模型的作用
  • ER模型的基本组成
  • E-R 图
    • ER图的基本组成
    • 不同的键(Key)
      • 超码: superkey
      • 候选码: candidate key
      • 主键: primary key
      • 外键 foreign key
    • 关于实体(Entity)
      • 实体的四种关联关系 (Key Constraints)
      • 实体的参与限制(Participation Constraints)
      • 弱实体 Weak Entity
    • 关于属性(Attribute)
      • 多值属性 (Multivalue Attribute)
      • 复合属性 (Composite Attribute)
      • 衍生属性(Derived Attribute)
  • 增强实体关系模型 --- Enhanced Entity Relationship (EER Model)
    • 什么是增强实体关系
  • 设计ER需要考虑的因素
    • 实体集 or 属性 (Entity set or Attribute)
    • 三元 or 二元 (Binary or Ternary)
  • Example --- 设计PhotoSmart的数据库
  • Example --- 设计Yelp数据库

ER模型的作用

  • 数据库设计的第一步是需求分析阶段,也是最重要的一步
  • 需求分析阶段的主要工作是概念建模也就是ER建模, 将需求以ER图的方式进行可视化
  • ER图可以描述一个数据库的逻辑结构

ER模型的基本组成

  • 实体(entity): 最基本的数据成员,An entity is an object that exists and is distinguishable from other objects
  • For instance, Michelle Lee with S.S.N.890-12-3456 is an entity
  • 一个entity可以是concrete(一个人,一本书等) 也可以是abstract (比如假期或者疾病)
  • entity set:一组同一类型的entities组成了entity set
  • 比如银行的所有用户组成了一组entity set
  • entity set可以有重叠,比如Student 和 Professor这两个entity set可以有重复的entity,因为一个人可以是老师也可以是另外一节课的学生
  • 属性(attributes): 一个entity用一组attributes来表示,每一个attribute有一个对应的值,比如一个人可以有name,SSN,gender,phone number等attributes
  • relationship sets: the relationship between two entity sets.
  • domain: 一个attribute的domain是这个attribute值得有效范围,比如电话号码是一个十一位整数

E-R 图

ER图的基本组成

  • ER 图的基本组成结构有
  • 正方形 — 代表entity sets
  • 椭圆形 — 表示attributes
  • 菱形 — 表示relationship sets
  • 线条 — 链接attributes和entity sets,entity sets和relationship sets
    数据库实体关系模型 --- ER Model_第1张图片

不同的键(Key)

超码: superkey

  • 能够用来定位关系表中entity的一个或多个属性 Example: {name,S.S.N} 就是super key

候选码: candidate key

  • 最小长度的超码

主键: primary key

  • DB设计者指定的candidate key用来区分不同的entity 用下划线表示
    数据库实体关系模型 --- ER Model_第2张图片

外键 foreign key

  • 一个关系表(relation)的一组字段指向另外一个关系表(relation)的一行 (有点类似pointer)
  • 通过包含另外一个关系表(relation)的primary key实现

关于实体(Entity)

实体的四种关联关系 (Key Constraints)

  • One-to-one: A中的entity最多和一个B中的entity链接, B中的entity最多和一个A中的entity链接
  • One-to-many: A中的entity可以和很多个B中的entity链接, B中的entity最多和一个A中的entity链接
  • Many-to-one: A中的entity最多和一个B中的entity链接, B中的entity可以和很多个A中的entity链接
  • many-to-many: A中的entity可以和很多个B中的entity链接, B中的entity可以和很多个A中的entity链接
  • Example: many-to-one constraints
  • 一个指导老师可以指导很多学生,但是一个学生只能有一个指导老师
  • 我们可以用箭头表示这种关系
  • 箭头指向的是one 数据库实体关系模型 --- ER Model_第3张图片
  • Example: one-to-one constraints
  • 一夫一妻就是one-to-one constraints
    数据库实体关系模型 --- ER Model_第4张图片
  • Example: one-to-many constraints
  • 一个母亲有很多孩子
    数据库实体关系模型 --- ER Model_第5张图片
  • Example: many-to-many constraints
  • 男生有很多女同学,女生也有很多女同学
    数据库实体关系模型 --- ER Model_第6张图片

实体的参与限制(Participation Constraints)

  • total participantion:假如现在要创建一个 某市已婚人士 的数据库,则每个entity的participantion must be total, 也就是在这个数据库里每个entity都必须已婚
  • partial participation: 假如现在要创建一个 某市婚姻状况 的数据库,则不需要每个entity都有对象
  • 我们可以用加粗箭头表示 total participation
    数据库实体关系模型 --- ER Model_第7张图片
  • partial participation数据库实体关系模型 --- ER Model_第8张图片

弱实体 Weak Entity

  • weak entity set: 如果一个entity set无法找出主键, 则这个entity set是weak entity set
  • 比如下图就是weak entity set
    数据库实体关系模型 --- ER Model_第9张图片
  • 为了能找出weak entity里的数据,需要把weak entity和strong entity的primary key相连, 被使用的primary key叫做identifying owner, 并且weak entity需要满足两个条件
  • weak entity必须是total participantion
  • identifying owner和weak entity必须是one-to-many关系
  • weak entity的主键:强实体的主键 + 弱实体的部分属性(partial key)
  • weak Enitty用两个方框表示
    数据库实体关系模型 --- ER Model_第10张图片
    数据库实体关系模型 --- ER Model_第11张图片

关于属性(Attribute)

多值属性 (Multivalue Attribute)

  • 首先构建一个有两列的schema
  • 第一列是有拥有这个多值属性的entity的primary key
  • 第二列是多值属性, 每一个cell对应一个值
  • 多值属性的primary key是所有属性的union
  • 用两个圈圈表示多值属性
  • Example:
    数据库实体关系模型 --- ER Model_第12张图片

复合属性 (Composite Attribute)

  • 一个属性被分为多个属性表示
  • 每一个属性对应一列
  • composite attribute没有对应的列,是抽象属性
  • Example:
    数据库实体关系模型 --- ER Model_第13张图片

衍生属性(Derived Attribute)

  • 一个属性从另外一个属性衍生出来,比如age来自生日等
    数据库实体关系模型 --- ER Model_第14张图片

增强实体关系模型 — Enhanced Entity Relationship (EER Model)

什么是增强实体关系

  • 在ER模型中引入了 subclasses and superclasses, specializations and generalizations等概念

继承 — 父类和子类

  • 子类继承父类的所有属性和关系
  • 子类可以有独特的属性
    例子: SECRETARY有TypingSpeed属性, MANAGER有
    BusinessUnitManaged属性等
  • 圆圈和U型代表继承关系
    数据库实体关系模型 --- ER Model_第15张图片
  • 一些约束
    数据库实体关系模型 --- ER Model_第16张图片

Specialization

  • 自顶而下的将实体分为子类
    例子: EMPLOYEE -> SECRETARY, MANAGER, etc.

Generalization

  • 自底而上的将实体聚合
    例子: CAR (属性: color, price, max speed) 和 TRUCK (属性: color, price, tonnage) 可以构建父类 VEHICLE (属性: color and price).

设计ER需要考虑的因素

数据库实体关系模型 --- ER Model_第17张图片

实体集 or 属性 (Entity set or Attribute)

  • 有时我们需要决定是否将一个property设置为一个atrribute或者设置成一个entity set
  • Example:电话号码设计成学生的属性还是设计成单独的entity set
  • 第二种设计方法的好处是可以处理一个学生可能有多个电话号码或者一个电话号码被好几个学生使用的情况数据库实体关系模型 --- ER Model_第18张图片
  • Example 2:如何设计学生和学生地址之间的关系
    数据库实体关系模型 --- ER Model_第19张图片

三元 or 二元 (Binary or Ternary)

三元关系例子:
数据库实体关系模型 --- ER Model_第20张图片
三元 or 二元 ?

  • 通常如果不是确实需要三元关系,最好使用二元关系
  • 所有的三元关系以及更高元的关系都可以转变成二元关系
  • 三元关系数据库实体关系模型 --- ER Model_第21张图片
  • 二元关系
    数据库实体关系模型 --- ER Model_第22张图片

Example — 设计PhotoSmart的数据库

数据库实体关系模型 --- ER Model_第23张图片

Example — 设计Yelp数据库

数据库实体关系模型 --- ER Model_第24张图片

你可能感兴趣的:(#,数据库概述,数据库)