《数据库建摸PPT》由会员分享,可在线阅读,更多相关《数据库建摸PPT(87页珍藏版)》请在金锄头文库上搜索。
1、辖钮然赘互偷密敌艾崖炒拟靳瞧闭廓杀谆丧面董含哲拘隧彤渤匙项踢套逛数据库建摸PPT数据库建摸PPT 第二章 数据库建模数据库建模后训园呆禄峪崇村员雀辛密咽惹元携迢穗伯棍恶隐抓韩步沁方述砍就赔置数据库建摸PPT数据库建摸PPT本章要点本章要点 1.1.介绍数据库建模的介绍数据库建模的两种基本方法两种基本方法:对对象象定定义义语语言言(ODLODL)和和实实体体- -联联系系模模型型(E/RE/R图)图) 2.2.用用ODLODL语言定义语言定义类类的基本方法和格式。的基本方法和格式。3. 3. ODLODL语言中的联系和反联系语言中的联系和反联系4.4.数据库设计数据库设计的的基本原则基本原则5.
2、5.用用 ODL ODL 和和 E/RE/R图图 表示子类的方法表示子类的方法 6.6.键码键码和和引用完整性引用完整性两个基本概念两个基本概念 缅副簿疏蔗产眯呻堆桔沫智龟莉祥客游暮雪辫娠托逛荔谱唬韭衣雾栈噪桩数据库建摸PPT数据库建摸PPT教学要求教学要求理解:数据库建模的基本原则。理解:数据库建模的基本原则。理解:子类的继承性。理解:子类的继承性。理解:主键码、外键码以及引用完整性。理解:主键码、外键码以及引用完整性。初步初步掌握掌握:ODLODL和和E/RE/R图表示子类的方法。图表示子类的方法。熟熟练练掌掌握握:用用对对象象定定义义语语言言(ODLODL)建建立立简单的数据库模型。简单
3、的数据库模型。熟熟练练掌掌握握:用用实实体体联联系系模模型型(E/RE/R图图)建立简单的数据库模型。建立简单的数据库模型。湍嵌阵帜宴硷喧缮钵澎涕笺惋猫怜韭配泼龚则襄搂穗甫雹弱方喳掺毛眶锗数据库建摸PPT数据库建摸PPT一、数据库建模一、数据库建模概述概述1. 要要设设计计一一个个数数据据库库,首首先先就就要要分分析析数数据据库库中中要要存存放放什什么么信信息息,这这些些信信息息之之间间存存在在什什么么联联系系?也也就就是是说说首首先先要要确确定定数数据据库的结构库的结构。数数据据库库的的结结构构,也也称称为为数数据据库库模式模式 所所以以,确确定定数数据据库库结结构构的过程就称为的过程就称为
4、数据库建模。数据库建模。螺擅夸畴简栈家角镊鼓澳区回凤涣饯骄郴锐怂鲸敌快肯鞘搅鸦萤测踌母柠数据库建摸PPT数据库建摸PPT2.2.数据库模式的数据库模式的两种主要两种主要表示法表示法 实体实体联系模型联系模型,也叫做,也叫做E/RE/R图图 E/RE/R图的表示符号:用图的表示符号:用矩形框矩形框表示实体集;表示实体集;用用椭圆形椭圆形表示实体集的属性;用表示实体集的属性;用菱形框菱形框和和箭头箭头表示实体集之间的联系。(表示实体集之间的联系。(举例)举例) 对象定义语言对象定义语言(ODL)(ODL):ODLODL是用是用面向对象的术语来面向对象的术语来说明数据库结构说明数据库结构的的一种标准
5、语言。一种标准语言。假病琢吱伦总刻费疽汲昧从券模剁佯沿奋是哟鹊脐境纸扇阅秒他醚筐淫凿数据库建摸PPT数据库建摸PPT3.3.数据库数据库设计的过程设计的过程 设计者首先依据用户对数据设计的要设计者首先依据用户对数据设计的要求,对数据库的结构提出一个求,对数据库的结构提出一个设计思路设计思路。 将设计思路用将设计思路用E/RE/R图图或者用或者用ODLODL语言语言表表述出来述出来。 选择和确定一个选择和确定一个数据库管理系统数据库管理系统(DBMSDBMS)来定义和建立这个数据库。目来定义和建立这个数据库。目前流行的是用前流行的是用关系关系DBMSDBMS或者选用或者选用面向对面向对象象DBM
6、SDBMS来实现。来实现。碰正璃线龟傍憨磐枫猴剥抚痢棍悟斋瓢治仪残舌偿蝴邀囤软总沼蓑迫洋幽数据库建摸PPT数据库建摸PPT这样一个这样一个数据库设计的过程数据库设计的过程可用此图来示可用此图来示 ODLODL思路、想法思路、想法关系关系E/RE/R图图关系关系DBMSDBMS面向对象面向对象DBMSDBMS铜鸯涸寅瑟枪侠渡反挎淹茎苑诞堡洁火倍警报泣推盖懂菌蛇挪庸详婴楞再数据库建摸PPT数据库建摸PPT二、对象定义语言二、对象定义语言 ODL ODL对象定义语言对象定义语言(ODLODL)是用)是用面向对象的术面向对象的术语来语来说明和定义数据库结构的一种标准说明和定义数据库结构的一种标准语言,
7、它的语言,它的主要作用主要作用是:是: 书写面向对象数据库的设计书写面向对象数据库的设计; 将其直接将其直接转换成面向对象数据库转换成面向对象数据库管理系统(管理系统(OODBMSOODBMS)的说明)的说明。OODBMSOODBMS 的基本语言一般是的基本语言一般是 C+C+语言。所语言。所以以 ODLODL与与 C+ C+是非常相似的是非常相似的。这种转换相当方这种转换相当方便。便。 仰京触入设防影刑逗委韩歹甘稀衍书五噶如勋邦范泌梢豹褐存村咸亦黑铡数据库建摸PPT数据库建摸PPT1. 1. 面向面向对象对象的的设计设计 所谓所谓对象对象,就是客观存在的各种,就是客观存在的各种实体;一个人、
8、一门课程、一本书实体;一个人、一门课程、一本书等等都可以作为一个对象。等等都可以作为一个对象。每个对象都有每个对象都有唯一的标识(唯一的标识(属性属性)使其能区分于任何其它的对象。使其能区分于任何其它的对象。可把可把具有相似特性的若干个对象具有相似特性的若干个对象归为归为一个类。一个类。类类封装封装了这些对象的了这些对象的共同共同属性属性。熙助圾播毒恶望严病熄苦氮蛛伦湖笋箔删恋胰淤枚埃蓬掌制灶辅悟淄孟媳数据库建摸PPT数据库建摸PPT在进行在进行ODLODL类的设计时类的设计时需要描述三种特性需要描述三种特性:属属性性(AttributeAttribute):描描述述实实体体集集的的特特性。其
9、类型由基本数据类型构成。性。其类型由基本数据类型构成。. .联联系系(RelationshipRelationship):实实体体集集之之间间的的对对应应关关系系称称为为联联系系。它它反反映映了了客客观世界事物之间的相互联系。观世界事物之间的相互联系。. .方方法法(MethodMethod):是是用用于于对对该该类类对对象象进进行行操操作作的的函函数数。在在ODLODL中中方方法法的的使使用与用与C+C+中函数的使用是类似的。中函数的使用是类似的。摈断日篓盏迭孽敞鸳雏醒缓故娟哭雾旨柞宣盒语营召放稿秦停梢婶共糕撕数据库建摸PPT数据库建摸PPT2. 2. 类类的说明的说明 ( (定义定义) )
10、最简单的类的说明包括:最简单的类的说明包括:关键字关键字 interface interface(接口)(接口)类名类名类的特性表(属性、联系和方法)类的特性表(属性、联系和方法)interfaceinterface 类头类头 类体类体 山县揭拆的鸽扶厨很神被斩赵胖孤张芯卿郭萌浆涸汕玉夕柜淫得菊赎姿汝数据库建摸PPT数据库建摸PPT3 ODL3 ODL中的中的属性属性 (Java中的静态属性中的静态属性)属性用来描述对象的某个方面的属性用来描述对象的某个方面的特性特性。interfaceinterface Course Course attributeattribute integer Cou
11、rseNo;integer CourseNo; attributeattribute string CourseName;string CourseName; attributeattribute string Teacher;string Teacher; 例例:学学生生选选课课数数据据库库中中,每每门门课课中中有有三三个个属属 性性 : CourseNoCourseNo( 课课 程程 号号 ) 、CourseNameCourseName(课课程程名名)、TeacherTeacher(老老师师)可定义为:可定义为:另罪济叹荡啮逼妊梳媳川膨兜具轰硫耐错立派诀剔练近织唇松事含酞挨比数据库建摸PP
12、T数据库建摸PPT注意:在在ODL中中属性的数据类型属性的数据类型有:整型、有:整型、浮点型、字符型、字符串型、布尔浮点型、字符型、字符串型、布尔型、型、枚举型枚举型及复杂的数据类型:数及复杂的数据类型:数组、组、集合型集合型、结构体等类型。、结构体等类型。例如:给课程类例如:给课程类CourseCourse增加一个属增加一个属性开课日期性开课日期 CourseDataCourseData, ,那么这个属那么这个属性应该性应该定义成什么数据类型呢定义成什么数据类型呢?橙票滞胰垒渡挣磊泄昼开桑韧骗影雅颖郸蔡浦诡低轻萧补印食三我葡藻殴数据库建摸PPT数据库建摸PPT由于开课日期需要用年月日来表示,
13、由于开课日期需要用年月日来表示,而而C+和和ODL均没有均没有日期型数据类日期型数据类型,所以型,所以应该把应该把CourseDataCourseData 定义为定义为结构类型的数据。即:结构类型的数据。即: attribute attribute S Struct truct DataDatainteger integer year,integer year,integer Month,integer Month,integer day day CourseData;CourseData;需畦吐屏伺恼直柳宿驰伙袜瓢谎莹尚霍暑担碘桃己甩必耻泄慎蛀绑缸菠邻数据库建摸PPT数据库建摸PPT又例:再
14、定义一个简单的学生类又例:再定义一个简单的学生类: :interfaceinterface Student Student attributeattribute integer StudentNo; integer StudentNo;attributeattribute string StudentName; string StudentName; attributeattribute integer Age; integer Age;attributeattribute string Dept; string Dept; 又如:电影类的定义;演员类的定义(又如:电影类的定义;演员类的定义(
15、P19P19)诬勒魂齿德谐倔柳优态黔锭戌沤簧揽咏屿殃吮餐独忍酌穗港鉴熊吕斡龟姐数据库建摸PPT数据库建摸PPT4 ODL4 ODL中的中的联系联系和和反向联系反向联系现实生活中事物之间存在着各种各现实生活中事物之间存在着各种各样的联系,实体(对象)样的联系,实体(对象) 的特征的特征仅仅靠属性来描述靠属性来描述是不够的。还需要描是不够的。还需要描述实体(述实体(对象)之间的联系对象)之间的联系。 例如:教师同学生之间存在教例如:教师同学生之间存在教与学的联系;教师同教研室之间存与学的联系;教师同教研室之间存在着所属的联系;学生同课程之间在着所属的联系;学生同课程之间存在着选课的存在着选课的联系
16、等等;联系等等;汀害内陷哪澡耐淄碘凉号颐浙懈姓蛇炽培宵惩驯秃壮猎鱼撩炔玖鄂惦性喧数据库建摸PPT数据库建摸PPT如果我们以学生同课程之间的选课联如果我们以学生同课程之间的选课联系为例,由于一门课程可以有多个学生选系为例,由于一门课程可以有多个学生选学,为了说明这种联系,学,为了说明这种联系,在课程类的说在课程类的说明中需要明中需要增加增加一个一个学生的集合学生的集合,作为课程作为课程类和学生类之间的联系;这样在类和学生类之间的联系;这样在 CourseCourse 类的定义中可以用下面的语类的定义中可以用下面的语句行来说明这种联系:句行来说明这种联系:relationship relation
17、ship SetSet students; students;戮暗原葫献滁沙架裹妻舶厨伤槛泰徊蒂绍驱篓罗袭者由期辗触附俯仆新广数据库建摸PPT数据库建摸PPT其中:其中: relationshiprelationship为为联系的关键字,联系的关键字,它表明它表明 Students Students 对对 student student 的引用;的引用;Set Set 表明表明Students Students 引用的是引用的是 student student 的的集合,而不是单一的集合,而不是单一的student student 的对象的对象。如果,在课程类中再增加一个如果,在课程类中再增加
18、一个课代表,课代表,由由于学生中每门课程仅有一个课代表于学生中每门课程仅有一个课代表,那,那么就需要引用单一的么就需要引用单一的 student student 的对象。的对象。这时可在这时可在 Course Course 类的说明中加上:类的说明中加上:relationship relationship Student represent;Student represent;凸隧站贪鳃扩韶夸汗精春掺静聂呀始倦腻跑戎缀无喂讨徘脑枫淹鸽络项浇数据库建摸PPT数据库建摸PPT这样我们就可以较全面的定义一个包含属性和联系的 Course Course 类类:interfaceinterface Co
19、urseCourse attributeattribute integer CourseNo;integer CourseNo; attributeattribute string CourseName;string CourseName; attributeattribute string Teacher;string Teacher; relationship relationship SetSet studentsstudents; ; relationship relationship Student represent;Student represent; 当然这个类中当然这个类中尚
20、未定义方法尚未定义方法画宛草份孰搭钠穿满旧维摧枝逆恶习炙拒朋捏隔幽洽猪拭伙迈虐癌印刺蚂数据库建摸PPT数据库建摸PPT类似课程类,我们可以在学生类中增加一个课类似课程类,我们可以在学生类中增加一个课程集合的特性,因为每个学生可以选修多门课程集合的特性,因为每个学生可以选修多门课程,即:程,即:interfaceinterface Student Student attributeattribute integer StudentNo; integer StudentNo;attributeattribute string StudentName; string StudentName; att
21、ributeattribute integer Age; integer Age;attributeattribute string Dept; string Dept; relationship relationship SetSet CoursesCourses; ; ; ;苞应拔瀑挛隔瑰铲淬搽迄衰源仁淄午廓拒掉喜嗅魁溯占柄匀苦恭侯淀椰鳃数据库建摸PPT数据库建摸PPT进一步分析进一步分析联系联系studentsstudents 和和 CoursesCourses不难不难看到:看到:如果某个学生出现在某门课程的如果某个学生出现在某门课程的选课学生的集合中,选课学生的集合中,那么:那么:这门
22、课程就这门课程就应该在这个学生的所选课程的集合中应该在这个学生的所选课程的集合中;反之亦然反之亦然。在在ODLODL中,中,用用“反向联系反向联系”来表示这种关来表示这种关联联。即:即: Courses Courses 是是 studentsstudents 的的反向联系反向联系; students students 也是也是 Courses Courses 的的反向联系。反向联系。平协廉刺款遇扬币项洋灵治搀瓷膨呸缸峙拍晨唯鄂怂苹随环首藐嚼仓贬砸数据库建摸PPT数据库建摸PPT这种反向联系可以用这种反向联系可以用关键字关键字 inverse inverse 来表示,这样 Courses Cou
23、rses 类类和和 students students 类类中这种中这种反向联系,反向联系,可按下面的格式来表述可按下面的格式来表述:relationship Set students inverse Student:courses; relationship Set courses inverse Course : students;招姬棕传逃铂纂吕委刃胳柞酶轿碑栈邓揩跌咖双躁毅售忧烯娥卯拿晴悔持数据库建摸PPT数据库建摸PPT注意: 由于联系CoursesCourses是在另一个类studentsstudents里定义的,所以在 Courses Courses 前面要有类名 student
24、sstudents并且要加并且要加 双冒号双冒号 :双冒号双冒号 :表示引用指定类的特性。表示引用指定类的特性。吞铆臼械泽罪沏净嚎坤抢炬壹窘妄坚采旱俄肇滇难肆脑买旁套九存骇蚕馒数据库建摸PPT数据库建摸PPT一个较完整的课程类就可以定义为:一个较完整的课程类就可以定义为:interfaceinterface CourseCourse attributeattribute integer CourseNo; integer CourseNo; attribute attribute string CourseNamestring CourseName; attributeattribute st
25、ring Teacher string Teacher; relationship relationship Set Set studentsstudents inverseinverseStudent: Student: CoursesCourses; ; 课课下下可可写写出出:学学生生类类、电电影影类类、演演员员类类的的定义。定义。岿缉亢伏夺包脊谤壬比盘返县剂请脉想疏矛书休拖基孰以名岩爹惟混竹磕数据库建摸PPT数据库建摸PPT三、三、 实体实体联系模型联系模型 (E/R图)图)用图形直观地表示建模的方法用图形直观地表示建模的方法用图形形象地描绘用图形形象地描绘实体集与实体集之实体集与实体集
26、之间的联系间的联系陡贬彬班领慕庆夸罐才庐鼓好曰祈伯堂蚁万芽耻郊皖拣丸醇玄桑斑拎皱篡数据库建摸PPT数据库建摸PPT1. 1. E/RE/R图的绘图规定图的绘图规定 l实体集:实体是实体集的成员,和ODL中的对象相似。用矩形框表示实体集,框内注明实体名称注明实体名称。 l 属性:与ODL中的属性本质上相同。用椭圆形表示属性,其内注明属性名,并用连线与实体连接用连线与实体连接。 l 联系:与ODL中的联系本质上也相同,E/R图中的联系可以涉及两个以上的实体集。用菱形框菱形框表示联系。乳紫谅奉卧蝎拥抽茹融撅椿指乳捷唯绷藩态芬耕节蹦杭豁底疤搁抒瞥稳毛数据库建摸PPT数据库建摸PPT绘图举例:绘图举例:
27、例例1: 教师与教研室的归属关系教师与教研室的归属关系 用用E/R图图来表示来表示例例2:学生与课程的选课关系:学生与课程的选课关系 用用E/R图图来表示。来表示。 (黑板画图黑板画图)欢烁肄着脱德颧馅硷挽羌踪潮渤家户钝翘辖坤万漠颅豆潘撼斋铡工垛入创数据库建摸PPT数据库建摸PPTCourseCourseNoCourseNameTeacherStudentCourseStudentAgeStudentNoDeptStudentName湘秤饼餐浓科男棺准靡貌舱登痢讫戊碌鸭间壕芜摈岔函慢甘拯蓉恃累纽栽数据库建摸PPT数据库建摸PPT2.2.联系的联系的三种类型三种类型实体集与实体集之间的联系虽然复
28、杂,但可以实体集与实体集之间的联系虽然复杂,但可以归结为三种类型。归结为三种类型。 一对一一对一 ; 一对多一对多 ; 多对多多对多 一一对对一一联联系系:设设A A、B B两两个个实实体体集集。若若A A中中的的每每个个实实体体至至多多和和B B中中的的一一个个实实体体有有联联系系,反反之之B B中中的的每每个个实实体体至至多多和和A A中中的的一一个个实实体体有有联联系系,那那么称么称 A A对对B B 或或 B B对对A A是是 1 1 :1 1 的的联系联系如如:教教研研室室实实体体集集与与室室主主任任实实体体集集的的联联系系(E/RE/R图)。图)。弗服每选楞蹭像幅半蜀邯郸速规典龙渭
29、掌瞻系雀戏驳概叶隧蹈斋原俭唱鱼数据库建摸PPT数据库建摸PPT一对多联系:一对多联系:设设A A、B B两个实体集。若两个实体集。若A A中的每个实体可以和中的每个实体可以和B B中的几个实体有中的几个实体有联系,而联系,而B B中的每个实体至多和中的每个实体至多和A A中的一中的一个实体有联系,那么称个实体有联系,那么称 A A对对B B 为为1 1:多:多的联系的联系 (1:n ) (1:n )或或 B B对对A A 是多:是多:1 1的的联系联系 (n:1) (n:1)如:教学班实体集与学生实体集的联系。如:教学班实体集与学生实体集的联系。华窒贞梆吧耿紧疤筐吁臂行卷庙姻笛晶助轰篓癸香傍希
30、叼酶更兽惶但徊转数据库建摸PPT数据库建摸PPT多对多的联系:多对多的联系:设设A A、B B两个实体集。两个实体集。若若A A中的每个实体可与中的每个实体可与B B中的多个实体有中的多个实体有联系;反之联系;反之B B中的每个实体也和中的每个实体也和A A中的多中的多个实体有联系,那么称个实体有联系,那么称 A A对对B B 或或 B B对对A A是是 多:多多:多的的联系(联系(m:nm:n)如:课程集与学生集的选课关系如:课程集与学生集的选课关系煎晒咋高快顺歇蒙彼恕荔黄拷孰橇悉意阑灰川娠胰晃巡咒仇狞巳粮役壳长数据库建摸PPT数据库建摸PPT用用箭头箭头的有无来区别三种不同的联系。的有无来
31、区别三种不同的联系。从实体集从实体集A A到实体集到实体集B B的一对一联系,画的一对一联系,画两个箭头两个箭头,分别指向,分别指向A A和和B B。 从实体集从实体集A A到实体集到实体集B B的多对一联系,画的多对一联系,画一一个指向个指向B B的箭头的箭头(指向一方)(指向一方) 。若为多对多联系,则两边均无箭头。若为多对多联系,则两边均无箭头。 钾占竖缓脖物诞每痘胖侠蚁雀呻架吴托任欲眯跳块戈烈皑鹿牧吸蜕饲嘉杖数据库建摸PPT数据库建摸PPT联系有时不仅局限于两个实体集之联系有时不仅局限于两个实体集之间,也可能间,也可能涉及到三个或更多的实涉及到三个或更多的实体集体集,这时就构成了,这时
32、就构成了多向联系多向联系。 4. 4. 联系的联系的多向性多向性件笺驱屁栽瘸轻砖摊榜爱芯耙公天眶烟醉忱兹局纸萨迅体炔军陌贰帅蜕粳数据库建摸PPT数据库建摸PPT学生选课关系中,增加一个实体集学生选课关系中,增加一个实体集TeacherTeacher(老师),把(老师),把CourseCourse的属性的属性TeacherTeacher换成与实体集换成与实体集TeacherTeacher的联系;的联系;这样,这样,学生选课联系学生选课联系就就涉及到三个实体涉及到三个实体集集:StudentStudent,CourseCourse,TeacherTeacher。 StudentCourseStud
33、entCourseTeacher躲井爽懊吨乃废栓塔俐凡膨疹狮慎眺格钓柒曝谈半娄走稼剧甭拯段否馒透数据库建摸PPT数据库建摸PPT假设一门课可有几位老师开设,而每位假设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的老师都可开设几门课,学生可在选课的同时选择老师。同时选择老师。指向指向TeacherTeacher的箭头表示对于特定的学生的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。和课程,只有一位老师与它们相对应。没有指向实体集没有指向实体集StudentStudent和和CourseCourse的箭头的箭头意味着,一个学生可以选修一个老师开意味着,一个学生可以选修一
34、个老师开的几门课,而一个老师开的一门课也可的几门课,而一个老师开的一门课也可以有多个学生去选。以有多个学生去选。霍绚柒补南非岿坐启惊郸博靠老俐邯哩姚叙因漆蛙鸯栈池曾碍贫戌识徽蜒数据库建摸PPT数据库建摸PPT在在多多向向联联系系中中,指指向向某某个个实实体体集集E E的的箭箭头头意意味味着着,如如果果从从与与该该联联系系相相连连的的其其他他几几个个实实体体集集中中各各取取出出一一个个实实体体,那那么么这这几几个个实实体体将将与与E E中中唯唯一一的的实体相关。实体相关。虽然用多向(多元)联系能更形象虽然用多向(多元)联系能更形象地反映某些现实世界,但从数据库地反映某些现实世界,但从数据库建模的
35、角度,用二元联系更为方便。建模的角度,用二元联系更为方便。邑箍娟摹另圾剁吏邀危批玉园桐你店拈阵堰揭疵嫉病腥辰毕垛琐棠莱比腻数据库建摸PPT数据库建摸PPT解决的方法是:把多向联系中的解决的方法是:把多向联系中的联系联系StudentCourseStudentCourse用用 实体集实体集 StudentCourseStudentCourse来来代替,同时增加代替,同时增加三个三个实体集实体集之间的多对之间的多对一的一的二元联系二元联系。从而形成四个实体集之。从而形成四个实体集之间的联系。(间的联系。(注意图的切换注意图的切换)供谆厨朵拔潘忌棺垃李忱臣能恭份恰讯犁眼赴脸匝谦耘魔寻叮留纵鲜拴琶数据
36、库建摸PPT数据库建摸PPT练习:一个工厂的管理系统练习:一个工厂的管理系统该工厂需要管理的实体集有:职工、部门、项该工厂需要管理的实体集有:职工、部门、项目、零件、供应商、仓库。在该系统中各实体目、零件、供应商、仓库。在该系统中各实体集之间存在以下联系:集之间存在以下联系:一个职工只在一个部门工作,一个部一个职工只在一个部门工作,一个部门有多位职工;门有多位职工;一位职工可以参加一个以上的项目,一位职工可以参加一个以上的项目,每个项目可有多个职工参加;每个项目可有多个职工参加;每个项目确定一个负责人,一人可以每个项目确定一个负责人,一人可以负责多个项目。负责多个项目。避浆舜敌劫局膀橱峦羊壶朋
37、坐绚饰朔晤窟典描谱啮痊乐爹而堑为此典精疡数据库建摸PPT数据库建摸PPT一个供应商可为多个项目供应零件,一个供应商可为多个项目供应零件,每个项目允许从不同的供应商采购零件。每个项目允许从不同的供应商采购零件。每个项目需要多种零件。每个项目需要多种零件。一种零部件可以由其它几种零部件组一种零部件可以由其它几种零部件组装而成。装而成。一个仓库可以存放多种零件,一种零一个仓库可以存放多种零件,一种零件可存放在不同的仓库里。件可存放在不同的仓库里。用用E/RE/R图描述各实体集之间的联系图描述各实体集之间的联系袁谐率午拽会累后坪渝界室步裴情捞洼滋即淬镀招炸讼犯旦斧虐录当萤兜数据库建摸PPT数据库建摸P
38、PT 四、设计原则四、设计原则 真实性真实性 避免冗余避免冗余 简单性简单性 合理选择元素类型合理选择元素类型 此部分内容学生自学此部分内容学生自学头鸡档贱趟枕相闭彤议奸赫判刷踌份峙酚傅悦遏胞痉捍盆驳同伏昼袍啪姻数据库建摸PPT数据库建摸PPT1. 1. 真实性真实性 最最基基本本的的设设计计原原则则:类类(实实体体集集)和和属属性性应应当当是是真真实实的的,应应当当反反映映客客观现实。观现实。在设计时,首先要对客观世界进行在设计时,首先要对客观世界进行准确、全面的分析,然后在此基础准确、全面的分析,然后在此基础上进行正确、合理的抽象。上进行正确、合理的抽象。 杭遗眯接剐惹谓芳雇驴吸燥复扑思旭
39、暴抬框蹋姥椎蔫膏贫晶岩痘竣坊蒸样数据库建摸PPT数据库建摸PPT2. 2. 避免冗余避免冗余 在在设设计计过过程程中中还还要要注注意意,任任何何事事物物都都只只表表达达一一次次,否否则则既既浪浪费费空空间间,又容易造成不必要的麻烦。又容易造成不必要的麻烦。绥苦黔阅问苑总妓尊运早靶丈寺松逞圣崎坑橙件寂洒讳体互酌兵腆桶略丝数据库建摸PPT数据库建摸PPT3. 3. 简单性简单性 在设计数据库的过程中,一定要设在设计数据库的过程中,一定要设法避免引入过多的元素,而应该尽法避免引入过多的元素,而应该尽量简单明了。量简单明了。酒蛆丛蔡形调淋英蝶竖丹藕佰毙绪骤箕钡铰钳暑盒邯茅奏毕渔毒医韵闹鼠数据库建摸PP
40、T数据库建摸PPT4. 4. 合理选择元素类型合理选择元素类型 究究竟竟是是把把某某种种元元素素作作为为属属性性,还还是是单独作为一个单独作为一个类类或或实体集实体集?属属性性比比类类/ /实实体体集集或或者者联联系系实实现现起起来简单一些。来简单一些。哪缮青岁拘豢希镑碟末油以袖兢联嫂赌罪搂媒备蹬吗棚箕驹闭驻抹闰驾焦数据库建摸PPT数据库建摸PPT 五、子类五、子类 类中某些具有特殊属性的对象还可类中某些具有特殊属性的对象还可以组成它的以组成它的子类子类,例如学生类又可,例如学生类又可分为小学生、中学生、大学生、研分为小学生、中学生、大学生、研究生等究生等子类子类。每个。每个子类子类除了继承它
41、除了继承它的父类的的父类的类的特性类的特性以外,还应有它以外,还应有它自己的自己的附加属性附加属性和和联系联系。 页肚碑力碌曹轿滁费紊酮壁窥酒论啄泽墓双挟平筹穆刷踪隧遇蔫队报桅蕊数据库建摸PPT数据库建摸PPT1.ODL1.ODL中的子类中的子类 定义子类的方法:定义子类的方法:在类名在类名 A A 之后加上冒号和另一个类之后加上冒号和另一个类 B B 的名字,就可以定义类的名字,就可以定义类 A A 是类是类 B B 的子类。的子类。 例例如如:将将研研究究生生定定义义为为Student 类类的的子子类类 Postgraduate 。interface Postgraduate: Stude
42、nt attribute string Tutor;/导师姓名导师姓名; 惯掏逐花腾由暗矗郝李毡摹捐疮冲鞠坦蕊啥杯劫春皑矽窿亚砷应朵创铜坐数据库建摸PPT数据库建摸PPT子子类类能能自自动动继继承承其其超超类类(父父类)类)的所有特性的所有特性。 如上例中,每个研究生对象都要从如上例中,每个研究生对象都要从Student Student 中中 继承属性继承属性 StudentNoStudentNo、StudentNameStudentName、AgeAge和和DeptDept,并从,并从StudentStudent中中继承了联系继承了联系 CoursesCourses,除,除此之外,还有它此之
43、外,还有它自己的属性自己的属性TutorTutor。 古玩群溃蓟寐卜坠鞍泰喳银坑琐答看痊拜劲集庆绰灰遵宛钢丽臣烹晶窍蕴数据库建摸PPT数据库建摸PPT2. ODL2. ODL中的多重继承中的多重继承 一一个个类类可可以以有有多多个个子子类类,而而子子类类本本身身又又可可以以具具有有子子类类,形形成成类类的的层层次次结构结构。另外,一个类还可能有多个超类另外,一个类还可能有多个超类(父类)。(父类)。 条理电影类、演员类的定义条理电影类、演员类的定义 雍晰咐札颜锚蚁绅脐逗深厢辨凑矢篇虞茫悉似盏婉傈粒堆撵杰啸娄晕孤截数据库建摸PPT数据库建摸PPT电影资料数据库:电影资料数据库:电影类电影类:Mo
44、vieMovieinterface interface MovieMovie attribute string Title; / attribute string Title; / 电影名电影名 attribute integer Year; / attribute integer Year; / 电影制作年份电影制作年份 attribute integer Length; / attribute integer Length; / 电影长度(分钟)电影长度(分钟) attribute enum Filmcolor,blackwhite Type attribute enum Filmcolo
45、r,blackwhite Type; ; / / 电影类型(彩色、黑白)电影类型(彩色、黑白) relationship set relationship set a actorsctors; / ; / 出演电影的集合出演电影的集合 inverse inverse ActorActor : : moviemovie ; / ; / 反向联系反向联系 relationship Studio ownedby; / relationship Studio ownedby; / 唯一的制片公司唯一的制片公司 inverse Studio inverse Studio : : ownsowns ; /
46、 ; / 反向联系反向联系 曙臻砷泼侗气携赛圈美染管错薄缠楔瑰雪吊胰岁豫瀑揪吮棚穷橇墙薯驼挤数据库建摸PPT数据库建摸PPT演员类:演员类:ActorActorinterface interface ActorActor attribute string Name ; attribute string Name ; / / 演员姓名演员姓名 attribute integer Year; attribute integer Year; / / 出生年份出生年份 relationship set relationship set movies; movies; / / 出演电影的集合出演电影的集
47、合 inverse inverse MovieMovie : actors; : actors; / / 反向联系反向联系 就栓夹彦法曙啦逞落剪魁萌迪妙攻尸绵栓曰安筋裳惰涨腐兢骨夷坠枕啊卯数据库建摸PPT数据库建摸PPT为电影类为电影类 MovieMovie定义一个子类:定义一个子类: 谋杀片类谋杀片类 M Murderurder为电影类为电影类 MovieMovie定义一个子类谋杀片类定义一个子类谋杀片类MurderMurderinterface interface Movie: Movie: Murder Murder attribute string Weapon; attribute
48、string Weapon; / / 凶器凶器 这样,谋杀片除了继承电影类所拥有的这样,谋杀片除了继承电影类所拥有的四个属性和两个联系外,自身还增加了四个属性和两个联系外,自身还增加了一个属性:凶器。一个属性:凶器。烙藉摸潜汰耪近姑农醛溯缨丫摧匠防较窜蓝远撇姜壹雹白瑚榔妈屎硬御研数据库建摸PPT数据库建摸PPT例:例: 分析电影分析电影谁陷害了兔子罗杰谁陷害了兔子罗杰 电影电影谁陷害了兔子罗杰既是动画片,谁陷害了兔子罗杰既是动画片,又是谋杀片。除了具有普通电影的四个属又是谋杀片。除了具有普通电影的四个属性和两个联系之外,还应该有联系性和两个联系之外,还应该有联系voicesvoices和属性和
49、属性WeaponWeapon。这时,可以定义另外一个。这时,可以定义另外一个子类子类Cartoon_MurderCartoon_Murder(动画谋杀片)(动画谋杀片),它,它是是CartoonCartoon(动画片)(动画片)和和MurderMurder(谋杀片)(谋杀片)两两者的子类,即者的子类,即 Cartoon_MurderCartoon_Murder类有两个类有两个父类。父类。 interface Cartoon_Murder interface Cartoon_Murder:CartoonCartoon,Murder Murder ;酌傅摆惨宠饺躇骇哗慨烷瞎猩配荡分赢窑系坝窿陶黄忠
50、巷翻植训腮控擦矿数据库建摸PPT数据库建摸PPT假定类假定类A A是类是类B B的子类,为了表示出的子类,为了表示出A A和和B B之间的父、子关系,我们用一种称作之间的父、子关系,我们用一种称作“属于属于”(“isaisa”)的特殊)的特殊联系联系将实体集将实体集A A和和B B相连。相连。 “isa”“isa”联系联系用一个三角形和两条连向实用一个三角形和两条连向实体集的线来表示,三角形的尖端指向超体集的线来表示,三角形的尖端指向超(父)类,三角形中还要写上(父)类,三角形中还要写上“isa”“isa”的的字样。字样。 3. E/R 3. E/R 图中的子类图中的子类口荡顾盼泼析紫覆茫语既
51、市浊荆迹惟移腆助缎鳞忙靳栖晌臻乔禁蛰鬼逞队数据库建摸PPT数据库建摸PPT实体集实体集Student及其子类及其子类Postgraduate: StudentAgeStudentNoDeptStudentNameisaPostgraduateTutor冗沧锌挂颐库遮钉义匡滁氖茶站土励满玲誉呀喝源拜崩貌致纯萝钝磨亏弦数据库建摸PPT数据库建摸PPT六、对约束的建模六、对约束的建模使用使用ODLODL中的类及其特性(属性和联中的类及其特性(属性和联系),或者使用系),或者使用E/RE/R 图中的实体集图中的实体集和联系,可以表示数据库最基本的和联系,可以表示数据库最基本的数据结构。而在数据库的设计
52、中还数据结构。而在数据库的设计中还会遇到会遇到不能使用这两个方法建模不能使用这两个方法建模的的情况;其原因是情况;其原因是这些信息对数据具这些信息对数据具有一定的约束有一定的约束。常见的常见的约束信息约束信息有以下几种有以下几种值桂役志纺判奸赣憨辱崭争甭之戒节筋递渤肚生停饮迈猜造绩倾换邢熟咨数据库建摸PPT数据库建摸PPT1 1键码(键码(keykey)2 2单值约束单值约束3 3引用完整性约束引用完整性约束4 4域约束域约束5.5. 一般约束一般约束 奢平蜀尹醛氟张吴千痰谢彼撑庙斤弊栽没播茵砧狞篆汕并曹印恿全腹睛呻数据库建摸PPT数据库建摸PPT1.1.键键 码码 (keykey) 什么是什
53、么是键码键码(又称(又称关键字关键字):在:在ODLODL中,中,类的范围内能唯一区分一个对象的类的范围内能唯一区分一个对象的属性属性或或属性的组合;属性的组合;或者在或者在E/RE/R图中图中实体实体集的范围内能唯一区分一个实体集的范围内能唯一区分一个实体(在(在E/RE/R图中)的图中)的属性属性或或属性的组合,称为属性的组合,称为键码键码。 一个类中的任何两个对象在构成键一个类中的任何两个对象在构成键码的属性集上的取值决不能相同,否则码的属性集上的取值决不能相同,否则键码就不能唯一地标识一个对象。键码就不能唯一地标识一个对象。 槽迸酉捎蛤沪桅蛮桐尉纹缩十竖沿皿存悦垂恼坑馈田钦驶墓祭边债顽
54、朽誊数据库建摸PPT数据库建摸PPT如:如:StudentStudent学生类的键码是学生类的键码是StudentNoStudentNo该类的任何两个对象决不可能有相同的学该类的任何两个对象决不可能有相同的学号。号。有时一个属性难以唯一地区分一个对象有时一个属性难以唯一地区分一个对象(一条记录),则要确定一个(一条记录),则要确定一个属性的组属性的组合合作为键码作为键码 复合键码复合键码。如:课程关系如:课程关系Course Course 中中CourseCourseNoNo 和和 TeacherTeacher两个属性为两个属性为复合键码复合键码佑泉毕侮苑矿雷膛宛片猩秧涎萎谚吕试去渺劲鸡滚仍氯
55、制恬那仆隧佳挖寨数据库建摸PPT数据库建摸PPT实际上,在设计数据库的时候我们都实际上,在设计数据库的时候我们都要为数据库设计一个要为数据库设计一个有效的键码有效的键码,如学校要为所有学生分配唯一的学如学校要为所有学生分配唯一的学号;公司为要所有职员分配唯一的号;公司为要所有职员分配唯一的员工号等等,这样就可以很方便的员工号等等,这样就可以很方便的区分数据库中的对象或实体。区分数据库中的对象或实体。 应魂蜂幅敬挤轧衙钥律役克玄滞提饺匠宿焉杰任亥斡针券绢户止曙妆毋惯数据库建摸PPT数据库建摸PPT 如何如何表示键码?表示键码?在在ODLODL中,可以用中,可以用关键字关键字keykey或者或者k
56、eyskeys(这两者效果相同)来说明一个或多个(这两者效果相同)来说明一个或多个属性为一个属性为一个类的键码类的键码,键码说明必须紧,键码说明必须紧跟在类定义的后面,并且构成键码的属跟在类定义的后面,并且构成键码的属性要跟在性要跟在关键字关键字keykey后面,它本身也要用后面,它本身也要用圆括号括起来。圆括号括起来。如:学生类如:学生类StudentStudent的属性的属性 StudentNo StudentNo是关是关键字,则可表示为:键字,则可表示为: 夕阁洲峪迷乡辐贩绷度糙泄桩踞蔑汇川嫡劫戮拈军软昏颧屡烈窗国禹坏赁数据库建摸PPT数据库建摸PPTinterfaceinterface
57、 Student Student(key key StudentNoStudentNo) 类体略类体略 若若键键码码为为复复合合键键码码,则则必必须须用用圆圆括括号号把把复复合合键键码码括起来。括起来。如如:两两个个属属性性TitleTitle和和YearYear的的组组合合(集集合合)构构成成复合键码复合键码则可表示为则可表示为interfaceinterface Movie ( Movie (keykey(Title,Year) (Title,Year) 类体略类体略 憨色羡铀玉曰吼杀屹踩觉蛔作寂梯凹姐桃侗筑盯淖阮云间这盯荒笑殿佳头数据库建摸PPT数据库建摸PPT在在有有的的情情况况下下,
58、一一个个类类或或实实体体集集可可以以有有几几个个键键码码。假假设设约约定定学学生生类类StudentStudent的的属属性性姓姓名名不不允允许许重重名名,那那么么学学号号 StudentNoStudentNo和和姓姓名名 NameName都都可可以以作作为为键键码码,那那么么这这种种多键码的情况可以多键码的情况可以表示为:表示为:interfaceinterface StudentStudent( (keykey Name, Name, StudentNoStudentNo ) 类体略类体略 敌焰脚上六考轻曹证缸佐鹰哭薪虑凄茄窥貉催胞葵夫冕描舷絮复汝具抢保数据库建摸PPT数据库建摸PPT又如
59、制片公司的注册号又如制片公司的注册号StudioNoStudioNo也可以和公司也可以和公司名名NameName一样作为类一样作为类StudioStudio的键码,因为公司注的键码,因为公司注册号是不会重号的,那么这种多键码可表示为册号是不会重号的,那么这种多键码可表示为interfaceinterface Studio(Studio(keykey Name,StudioNoName,StudioNo) 类类体略体略 在在E/RE/R图中,可以用很简单的方法来图中,可以用很简单的方法来表示键码,即在该属性下面划一条横线。表示键码,即在该属性下面划一条横线。见图见图2.12衍赵惮搬搔孤库庄谗楚炭
60、悼览酞杯宿汗忘勇罕坦暴硒撰滁闻羚乓泌奠丽裳数据库建摸PPT数据库建摸PPT多个键码的情况下,多个键码的情况下,E/R E/R 图图不提供不提供正式正式的表示法来表示所有的键码。通常我们的表示法来表示所有的键码。通常我们会选择一个键码作会选择一个键码作为为主键码主键码,并把它看,并把它看作是实体集唯一的键码,用下划线来标作是实体集唯一的键码,用下划线来标明。至于其他的键码,称为明。至于其他的键码,称为次键码次键码或或候候选键码选键码,一般不在,一般不在 E/R E/R 图上标出,或者图上标出,或者在图的旁边作出注释。在图的旁边作出注释。 矩超帧烩术皇亥莆矩哀窘敢偷霉顾侮扔瘫荫定帅逃漏核厕骂又鼎菊
61、跨蘑麓数据库建摸PPT数据库建摸PPTStudent(StudentNo,StudentName,Dept)Course(CourseNo,CourseName,Teacher)SC(StudentNo,CourseNo,Grade)主键码主键码:StudentNoCourseNoStudentNO, 外键码外键码StudentNO CourseNo柱店俄锐嗜郧溯边胚彦肮敝癸储洼躬誉媒连读春丈晰尸庆佳嘶秀哉评藤储数据库建摸PPT数据库建摸PPT例如:对学生数据库进行查询,若给定例如:对学生数据库进行查询,若给定键码值为键码值为960001960001,那么按照单值约束的,那么按照单值约束的原则
62、,该库内仅有一条记录(元组)为原则,该库内仅有一条记录(元组)为需要查找的对象,而不必担心会有其它需要查找的对象,而不必担心会有其它学号相同的学生;如果按照非键码属性学号相同的学生;如果按照非键码属性查找(如年龄),会因该属性为非单值查找(如年龄),会因该属性为非单值约束,需查遍整个数据库方能找到要查约束,需查遍整个数据库方能找到要查找的学生。找的学生。刮赏优蛀皂篮启衣圆天惹掏涕禽藤森神测仍绦菱领棠渔九征违里媳潍锌箍数据库建摸PPT数据库建摸PPT 在在此此,我我们们还还需需要要区区别别一一个个属属性性或或联联系系最最多多有有一一个个值值的的情情况况(单单值值约约束束)和和必须有一个值(即不能
63、为空)的情况。必须有一个值(即不能为空)的情况。 当我们对一个属性进行单值约束的当我们对一个属性进行单值约束的时候,有两种选择,时候,有两种选择, 是要求该属性值是要求该属性值存在,存在, 是允许该属性值任选。是允许该属性值任选。 如果类的一个如果类的一个属性属性是键码的一部分是键码的一部分,那么一般要求类中每个对象的该属性值那么一般要求类中每个对象的该属性值都要存在都要存在;买巢脚介淌技觅经跑平仲囤展杀删切爆型程居娩唯艾迅绍漂件尿宋龚伟灯数据库建摸PPT数据库建摸PPT 如果该属性如果该属性不是键码的一部分不是键码的一部分,通常通常允许允许该属性值该属性值不存在不存在,这时,这时,可以对该属
64、性建立可以对该属性建立“null”值(值(“空空”值)来表示允许该属性的值任值)来表示允许该属性的值任选(如年龄)。选(如年龄)。 E/R 图也提供了图也提供了表示单值约束表示单值约束的方法。实体集的每个属性都隐含的方法。实体集的每个属性都隐含地具有单一的值。地具有单一的值。 坊赦寻兔麓诀瞩瘟羽豢抒控恋运腺爽卢缮筒猿手略讼芋廊跟宾释预痕够求数据库建摸PPT数据库建摸PPT不能为空的属性将在边上标明。不能为空的属性将在边上标明。表明表明多对一多对一或或一对一一对一联系的联系的箭头箭头也也表示单值约束。如果实体集表示单值约束。如果实体集 A A 的一的一个联系有指向实体集个联系有指向实体集B B的
65、箭头,那么的箭头,那么实体集实体集 B B 中中最多有一个最多有一个实体与实体实体与实体集集 A A 中的某个实体相连。中的某个实体相连。 异好萧抱唬蟹血穷聊啤稳筏腮县负峡敲复姨骆俏壹饭百尤誓痊墒鹊婉此癣数据库建摸PPT数据库建摸PPT3.3.引用完整性约束引用完整性约束 单值约束单值约束通常要求某个对象的属性或通常要求某个对象的属性或联系最多有一个值存在;而联系最多有一个值存在;而完整性约束完整性约束要求某个对象所引用的值在数据库中确要求某个对象所引用的值在数据库中确实存在。实存在。 完整性完整性体现在两个方面体现在两个方面 :对属性,要求其有非空的单值;对属性,要求其有非空的单值;对联系,
66、要求引用的对象存在并且唯一对联系,要求引用的对象存在并且唯一。链砍搀拯随搐潘爵拼败匹洁柑洛阂哉丑食老定椎败币扰猩绞揖蛊忆仲来瘫数据库建摸PPT数据库建摸PPT 一个实体的一个实体的键码属性值不能为空键码属性值不能为空,称为称为实体完整性实体完整性;一个个实实体体的的某某个个属属性性(集集)值值只只能能引引用用另另一一实实体体确确实实存存在在的的键键码码属属性性(集集)值,值,则称为则称为引用完整性引用完整性。例如,在学生选课数据库中,若要删除例如,在学生选课数据库中,若要删除某个学生对象,则除了某个学生对象,则除了要删除要删除该学生的该学生的学号学号及其及其相关的属性值相关的属性值以外,同时还
67、应以外,同时还应删除删除与该学号对应的所有选课与该学号对应的所有选课 courses(所选课程集合),并从所有(所选课程集合),并从所有相关课程的联系相关课程的联系students(选课学生集(选课学生集合)合)中删除该学号中删除该学号。 亩嘛豪茹诈施侯扎渐泵挎秤掳赔栈张自彼堡权醒苞关辅导怀沟描调揩絮芜数据库建摸PPT数据库建摸PPT除了删除操作与引用完整性有关,除了删除操作与引用完整性有关,插入插入操操作、作、修改修改操作同样要保证操作同样要保证联系的引用联系的引用完整性。完整性。 E/R E/R 图图中中如如何何表表示示对对引引用用完完整整性性的的约约束束:假假定定 R R 是是一一个个从
68、从实实体体集集 A A 到到实实体体集集 B B 的的联联系系,如如果果指指向向 B B 的的是是一一个个圆圆箭箭头头,则则不不仅仅表表明明 R R 是是从从 A A 到到 B B 的的多多对对一一或或一一对对一一联联系系,而而且且对对于于实实体体集集 A A 的的一一个个给给定定的的实实体体,要要求求存存在在一一个个与与之之相关的实体集相关的实体集 B B 的实体。的实体。(见图(见图2.132.13)祷脆纤占龙乞铜或炙戚扮佃郴极氏祸土宣靡秽君位受雹妊堵江逝道切淀声数据库建摸PPT数据库建摸PPT5.5.其它类型的约束其它类型的约束 有有些些时时候候,我我们们希希望望在在数数据据库库中中实施
69、一些其它类型的约束。实施一些其它类型的约束。 在此仅对其它类型的约束作简要在此仅对其它类型的约束作简要的说明,以后的章节将详细阐述。的说明,以后的章节将详细阐述。 域域 约约 束束 要要求求某某个个属属性性的的值值必必须须处处于于特特定定的范围内或者取自特性值的集合。的范围内或者取自特性值的集合。溯磁嚼咳遏孩醉此杭卯谨勤巳挟针耪巾娶能思靛匪逸炕弓柜枷如残迢姆妹数据库建摸PPT数据库建摸PPT这种限定称为这种限定称为域约束域约束。例例如如,学学生生的的学学号号StudentNoStudentNo约约定定为为整整数数类类型型,因因此此学学号号的的取取值值只只能能在在整整数数范围内。范围内。又如,学
70、生选课的课程号必须是课程又如,学生选课的课程号必须是课程号的集合中的一个元素,而不能是集合号的集合中的一个元素,而不能是集合外的某一数值。外的某一数值。总之,域约束是把属性的值限定在一个有总之,域约束是把属性的值限定在一个有限的范围之内。限的范围之内。俱时龚折瘸摆铜违坝噪培桂格帧贞硝诡朝值悲粉宫摸谤无欲尖朽骂峙爹祟数据库建摸PPT数据库建摸PPTODLODL在在说说明明一一个个属属性性时时要要求求带带上上属属性性的的数数据据类类型型,这这个个数数据据类类型型就就是是域域约约束束的最基本、最初级的的最基本、最初级的约束形式约束形式。例如,电影长度的类型是整数,那么例如,电影长度的类型是整数,那么
71、长度的值就不能是长度的值就不能是92.592.5或者其它非整数。或者其它非整数。然而,然而,ODLODL不支持更进一步的限制性约束不支持更进一步的限制性约束,例如要求长度在例如要求长度在3030到到180180之间。之间。 吐住例卿椽隧劲芦肪宋出朴矛秧讣馆呢焰远滞凤白态敢倦邻骇项鲜幕佃庙数据库建摸PPT数据库建摸PPT一般约束:是指一般约束:是指要求在数据库中保要求在数据库中保存的任意断言。例如我们可能要求对任存的任意断言。例如我们可能要求对任何一部电影所列出的演员数不得超过何一部电影所列出的演员数不得超过8 8个。个。6.6.约束的意义约束的意义 键码键码使用户很容易使用户很容易区别对象区别
72、对象或实体;或实体;单单值约束值约束可使我们知道某个属性只有可使我们知道某个属性只有唯一唯一值值,可以,可以节省存储空间、节省访问时间节省存储空间、节省访问时间。约束是约束是数据库模式的一部分数据库模式的一部分。阔觉辟踌蔫洒莲敬癣夯宇圃叭水馆案杖棠涩辕迁抡初姑妈偏饲肇彭于曾乞数据库建摸PPT数据库建摸PPT数据库设计者数据库设计者应该把约束和库结构的设应该把约束和库结构的设计一起定义计一起定义,一旦说明了某种约束,就,一旦说明了某种约束,就不允许对数据库进行任何违背该约束的不允许对数据库进行任何违背该约束的插入或修改的操作;设计者插入或修改的操作;设计者应该把对约应该把对约束的建模放在一个重要
73、束的建模放在一个重要的位置。的位置。音鱼槐磐纂涯玖斯舶以佳春故座庐音棺敷傻檬甚淹棺泳跺促裔玖污埋芬帮数据库建摸PPT数据库建摸PPTl数数 据据 库库 建建 模模 ( Database Modeling)l对象定义语言对象定义语言 ( ODL ,Object DefinitionLanguage)l实体实体/联系模型联系模型(Entity/ Relationship Model)l联系的三种类型联系的三种类型七、七、 本本 章章 总总 结结颜者习莽兵柿便赦穴燥吠碎珊结闹书念衔曲溶展岿术警郴慰惑桌冶毙央盼数据库建摸PPT数据库建摸PPTl设计原则设计原则l子类(子类(SubclassSubclass)l对对约约束束建建模模(Modeling Modeling of of ConstraintConstraint)l键码(键码(KeyKey)l引引 用用 完完 整整 性性 ( Reference Reference IntegrityIntegrity)俯费枪挛位若提责昭盲恍彻叔啄羊宣郝淮萎纲场刚苑辅端疑纠斥镑荫害属数据库建摸PPT数据库建摸PPT 习题二 1. 2. 3. 4. 8裤帅滑舅栽皮坯已帆秀颧毅汲轿端翅章峭肚烂坷呛奖殊责猛目谰瑶惟萧继数据库建摸PPT数据库建摸PPT