数据库系统原理与设计-第四章 数据库建模 上


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

回顾数据模型与数据库三级模式

  • 数据模型是一个描述数据结构数据操作以及数据约束数学形式体系(即概念及其符号表示系统)
  • 根据数据抽象的不同级别,将数据模型划分为3类:
    • 概念模型:E-R模型
    • 逻辑模型(关系模型):数据库模式(关系模式的集合)
    • 物理模型:物理存储结构和存取方法
  • 数据抽象与数据库三级模式
    • 物理层抽象:内模式(存储模式),全体数据的物理存储结构和索引
    • 逻辑层抽象:模式(逻辑模式),全体数据的逻辑结构
    • 视图层抽象:外模式(子模式或用户模式),局部数据的逻辑结构
  • 数据库设计的任务
    根据应用需求和软、硬件环境的约束,设计最优的数据库概念模型逻辑模型(模式和外模式)物理模型,使之能够有效地存储和管理数据,满足用户的信息要求和处理要求

4.1 数据库设计过程

数据库设计过程概述

  • 数据库设计就是根据各种应用处理的要求、硬件环境及操作系统的特性等,将现实世界中的数据进行合理组织,并利用已有的数据库管理系统(DBMS)来建立数据库系统的过程。
  • 具体地说,对于一个给定的应用环境,构造出最优的数据库逻辑模式物理模式,并建立数据库及其应用系统,使之能够有效地存储和管理数据,满足用户的信息要求处理要求
    在这里插入图片描述

需求分析

  • 整个数据库设计过程的基础,也是最困难和耗时的一步
  • 目标:了解和分析系统将要提供的功能及未来数据库用户的数据需求,包括:
    • 功能需求
    • 数据需求
    • 数据使用业务规则
    • 数据联系及约束
    • 性能需求
    • ……
  • 方法:数据库设计者同应用领域的专家和用户进行深入沟通和交流。
  • 结果:形成用户的需求规格说明书

概念设计

  • 概念设计是根据需求分析中得到的信息,运用适当的工具将这些需求转化为数据库的概念模型
  • E-R模型是Peter Chen于1976年提出的一种语义模型。该模型是基于对现实世界的这样一种认识:
    • 世界由一组称作实体的基本对象及这些对象间的联系组成。
  • 由于E-R模型能将现实世界中概念的含义和相互关联映射到数据库概念模型,因此许多数据库设计工具都基于它进行扩展。
  • 本章基于E-R模型进行数据库概念设计,其目的是通过实体、联系、属性等概念和工具精确地描述系统的数据需求数据联系约束规则
  • 结果:E-R图(实体、联系及属性)

逻辑设计

  • 本步骤是将数据库的概念模型转化为所选择的数据库管理系统支持的逻辑数据模型,即数据库模式
  • 常见逻辑模型
    • 层次
    • 网状
    • 关系数据库(本书讨论的对象)
    • 面向对象
    • XML

模式求精

  • 模式求精的任务是分析并发现数据库逻辑模式存在的问题,并进行改进和优化
  • 对于关系数据库而言,模式求精是以关系数据理论做指导,对已得到的关系数据库模式进行分析,找出潜在的问题并加以改进和优化,如减少数据冗余,消除更新插入删除异常等。
  • 需求分析概念设计是根据主观认识进行的,但模式求精则是基于关系理论对相关逻辑模式进行优化。

物理设计

  • 考虑数据库要支持的负载和应用需求,为逻辑数据库选取一个最适合现实应用的物理结构,包括:
    • 数据库文件的组织格式
    • 文件内部的存储结构
    • 建立索引
    • 表的聚集
    • ……

应用与安全设计

  • 一个数据库系统必须指出:
    • 哪些用户可以访问数据库?
    • 他们通过哪些存储过程访问数据库?
    • 每个用户在每个过程中扮演什么样的角色
    • 对于每个角色,他们能够存取数据库的哪些部分和不能存取哪些部分(访问权限)?
  • 完整的数据库设计是不可能一蹴而就的,
  • 它往往是上述6个步骤的不断反复的过程!

4.2 ER模型基本概念及表示(重点)

实体与实体集

  • 实体客观世界中可区别于其他事物的“事物”或“对象”。
  • 实体特征:
    • 独立存在。一个实体的存在不依赖于其它实体。例如,一名学生的存在不取决于其它学生实体是否存在。
    • 可区别于其它实体。每个实体有一组特征,存在能唯一标识每个实体的特征(集)。例如,学号“1201600258”可以唯一地标识学生 “李小勇”。
  • 实体可以是有形的、实在的事物,如一名教师、一本书等;
  • 也可以是抽象的、概念上的事物,如一门课程、一个专业,以及一次订货、借书、选课、存款或取款等业务产生的单据。
  • 但是,二者都应是组织或机构“感兴趣”的事物。
  • 实体集是具有相同类型即相同性质(或属性)的实体组成的集合

