第二章数据库建模
本早要点
1、掌握数据库建模的两种基本方法:
对象定义语言(ODL)和实体-联系模型(E/R图)
2、会用这两种方法建立简单的数据库模型。
3、了解数据库设计的基本原则
4、掌握用ODL和E/R图表示子类的方法体集Teacher(老师),把Course的属性Teacher换成与实体集Teacher的联系;这样,学生选课联系就涉及到三个实体集:Student,Course,Teacher。如下图示:
财段设一门课可有几位老师开设,而每位老师都可开设几门课,学生可在选课的同时选择老师。
沛向Teacher的箭头表示对于特定的学生和课程,只有一位老师与它们相对应。
裂有指向实体集Student和Course的箭头意味着,一个学生可以选修一个老师开的几门课,而一个老师开的一门课也可以有多个学生去选。M多向联系中,指向某个实体集E的箭头意味着,如果从与该联系相连的其他几个实体集中各取出一个实体,那么这几个实体将与E中唯一的实体相关。
?虽然用多向(多元)联系能更形象地反映某些现实世界,但从数据库建模的角度,用二元联系更为方便。
、避免冗余、:类(实体集)和属性应当是真实的,应当反映客观现实。
在设计时,首先要对客观世界进行准确、全面的分析,然后在此基础上进行正确、合理的抽象。
避免冗余在设计过程中还要注意,任何事物都只表达一次,否则既浪费空间,又容易造成不必要的麻烦。
简单性在设计数据库的过程中,一定要设法避免引入过多的元素,而应该尽量简单明了。
合理选择元素类型究竟是把某种元素作为属性,还是单独作为一个类或实体集?
属性比类/实体集或者联系实现起来简单一些。
,除了作为整体的类的特性以外,每个子类有它自己的附加属性和/或联系。
ODL中的子类
期定义子类的方法:
在类名A之后加上冒号和另一个类B的名字,就可以定义类A是类B的子类。
例如:学生类的研究生类表示interfacePostgraduate:Student{attributestringTutor;//导师姓名};??类能自动继承其超类(就是子类从中派生的类)的所有特性。
北例中,每个研究生对象都有从Student中继承下来的属性StudentNo、StudentName、Age和Dept,并从Student中继承了联系Courses,除此之外,还有它自己的属性Tutor。
ODL中的多重继承一个类可以有多个子类,而子类本身又可以具有子类,形成类的层次结构。
另外,一个类还可能有多个超类。例如:〈〈谁陷害了兔子罗杰》既是动画片,又是谋杀片。
除了具有普通电影的四个属性和两个联系之外,还应该有联系voices和属性Weapon。可以定义另外一个子类Cartoon_Murder(动画一谋杀片),它是Cartoon(动画片)和Murder
(谋杀片)两者的子类:
interfaceCartoon_Murder:
Cartoon,Murder{};
ODL的实现至少提供如下机制之一来保证用户能够避免由于多重继承而产生的冲突:
指出特性(属性或者联系)的两个定义中哪一个适用于子类。
重新命名有相同名字的另一个特性。
为
数据库建模 来自淘豆网m.daumloan.com转载请标明出处.