星星博客 »  > 

数据库系统概念笔记——第7章:数据库设计和E-R模型

文章目录

    • 第七章:数据库设计和E-R模型
      • 7.1 设计过程概览
      • 7.2 实体-联系模型
        • 7.2.1 实体集
        • 7.2.2 联系集
      • 7.3 约束
        • 7.3.1 映射基数
      • 7.5 实体-联系图
        • 7.5.1 基本结构
        • 7.5.2 映射基数
        • 7.5.6 弱实体集
      • 7.6 转换为关系模式
        • 7.6.2 具有复杂属性的强实体集的表示
        • 7.6.4 联系集的表示

第七章:数据库设计和E-R模型

7.1 设计过程概览

在软件开发中,需要经历这几个阶段
在这里插入图片描述
其中设计过程中需要进行数据库设计

关于E-R模式的引入

设计E-R模型的观点是,世界是由一组称为实体的基本对象和这些对象之间的联系构成的

E-R图的作用

帮助澄清用户数据需求,使分析人员和用户对数据需求达成高度一致
是数据逻辑模型设计的基础

7.2 实体-联系模型

7.2.1 实体集

几个概念

  • 实体:实体是现实世界中可区别于其它事物的一个对象。例如在大学中,每一个人都是一个实体
  • 实体集:实体集是指具有相同性质的实体的集合

实体通过一组属性来表示,属性是实体中每个成员所具有的特性
每个实体的每个属性都有一个值,数据库包含若干实体集,每个实体集中包含任意数量和相同类型的实体

属性的类型

  1. 简单属性:不可再分的属性
  2. 复合属性:可以划分为更小的属性,如Birthday = year + month + day
  3. 单值属性:每个实体在该属性上的取值唯一
  4. 多值属性:每个实体在该属性上的取值可以有多个,比如一个教师可能有多个电话号码
  5. 派生属性:可以从其它相关属性或实体派生出来的属性,如教师(编号,姓名,出生日期,年龄),其中年龄即为派生属性,年龄可由当前年份-出生日期得到

各种属性在E-R图中的表示
在这里插入图片描述

7.2.2 联系集

联系是指多个实体间的相互关联

比如可以定义关于学生和老师之间的联系advisor
在这里插入图片描述
联系集是指相同类型联系的集合

几个基本概念

  • 参与:实体之间的关联被称为参与,即实体参与联系。如果实体集E中的每个元素都参与到联系R中,则称E完全参与R,如果只有部分,则称部分参与
  • 角色:实体在联系集中的作用被称为角色

在这里插入图片描述
加上标注说明表示不同的角色
在这里插入图片描述

7.3 约束

7.3.1 映射基数

映射基数表示一个实体通过一个联系集能关联的实体的个数

对于实体集A和B之间的二元联系R而言,映射基数只能是以下几个

  • 一对一:A中的一个实体至多与B中的一个实体联系,反之亦然
  • 一对多:A中的一个实体可以与B中任意数目的实体相联系
  • 多对一:B中的一个实体可以与A中任意数目的实体相联系
  • 多对多:A,B互相可以与多个实体关联

注意一对一不是一 一对应

7.5 实体-联系图

7.5.1 基本结构

E-R图包括如下几个主要构件

  • 分成两部分的矩形代表实体集
  • 菱形代表联系集
  • 为分割的矩形代表联系集的属性
  • 线段将实体集连接到联系集
  • 虚线将联系集属性连接到联系集
  • 双线表示实体在联系集中的参与度
  • 双菱型代表连接到弱实体集的标志联系集

7.5.2 映射基数

  • 一对一:用双箭头表示
  • 一对多:用单箭头表示,指向一
  • 多对一:同上
  • 多对多:用线段表示
    在这里插入图片描述
    E-R图还提供了一种描述每个实体参与联系集中的联系的次数
    用l…h表示
    l表示最小的映射基数,h表示最大的映射基数
    1表示这个实体集在该联系中全部参与,最大值*表示没有限制
    在这里插入图片描述

7.5.6 弱实体集

如果一个实体的所有属性合在一起都不足以形成主码,则称这样的实体为弱实体,反之称为强实体。同一类型的弱实体形成弱实体集

弱实体需要依赖属主实体而存在,不能独立存在

在E-R图中,弱实体集和强实体集有相似之处,但有两点主要的区别

  • 弱实体集的分辨符以虚下划线标明,而不是实线
  • 关联弱实体集与强实体集的联系集用双菱形表示
    在这里插入图片描述

7.6 转换为关系模式

对于只有简单属性的强实体集,直接将E-R图转换为关系模式即可

7.6.2 具有复杂属性的强实体集的表示

对于复合属性:将每个组合属性作为复合属性所在实体的属性
对于多值属性:将其转换为新的关系+所在实体的主码

比如对于以下实体集
在这里插入图片描述
转换后的结果为
在这里插入图片描述
复合属性全部拆开,多值属性建了一张新的表

7.6.4 联系集的表示

模式的合并

在联系转换为关系的过程中,需要对生成的表进行合并

1.二元一对一联系

联系转化的表可以与任一端实体转化成的表进行合并
二元一对一联系不能导致相关实体转化成的表合并

比如有一个E-R图,转换为以下联系
在这里插入图片描述
Dept(dno, dname)
President(pid, pname)
Manage(dno, pid) //dno,pid均可作主码,假设选dno作主码

由于这个关系是一个二元一对一联系,因此可以将Dept表与Manage表合并
也可以将President表和Manage表合并

Dept+Manage -> Dept(dno, dname, pid)

President+Manage -> President(dno,pid,pname)

但是不能将三张表合并

2.二元多对一联系

联系转化的表可以和“多端” 实体转化成的表进行合并

考虑以下联系
在这里插入图片描述
可将学生表和隶属表合并,最终这个关系模型变为两张表

Dept(dno, dname)
Student(sno, sname)
SD(sno, dno, stime)
合并后
Student+SD -> Student(sno,sname,stime,dno)

3.二元多对多联系

直接定义为三张表,无法合并

实体转化成的表,相互之间不能合并
联系转化成的表,相互之间不能合并

后面还有一些内容,不是很重要,这里就暂时不整理了

相关文章