属性

  • 属性实体集中每个实体都具有的特征描述
  • 一实体集中所有实体都具有相同的属性。
    • 例如,学生实体集中的每个实体都具有: 学号、姓名、性别、出生日期、年龄、所学专业、电话号码、家庭住址、所在班级等属性。
  • 对每个属性来说,一个实体都拥有自己的属性值
  • 每个属性所允许的取值范围或集合称为该属性的域
    在这里插入图片描述

属性分类

简单属性和复合属性
  • 简单属性是指不能再分为更小部分的属性。
  • 复合属性是指可以进一步划分为更小部分的属性。
    • 学生实体集的家庭住址可以进一步设计成包括省份、城市、街道等成分的属性。
单值属性和多值属性
  • 如果某属性对一个特定实体任何时候都只能有单独的一个值,则称该属性为单值属性,否则为多值属性
    • 学号为单值属性,因为一个学生的学号只有一个值。
    • 电话号码为多值属性,因为一个学生可能有0个、1个或多个电话号码(如实验室电话、宿舍电话、移动电话等)。
派生属性
  • 派生属性的值可以从其它相关属性实体(集) 派生出来
    • 年龄为派生属性,因为一个学生的年龄属性的值可以由该学生的出生日期属性的值和当前日期计算得到。
    • 学生实体集的已修学分(该学生所选修课程的学分合计)也是派生属性,因为它的值可以通过统计该学生所选修课程的学分之和来获得。
      在这里插入图片描述
空值(NULL)
  • 当实体在某个属性上没有值时可使用NULL值,表示属性的值是未知的不存在
    • 不知道某学生的专业(所学专业的值未知)或该学生还没有分配专业(所学专业的值不存在),则该学生所学专业的值为NULL。
    • 某学生的出生日期为NULL,则认为该值是缺失的(即值未知)。

实体集及属性的E-R图表示

  • 在E-R图中,实体集和属性分别表示如下:
    • 实体集——矩形
    • 属性——椭圆
    • 多值属性——双椭圆
    • 派生属性——虚线椭圆
    • 属性与实体之间——连线
      在这里插入图片描述

多值属性的变换

  • 多值属性转换为多个单值属性进行建模。例如,可将多值属性电话号码建模为移动电话、宿舍电话、实验室电话、家庭电话4个单值属性,如图4-4所示。
    在这里插入图片描述
    • 该方案存在明显的不足:一是缺少弹性,如果需要存储第5个、第6个电话测需要修改模型;二是浪费存储空间,因为并不是所有的学生都有4个电话需要存储。
  • 多值属性单独建模为一个弱实体集,它依赖于原实体集而存在。请参见4.4节。

联系与联系集

  • 联系(relationship)是指多个实体间的相互关联。例如,学生李小勇选修了数据库系统原理课程。
  • 联系集同类联系集合
  • 形式化地说,联系集是n (n≥2)个实体集上的数学关系,这些实体集不必互异如果El, E2, …, En为n个实体集,那么联系集R是集合{(e1, e2, …, en)︱e1∈E1, e2∈E2, …, en∈En}的一个子集,而(e1, e2, …, en)是一个联系。
  • E-R图用菱形表示联系(集)。联系可具有自身的描述属性
    • 例如,可定义学生与课程实体集之间的选课联系集。联系属性成绩记录了学生选修课程的成绩。
    • 说明: 图中省略了实体集的属性
      在这里插入图片描述

多联系与联系中的实体角色

  • 多联系:在相同的实体集上可能存在多个不同联系集。如教师与学生实体集之间同时存在授课、指导联系集。
    在这里插入图片描述

  • 角色实体在联系中的作用。如课程实体集中的2门课程实体C1、实体C2之间存在先修要求联系,其中C1、C2扮演不同的角色,C1代表主课程C2代表先修课程,分别表示实体所扮演的角色。
    在这里插入图片描述

联系集的度

  • 参与联系集的实体集数目称为联系集的度
    • 如二元联系集的度为2 ,三元联系集的度为3 。
  • 联系集选课是二元(binary)联系集的例子,即涉及2个实体集的联系集。
  • 如果还需要知道学生选修课程的任课教师信息,可以在 联系集选课中增加教师实体集,形成一个新的三元联系集选课-任教。
    在这里插入图片描述

