E-R图和关系数据库设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章E-R图和关系数据库设计2.1实体-联系模型(E-R图)2.1.1基本概念•实体-联系模型(ER模型)为数据库建模提供了3个基本的语义概念:实体(Entity)、联系(Relationship)、属性(Attributes)。•实体是指客观存在的、对于建立数据库有意义的、能够被清晰地辨识的事物或概念,实体用它的若干属性来描述的。【例】实体“学生”,具有属性“学号”、“姓名”、“性别”、“年龄”。基本概念•所谓属性是指事物的某一方面的特征,属性可以是基本属性或导出属性。例如,学生的学号是一个简单属性;学生的家庭地址是一个复合属性,它由简单属性“城市”、“街道”、“门牌号”等组成。•属性可以是基本属性或导出属性。例如,一个人的生日是基本属性,年龄是导出属性,年龄可以根据生日和当前日期导出。•属性值的取值范围称为值域(Domain),例如人的年龄值域为0~250,图书馆的馆藏资料类型的值域为(书籍、杂志、会议录、内部资料)。基本概念•ER模型中的联系是指实体类型之间的联系。例如,教师教学生,“教”就是实体类型“教师”和“学生”之间的联系。•联系也可以有属性。例如,学生实体与课程实体之间的联系“选课”,可以有属性学号、课程号、成绩等。2.1.2ER图的组成•在ER图(E-RDiagram)中,基本的图形元素有3个:实体集合框,联系集合框和属性框。实体集合框用矩形框表示,实体之间的联系用菱形框表示,属性用椭圆形框(或圆形框)表示。ER图示例基数比约束•基数比约束(CardinalityRatioConstraint)是对参与联系的实体的一种约束。一个联系的基数(Cardinality)是指,对应于该联系的另一方的实体集的单个实体,本实体集的实体的数量。ER模型支持的实体之间的一对一、一对多、多对多的联系。基数比约束示例参与约束•参与约束是对实体参与度的约束。在一个给定的联系中的实体称为该联系的参与者。•所谓实体参与度是指实体参与联系的最小和最大的次数。参与的次数可以用一个整数偶对(min,max)来表示,其中min和max分别是实体参与联系的最小和最大的次数。ER图的联系类型(1)•ER图中的联系类型有:递归联系、二元联系和多元联系。•递归联系,即一个实体集合与其本身的联系。•二元联系是指两个实体集合之间的联系。ER图的联系类型(2)•多元联系是指三个以上实体集合之间的联系。如何建立ER模型•在建立ER模型中,首先确定实体集合,然后确定联系集合,最后给出实体和联系的属性。•下面的一些启发性规则可以帮助确定实体:–对于汇集和维护企业组织的数据有重要意义的、确定的、可以标识的对象可以指定为实体;–每个实质性的确定的对象,如人员、位置、事物等可指定为实体;–抽象概念如部门或通信干线等可指定为实体;–在由唯一的术语标识的环境中的非实质性的概念,也可指定为实体,例如信用货款备忘录中的信用度,可作为一个实体。ER图示例民航航班管理数据模型首先选择实体集及相应的属性。为表示方便,约定如下符号:•CHAR(n)长度为n的字符串•INT(n)n位数字的整数实体集和属性选择如下。•实体集1旅客PASSENGERS属性:姓名NAME:CHAR(30)住址ADDRESS:CHAR(30)电话PHONE:INT(10)NAME和ADDRESS组成本实体集的关键字。民航航班管理数据模型•实体集2航班FLIGHTS属性:航班号NUMBER:INT(3)出发地SOURCE:CHAR(3)目的地DEST:CHAR(3)开点DEP-TIME:INT(4)到点ARR-TIME:INT(4)•为简化起见,假设是直达航班。本实体集可用NUMBER作关键字,也可用SOURCE与DEP-TIME组成关键字。民航航班管理数据模型•实体集3航次DEPARTURES属性:日期DATE:INT(3)本实体集的每一个实体是在某日起飞的航次。•实体集4机型PLANES属性:制造厂MANUFACTURER:CHAR(10)型号MODEL-NO:CHAR(10)这两个属性组成实体集的关键字。•实体集5飞机AIRCRAFT属性:序号SERIAL-NO:INT(5)民航航班管理数据模型•实体集6职工PERSONNEL属性:职工号EMP-NO:INT(6)姓名NAME:CHAR(30)住址ADDRESS:CHAR(30)工资SALARY:INT(6)职工号EMP-NO是本实体集的关键字。•实体集7飞行员PILOTS实体集PILOTS无属性。民航航班管理数据模型实体集之间的联系集定义如下:(1)ISA(PILOTS,PERSONNEL)用于指明具体的飞行员个人,它是一对一联系。(2)BOOKED-ON(PASSENGERS,DEPARTURES)表示订票,它是多对多联系。(3)INSTANCE-OF(DEPARTURES,FLIGHTS)表示一次飞行航班,从DEPARTURES到FLIGHTS是多对一联系。民航航班管理数据模型(4)ASSIGNED-TO(PERSONNEL,DEPARTURES)表示每个航次的空中乘务员,它是多对多联系。(5)CAN-FLY(PILOTS,PLANES)表示能驾驶飞机的飞行员,是多对多联系。(6)TYPE(AIRCRAFT,PLANES)从AIRCRAFT到PLANES是多对一联系,表示每架飞机的机型。mnPASSENGERDEPARTURESADDRESSPHONENAMEBOOKED-ONFLIGHTSINSTANCE-OFDESTARR-TIMESOURCEPERSONNELPILOTSADDRESSSALARYNAMEIS-ACAN-FLYASSIGNED-TOPLANESTYPEAIRCRAFTEMP-NOMODEL-NOSERIAL-NODEP-TIMEMANUFACTURERnnnnk1111mDATE实体间的依赖•如果一个实体集合的存在与否是依赖于另一个实体集合的,那么称这两个实体集合之间存在依赖关系。【例】家属和职工、病房和医院•前者称为依赖实体集合,又叫作弱实体集合可用双矩形框表示弱实体集合(或用带圆角的矩形框表示)。•后者叫作主实体集合或强实体集合,用单个矩形框表示。•主实体集合与它的弱实体集合之间的联系称为弱联系集合或依赖联系。在表示联系的菱形框内加上字符E,可表示弱联系集合(或用双菱形框表示)。•用一个指向弱实体集合框的箭头表示依赖联系。【例】实体间的依赖2.2实体-联系模型转换为关系模型把一个E-R模型转化为关系模型,可遵守下列规则:转换规则1•规则1:每一个实体集转换为一个关系。实体集中的实体的属性成为该关系的属性。实体的标识符成为该关系的关键字。每个实体由该关系的一个元组表示。•例如实体集product转换成关系PRODUCT(product-number,product-name,cost-price)。转换规则2•规则2:每一个联系集转换成一个关系,该联系集自身所拥有的属性,加入到该关系中去,而该关系的主关键字由该联系集所联系的实体集的关键字组成。•例如联系集Warehouse-product-order转换成关系•WAREHOUSE-PRODUCT-ORDER(warehouse-no,product-no,order-no,quantity-order)转换规则3•规则3:如果一个联系集的两侧标明的基数比是1∶N(一对多联系),且联系无自身的属性,则在1侧的实体集的关键字应加入到另一侧的实体转换成的关系中,联系集本身可不必单独转换成关系。•例如下图实体集CUSTOMER的关键字应加入到对应于实体集ORDER的关系中去。经过转换后可得关系模式为:•CUSTOMER(cus-no,cus-name)•ORDER(order-no,order-date,cus-no)–其中,对于关系ORDER,属性cus-no是外来关键字。转换规则3•1∶1的联系也可以类似处理。如果1∶n的n一方的实体是部分参与联系,为了避免在转换后的关系中的外来关键字出现空值(NULL),可以分别把实体集和联系集按照规则1、2转换成关系。【转换示例】【例】一个简单的足球队数据模型。实体集选择如下:(1)球员PLAYERS属性:姓名NAME籍贯BPLACE生日BDATENAME为关键字。(2)位置POSITIONS属性:名称POSNAME人数POSNUMBERPOSNAME或POSNUMBER均可作关键字,一般用POSNAME。【转换示例】(3)球队TEAMS属性:球队名TEAM-NAME城市CITY年YEARTEAM-NAME和YEAR组成关键字。上述实体集之间的联系集有:(1)打球PLAYS(PLAYERS,POSITIONS)从PLAYERS到POSITIONS是多对多联系。(2)参赛SEASON(PLAYERS,TEAMS)从PLAYERS到TEAM是多对一联系。它有一个属性BA,表示比赛场次。【转换示例】由上述实体集和联系集构成的ER图如图所示,它所转换成的关系模型具有如下5个关系:•PLAYERS(NAME,BPLACE,BDATE)•TEAMS(TEAM-NAME,CITY,YEAR)•POSITIONS(POSNAME,POSNUMBER)•PLAYS(NAME,POSNAME)•SEASON(NAME,TEAM-NAME,YEAR,BA)2.3关系数据库设计理论基础概述•关系数据库设计的核心是关系模式的设计,即按照一定的原则,从数量众多而又相互关联的数据中,构造出一组既能较好地反映现实世界、又具有良好性能的关系模式。关系范例的描述•SCT(S#,C#,CN,GRADE,TNAME,BDATE,SALARY).•其中的属性依次代表学号、课程号、课程名、成绩、任课教师姓名、教师出生日期和工资。•规定:每个学生选修每门课只有一个成绩;每门课只有唯一的课程号,并且由一个教师担任。【示例】问题•SCT(学号,课程号,课程名,成绩,任课教师姓名,教师出生日期和工资)•通过分析不难发现SCT存在如下问题。1.数据冗余度问题(如教师姓名)2.修改问题(如修改教师工资)3.插入问题(如未开课的教师信息)4.删除问题(如教师调离学校)【示例】改进如果把SCT分为如下三关系模式:•选课关系:SC(学号,课程号,成绩)•课程关系:C(课程号,课程名,教师姓名)•教师关系:T(教师姓名,教师出生日期,工资)则上述问题便都得到解决。函数依赖(1)•设R(U)是属性集U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一个关系。如果对于r中的任意两个元组u、v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y或称Y函数依赖于X,记为X→Y。其中X称为决定因素(Determinant)。•即对于关系模式R中的属性子集X的每一个值,任何时候都只有一个确定的Y值与之对应。函数依赖示意图S#GRADECNBDATEC#TNAMESALARY•但是S#和C#、S#和TNAME间不存在函数依赖关系。函数依赖(2)•在R(U)中,如果X→Y,并且对于X的任何真子集X’都有X’Y,则称Y完全函数依赖于X,记作(简记为X→Y)。【例】C#→CN•如果X→Y,且X中存在一个真子集X’,使得X’→Y成立,则称Y部分函数依赖于X,记作。【例】(S#,C#)→CNYXFYXp根据联系确定函数依赖关系•如果X和Y之间的联系是1:1的,则存在函数依赖X→Y和Y→X。【如】C#和CN•如果X和Y之间的联系是n:1的,则它们之间只存在函数依赖X→Y。【如】C#→TNAME•如果X和Y之间的联系是m:n的,则它们之间不存在函数依赖。【如】C#和S#关键字•设R(U)为一关系模式,F为R的函数依赖集,X为属性集U的子集,如果满足:(1)X→U∈F+;(2)不存在YX,使得Y→U∈F+;则称X是R的关键字。•分析–条件(1)要求关键字能唯一地标识元组。–条件(2)保证关键字是最小的集合,不存在多余的属性。关键字分类•候选关键字:任何一个能函数决定全部

1 / 122
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功