第4章数据库建模(实体-联系模型)数据库系统原理与设计目录4.6数据库设计过程4.1E-R模型基本概念及表示4.2约束4.3数据库概念设计实例——大学选课系统4.7E-R建模问题4.8逻辑设计——E-R模型转化为关系模型数据库设计过程概述数据库设计即是数据建模过程。数据模型就是对现实世界的模拟。通过数据模型可以对现实世界的数据特征进行抽象根据数据抽象的不同级别,将数据模型划分为3类:概念模型:概念层次的数据模型,也称为信息模型逻辑模型:用于描述数据库数据的整体逻辑结构物理模型:用来描述数据的物理存储结构和存取方法概念模型信息世界图1-6现实世界中客观对象的抽象过程现实世界认识抽象DBMS支持的逻辑模型DBMS支持的物理模型逻辑机器世界物理机器世界数据库设计过程概述需求分析物理设计概念设计逻辑设计模式求精应用与安全设计需求分析整个数据库设计过程的基础,也是最困难和耗时的一步。目标:了解和分析系统将要提供的功能及未来数据库用户的数据需求,包括:功能需求存储的数据……数据使用业务规则数据联系及约束性能需求方法:数据库设计者同应用领域的专家和用户进行深入沟通和交流。结果:形成用户的需求规格说明书。需求分析概念设计概念设计是根据需求分析中得到的信息,运用适当的工具将这些需求转化为数据库的概念模型。E-R模型是PeterChen于1976年提出的一种语义模型。该模型是基于对现实世界的这样一种认识:世界由一组称作实体的基本对象及这些对象间的联系组成。由于它能将现实世界中概念的含义和相互关联映射到数据库概念模型,因此许多数据库设计工具都利用了E-R模型的概念。本章基于E-R模型进行数据库概念设计,其目的是通过实体、联系、属性等概念和工具精确地描述系统的数据需求、数据联系及约束规则。结果:E-R图(实体、联系及属性)概念设计逻辑设计本步骤是将数据库的概念设计转化为所选择的数据库管理系统支持的逻辑数据模型,即数据库模式。常见逻辑模型层次,网状,关系数据库(本书重点讨论)面向对象XML物理设计考虑数据库要支持的负载和应用需求,为逻辑数据库选取一个最适合现实应用的物理结构,包括:数据库文件组织格式内部存储结构建立索引表的聚集……模式求精模式求精的任务是分析并发现逻辑模式存在的问题,并进行改进和优化。需求分析与概念设计是根据主观认识进行的,但模式求精则是基于关系理论对相关逻辑模式进行优化。应用与安全设计一个数据库系统必须指出哪些用户可以访问数据库?他们通过哪些存储过程访问数据库?每个用户在每个过程中扮演什么样的角色?对于每个角色,他们能够存取数据库的哪些部分和不能存取哪些部分?完整的数据库设计是不可能一蹴而就的,它往往是上述6个步骤的不断反复的过程!需求分析物理设计概念设计逻辑设计模式求精应用与安全设计本章内容第五章第七章第九章目录4.6数据库设计过程4.1E-R模型基本概念及表示4.2约束4.3数据库概念设计实例——大学选课系统4.7E-R建模问题4.8逻辑设计——E-R模型转化为关系模型实体与实体集实体是客观世界中可区别于其他事物的“事物”或“对象”。实体特征:独立存在。可区别于其它实体。实体可以是有形的、实在的事物,如一名教师、一本书等;也可以是抽象的、概念上的事物,如一门课程、一个专业,以及一次订货、借书、选课、存款或取款等业务产生的单据。但是,二者都应是组织或机构“感兴趣”的事物。实体集是具有相同类型及相同性质(或属性)的实体组成的集合属性属性是实体集中每个实体都具有的特征描述。一实体集中所有实体都具有相同的属性。例如,学生实体集中的每个实体都具有:学号、姓名、性别、出生日期、年龄、所学专业、电话号码、家庭住址、所在班级等属性。对每个属性来说,一个实体都拥有自己的属性值。每个属性所允许的取值范围或集合称为该属性的域。图4-1学生实体集的属性域及学生李小勇的属性值属性名属性类别域及约束实例学号主码char(10),10位数字组成,其中第1位数字代表学生类别,如:1-本科生,2-硕士研究生,3-博士研究生,4-独立学院本科生,5-专科生;接下来4位数字代表入学年份;最后5位数字为序号。不允许取空值1201100258姓名varchar(20),不允许取空值李小勇性别char(2),取值范围:{′男′,′女′}男出生日期datetime,取值范围:1900-01-01~当前1992-09-09年龄派生属性smallint,取值范围:10~8019所学专业varchar(30)计算机科学与技术电话号码多值属性varchar(13),每个电话号码由数字字符加连字符‘-’组成027-87009999家庭地址复合属性varchar(60)湖北省武汉市中山路56号所在班级char(8),前4位数字代表年级20110803属性分类简单属性和复合属性简单属性是指不能再分为更小部分的属性。复合属性是指可以进一步划分为更小部分的属性。学生实体集的家庭住址可以进一步设计成包括省份、城市、街道等成分的属性。属性分类单值属性和多值属性如果某属性对一个特定实体任何时候都只能有单独的一个值,则称该属性为单值属性,否则为多值属性。学号为单值属性。由于一个学生可能有0个、1个或多个电话号码(如实验室电话、宿舍电话、移动电话等),因此学生实体集的电话号码为多值属性。属性分类派生属性派生属性的值可以从其它相关属性或实体(集)派生出来。一个学生的年龄属性的值,可以由该学生的出生日期属性的值和当前日期计算得到。学生实体集的已修学分(表示该学生所选修课程的学分合计)属性的值,它可以通过统计该学生所选修所有课程实体的学分之和来获得。属性分类空值(NULL)当实体在某个属性上没有值时可使用NULL值,表示属性的值是未知的或不存在。不知道某学生的专业(所学专业的值未知)或该学生还没有分配专业(所学专业的值不存在),则该学生所学专业的值为NULL。某学生的出生日期为NULL,则认为该值是缺失的(即值未知)。实体集及属性的E-R图表示在E-R图中,实体集和属性分别表示如下:实体集——矩阵属性——椭圆多值属性——双椭圆派生属性——虚线椭圆属性与实体之间——连线图4-2学生实体集E-R图表示图4-3课程实体集E-R图表示家庭住址省份城市街道学生电话号码学号姓名性别出生日期年龄所在班级所学专业课程课程名称课程号学分课时数先修课程号多值属性的变换将多值属性转换为多个单值属性进行建模。例如,可将多值属性电话号码建模为移动电话、宿舍电话、实验室电话、家庭电话4个单值属性,如图4-4所示。学生家庭住址省份城市街道移动电话宿舍电话实验室电话家庭电话学号姓名性别出生日期年龄所在班级所学专业图4-4学生实体集中的多值属性转换为多个单值属性表示联系与联系集联系(relationship)是指多个实体间的相互关联,例如学生李小勇选修了数据库系统原理课程。联系集是同类联系的集合。形式化地说,联系集是n(n≥2)个实体集上的数学关系。E-R图用菱形表示联系(集)。联系可具有自身的描述属性。学生课程选课成绩多联系与联系中的实体角色多联系:在相同的实体集上可能存在多个不同的联系集。如教师与学生实体集之间同时存在授课、指导联系集。角色:实体在联系中的作用。如课程实体集中的2门课程实体C1、C2之间存在先修要求联系,其中C1、C2扮演不同的角色,C1代表主课程,C2代表先修课程,分别表示实体所扮演的角色。教师学生授课指导课程先修要求主课程先修课程目录4.6数据库设计过程4.1E-R模型基本概念及表示4.2约束4.3数据库概念设计实例——大学选课系统4.7E-R建模问题4.8逻辑设计——E-R模型转化为关系模型约束E-R模型的约束主要有:映射约束码约束依赖约束(不作要求)参与约束(不作要求)映射约束(实体联系)映射基数实体集中的一个实体通过一个联系集能同时与另一个实体集相联系的实体数目。在二元联系中,共有4种映射基数:1:1(一对一)1:m(一对多)m:1(多对一)m:n(多对多)一对一联系(1:1)实体集A中的每一个实体,若实体集B中至多只有一个实体与之联系,反之亦然,则称实体集A与B是一对一的联系,记作1:1。A1A2A4A3B1B2B4B3AB一对多联系(1:n)实体集A中一个实体可以同B中任意数目(可以为0)的实体相联系,而B中一个实体至多(允许不)同A中一个实体相联系。多对多联系(m:n)实体集A中的每一个实体,若实体集B中有n(n=0)个实体与之联系,反之,实体集B中的每一个实体,实体集A中有m(m=0)个实体与之联系,则称实体集A与B是多对多联系,记作n:m。A1A2A4A3B1B2B4B3ABA6A5B6B5例如:篮球比赛中球队与场上队长之间具有一对一的联系;队长与队员之间具有一对多的联系;队员与裁判之间为多对多的联系。在E-R图中,为了反映联系集的映射基数,采用“”表示指向参与联系集中的“一”方实体集,线段“——”表示参与联系集中的“多”方实体集。映射基数的表示销货单开发票发票(a)一对一联系集开发票班级包含学生(b)一对多联系集包含课程归属学院(c)多对一联系集归属学院聘用教师聘用日期码约束与联系集的属性安置实体集的码超码(superkey)若一超码的任意真子集都不能成为超码,则称该最小超码为候选码(candidatekey)。给定一组属性集,可能存在多个候选码。假设学生实体集中不存在同名的学生,则学号和姓名都可以用来唯一区分学生,因此它们都可以作为学生实体集的候选码。学号和姓名的组合是候选码吗?码约束与联系集的属性安置候选码和超码是实体集客观存在的特性,它们表示实体集中任意两个实体不允许在码属性上有相同的值。主码是被数据库设计者主观选中、用来区分同一实体集中不同实体的候选码。码约束与联系集的属性安置当一实体集存在多个候选码时,主码选择原则:选择属性长度最短的候选码;选择包含单个属性的码,而不是复合候选码;选择在数据库系统生命周期内属性值最少变化的候选码;选择在数据库系统生命周期内更可能包含唯一值的候选码。码约束与联系集的属性安置每一个联系集,也要求必须存在候选码,并选择其中的一个候选码作为主码,用于唯一标识该联系集中的一个联系。联系集的码假设R是一个涉及实体集E1,E2,…,En的联系集,PK(Ei)代表构成实体集Ei的主码属性的集合,而(e1,e2,e3,…,en)是R的一个联系,那么PK(E1)PK(E2)…PK(En)构成联系集的一个超码。码约束与联系集的属性安置二元联系集的主码选择,依赖于联系集的映射基数一对一:主码可以使用参与联系集中的任何一方实体集的主码;一对多(多对一):主码由“多”的一方实体集的主码组成;多对多:主码由参与联系集中所有实体集的主码组成。码约束与联系集的属性安置联系集的属性安置一对一联系集的属性:可安置于任一边的实体集上;一对多联系集的属性:可安置于联系集上,也可安置在多的那一边的实体集上;多对多联系集的属性:它是描述相关联实体集间的交互性语义,因此,联系属性只能安置于联系集上,不能放到相关联的实体集上去。目录4.6数据库设计过程4.1E-R模型基本概念及表示4.2约束4.3数据库概念设计实例——大学选课系统4.7E-R建模问题4.8逻辑设计——E-R模型转化为关系模型E-R建模的基本原则忠实性设计应忠实于应用需求,这是首要的也是最重要的原则。即实体集、属性、联系集都应当反映现实世界及根据所了解的现实世界去建模。例如,教师与开课班之间的联系集任教,是一对多还是多对多的联系集?如果规定一个开课班可能安排多名教师共同任教,则任教就是多对多联系集,联系属性为任教角色(如“主讲”、“指导实验”、“辅导”等)。教师任教教师任教(a)一对多的任教联系集(b)多对多的任教联系集任教角色开课班开课班E-R建模的基本原则忠实性设计应忠实于应