4.3 约束(重点)

  • E-R模型的约束主要有:
    • 映射约束 (重点)
    • 码约束 (重点)
    • 依赖约束(难点)
    • 参与约束
  • 另外,还会介绍多值联系的概念(难点)。

映射约束

  • 映射基数
    • 实体集A中的一个实体通过某联系集R能与实体集B中的实体相联系的数目,称为实体集A到实体集B之间的联系集R的映射基数(mapping cardinality),简称为联系集R的映射基数
    • 说明:并不要求A与B是不同的实体集
  • 二元联系中,共有3种映射基数
    • 1:1(一对一)
    • 1:m(一对多) ——反过来看就是m:1(多对一)
    • m:n(多对多)

一对一

  • A中的一个实体至多(允许不)同B中的一个实体相联系,B中的一个实体也至多(允许不)同A中的一个实体相联系。
    • 例如,由实体集销货单和发票参与的联系集开发票,假设一个销货单对应开一张发票,则开发票为实体集销货单和发票之间的一对一联系集。
      在这里插入图片描述

    • 说明:存在部分销货单还没有开发票,但每一张发票都有唯一对应的销货单。

一对多

  • A中一个实体可以同B中任意数目(可以为0)的实体相联系,而B中一个实体至多(允许不)同A中一个实体相联系。
  • 反过来看的多对一:A中一个实体至多(允许不)同B中一个实体相联系,而B中一个实体可以同A中任意数目(可以为0)的实体相联系。
    • 例如,由实体集班级和学生参与的联系集包含,假设一个班级可以包含多名学生,但一名学生只能归属于某一个班级,则包含为从实体集班级到学生的一对多联系集,或为从实体集学生到班级的多对一联系集。
      在这里插入图片描述

    • 说明:每一个班级都包含学生,但存在部分学生没有对应的班级。

    • 再如,由实体集课程和学院参与的联系集归属,假设一门课程只能归属于一个学院,但一个学院可以负责多门课程,则归属为从实体集课程到学院之间的多对一联系集,或为从实体集学院到课程的一对多联系集。
      在这里插入图片描述

    • 说明:每一门课程都有归属的学院,但存在部分学院没有负责的课程。

多对多

  • A中的一个实体可以同B中任意数目(可以为0)的实体相联系,而B中的一个实体也可以同A中任意数目(可以为0)的实体相联系。
  • 例如,由实体集学生和课程参与的联系集选课,假设一个学生可以选修多门课程,且一门课程允许多个学生选修,则选课为实体集学生与课程之间的多对多联系集
    在这里插入图片描述
    • 说明:每一个学生都选修了课程,但有的课程没有学生选修。
    • 说明:实体集A与B之间联系集R的映射基数是多对多,可理解为是由两个一对多的映射基数所组成的,即A到B之间的一对多的映射基数(即A中的一个实体通过某联系集R能同时与B中的多个实体相联系),以及B到A之间的一对多的映射基数。

映射基数的表示

  • 在E-R图中,为了反映联系集的映射基数,采用“→”表示指向参与联系集中的 “一”方实体集,线段“—”表示参与联系集中的 “多”方实体集。
    在这里插入图片描述

码约束与联系集的属性安置

实体集的码

  • 超码(super key)是一个或多个属性集合,且这些属性的集合在一实体集中能够唯一标识一个实体
    • 如果SK是一个超码,那么SK的任意超集(即包含超码的属性集)也是超码
  • 若一超码任意真子集不能成为超码,则称该最小超码候选码(candidate key)。
    • 给定一组属性集,可能存在多个候选码
    • 假设学生实体集中不存在同名的学生,则学号和姓名都可以用来唯一区分学生 ,因此它们都可以作为学生实体集的候选码
    • 学号和姓名的组合是候选码吗?不是
  • 候选码和超码是实体集客观存在的特性,它们表示实体集中任意两个实体不允许在码属性上有相同的值。
  • 可以从多个候选码中选择一个作为实体集主码(primary key)。主码被数据库设计者主观选中、用来区分同一实体集中不同实体的候选码。
  • 当一实体集存在多个候选码时,主码选择原则
    • 选择属性长度最短的候选码;
    • 选择包含单个属性的码,而不是复合候选码;
    • 选择在数据库系统生命周期内属性值最少变化的候选码;
    • 选择在数据库系统生命周期内更可能包含唯一值的候选码。
  • 一个联系集中的每一个联系也要求是可区分的,也必须存在候选码,并选择其中的一个候选码作为主码,用于唯一标识联系集中的一个联系

联系集的码

  • 假设有一个涉及n个实体集E1,E2,… ,En的n元联系集R,PK(Ei) 代表构成实体集Ei的主码属性的集合,而(e1, e2, e3, …, en)是联系集R的一个联系,那么PK(E1) ∪PK(E2) ∪… ∪ PK(En) 构成联系集R的一个超码
  • 二元联系集主码选择,依赖于联系集映射基数
    • 一对一主码可以使用参与联系集中的任何一方实体集的主码
    • 一对多(多对一)主码“多”的一方实体集的主码组成;
    • 多对多主码由参与联系集所有实体集的主码组成。
  • 对于多元联系集,它的主码的确定要复杂得多,它依赖于各实体集参与联系的实际语义!

二元联系集的属性安置

  • 一对一联系集的属性:安置于联系集任一边实体集上;
  • 一对多联系集的属性:安置于联系集多的一方实体集上;
  • 多对多联系集的属性:它是描述相关联实体集间的交互性语义,因此,联系属性只能安置于联系集上,不能放到相关联的实体集上去。

依赖约束

  • 依赖约束是指联系中一种实体的存在依赖于该联系集联系或其他实体集实体的存在。
    • 联系中一种实体的存在依赖于该联系集联系的存在,称为实体集联系集之间的依赖约束,并将依赖于联系集而存在的实体集称为依赖实体集
    • 联系中一种实体的存在依赖于其他实体集实体的存在,称为实体集之间依赖约束,并将依赖于其他实体集而存在的实体集称为弱实体集(见4.4节)。

实体集与联系集之间的依赖约束

  • 伴随着商品销售业务的发生,会产生销货单(或购货单)。
  • 如果将销货单建模为实体集,则在销货单商品实体集之间存在着多对多的商品销售联系集(反映一张销货单或一种商品的销售明细),联系属性有销售数量、销售单价等。
  • 销货单实体集的存在是依赖于商品销售联系集的存在,也就是说,没有商品销售联系,就没有销货单实体,即销货单实体集与商品销售联系集之间存在依赖约束销货单依赖实体集

在这里插入图片描述

  • 为了区分,本书约定依赖实体集采用带填充背景的矩形表示,它所依赖的联系集用带填充背景的菱形表示(也可以不去区分依赖实体集和它所依赖的联系集)。
  • 考虑一个问题:
    • 为什么商品与销货单联系,
    • 而不是与销售员联系?

参与约束

  • 如果实体集A中的每个实体都参与到联系集R中至少一个联系中,则称实体集A全部参与联系集R
  • 如果实体集A中只有部分实体参与到联系集R的联系中,则称实体集A部分参与联系集R
  • 例如,对于选课联系集,学生实体集是全部参与,而课程实体集是部分参与
    在这里插入图片描述

多值联系

  • 多值联系是指在同一个给定联系集中,相关联的相同实体之间可能存在多个联系
  • 例如,实体集客户银行之间的多对多贷款联系集,表示一个客户可以向多个银行贷款,同时一个银行可以向多个客户发放贷款,联系集的属性有:贷款编号、贷款日期、贷款金额等。
    在这里插入图片描述
  • 该E-R模型存在如下问题:
    • 当一个客户向同一个银行申请多笔贷款时,则联系集中无法唯一标识一个联系。即贷款不仅是一个多对多联系,而且是一个多值联系
    • 如果由多个银行联合发放一笔贷款,或由多个客户共同借一笔贷款,则会出现数据冗余问题(在联系集中反映该笔贷款的贷款编号、贷款日期等要重复多遍).

多值联系的解决方案:

  • 一种直观的解决办法:从多值联系联系属性中选择若干个标识性属性联系集相关联的实体集主码一道构成多值联系的主码。例如,选择{客户编号, 银行编号, 贷款编号}作为联系集的主码,其中贷款编号为联系属性,它用于区分同一个客户在同一个银行发生的多次贷款业务。
  • 该解决办法违背了E-R模型关于联系集主码确定原则,而且仍然没有解决数据冗余的问题。
  • 一种更好的解决办法就是,将多值联系建模为依赖实体集或弱实体集,见4.6.3节。

4.4 弱实体集

  • 在现实世界中存在一类实体集,其属性不足以形成主码,它们必须依赖于其它实体集的存在而存在,我们称这样的实体集为弱实体集 (weak entity set)。与此相对应,其属性可以形成主码的实体集称为强实体集
  • 弱实体集所依赖的强实体集称为标识实体集 (identifying entity set)。弱实体集必须与一标识实体集相关联才有意义,该联系集称为标识联系集 (identifying relationship set)。
  • 一个弱实体集中用来标识弱实体 的属性(集) 称为该弱实体集的部分码 (partial key)。
  • 弱实体集中的实体是由其标识实体集中的主码与其部分码共同标识。
  • E-R图使用双矩形表示弱实体集双菱形表示标识联系集虚下划线表示弱实体集的部分码
    在这里插入图片描述
  • 对于弱实体集,必须满足下列限制:
    • 标识实体集弱实体集必须是 “一对多”联系集
    • 弱实体标识联系集中是全部参与(双连线表示全部参与)。
  • 考虑将多值属性电话号码建模为弱实体集联系电话,它有2个属性:电话号码、电话用途,其中电话号码为部分码.
    在这里插入图片描述
    • 弱实体集联系电话的属性也可以定义为:电话类别、电话号码,其中,电话类别为部分码,取值为:移动电话、宿舍电话、实验室电话、家庭电话等。
  • 再如,在一个大学选课管理系统中:
    • 可将学院、教师、学生等建模为强实体集
    • 学院下设的可考虑建模为弱实体集,它依赖于强实体集学院
    • 那么是否可以将学院所属的教师(学生)也认为是依赖于学院?即是否可将教师(学生)也建模为弱实体集?
      • 首先,教师、学生是客观存在的事物,不是依赖于学院的存在而存在的,因此教师、学生不宜作为学院的弱实体集进行建模。
      • 其次,一般可考虑将没有必要在系统的全局范围内唯一标识的实体集建模为弱实体集

4.5扩展E-R特征

类层次

  • 实体集中可能包含一些子集,该子集中的实体除了具有该实体集中所有实体所共享的属性外,可能还有一些自己特有的属性
    • 例如,可将学生实体集划分为本科生和研究生两类。对于本科生可定义自己的特有属性兴趣爱好,而研究生可定义自己的特有属性研究方向、导师。
  • E-R模型使用实体集的继承ISA联系(超类/子类联系) 来描述这种概念上的层次关系。
    在这里插入图片描述
  • ISA为“is a”的含义,表示高层实体和低层实体之间的“父类-子类”联系,称为“类层次”,也称为“特殊化”或“属性继承”(即子类会继承父类的所有属性)。
    在这里插入图片描述
  • 概括中的约束:
    成员资格、成员身份(相交、重叠?)、完备性(全部、部分的)

聚 合

  • 问题:如何表示联系集之间的联系呢?
  • 聚合是一种抽象,它将一个联系集 及其相关联的实体集 抽象为一个高层实体集(称为 联系实体集)对待,然后建立该高层实体集与其它实体集之间的联系集
  • 例如,考虑实体集学生和弱实体集开课班之间的选课联系集。学校教务部门需要安排教师录入学生考试成绩,并要求记录成绩的录入日期 。
    • 直观上,录入成绩应是选课联系集教师实体集之间的联系集,而不是学生开课班(弱)实体集与教师实体集之间的联系集
      在这里插入图片描述
    • 可将包含联系集选课及其相关联的(弱)实体集学生开课班聚合 (虚线框表示)参与到录入成绩联系集中(见图a)。
    • 或直接将联系实体集选课参与到录入成绩联系集中(见图b) 。
    • 内部包含菱形框 的带填充背景的矩形 表示联系实体集,菱形框中标示的是联系集的名称,它可以同时作为联系实体集的名称。

总结

  • 数据库设计过程
  • E-R模型
    • 实体、属性与实体集(复合、多值属性)
    • 联系、联系属性与联系集,联系集的超码
    • 二元联系的主码
      • 一对一:参与联系的某一方实体集的主码;
      • 一对多:参与联系的“多”方实体集的主码;
      • 多对多:参与联系的所有实体集的主码。
    • 二元联系的属性安置
  • 约束
    • 映射基数(1:1、1:n、m:1、m:n联系)
    • 依赖约束(依赖实体集、弱实体集)
    • 参与约束(全部参与、部分参与)
    • 多值联系(联系是多值的)
  • 弱实体集(标识实体集、标识联系集、码、部分码)
  • 类层次、聚合

在这里插入图片描述

数据库建模 下

4.6 E-R建模问题(重点、难点)
4.7 数据库概念设计实例——大学选课系统
4.8 逻辑设计——E-R模型转化为关系模型(重点)

  • 36
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值