1.2 数据模型
视频二维码(扫码观看)
数据模型(Data Model)也是一种模型,它是对现实世界数据特征的抽象。
数据模型就是现实世界的模拟。
1.2.1 两类数据模型
数据模型应满足三方面要求:
能比较真实地模拟现实世界;
容易为人所理解;
便于在计算机上实现。
根据模型应用的不同目的,可以将这些模型划分为两类,它们分别属于两个不同的层次。
第一类是概念模型(Conceptual Model),也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
第二类是逻辑模型和物理模型,其中逻辑模型主要包括层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)和对象关系模型(Object Relational Model)等。它是按计算机系统的观点对数据建模,主要用于DBMS的实现。物理模型是对数据最低层的抽象,它描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。
图1-3 现实世界中客观对象的抽象过程
1.2.2 数据模型的组成要素
数据模型通常由数据结构、数据操作和完整性约束三部分组成。
一、数据结构
数据结构描述数据库的组成对象以及对象之间的联系。
数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
二、数据操作
数据库主要有查询和更新(包括插入、删除、修改)两大类操作。
数据操作是对系统动态特性的描述。
三、数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。
例如,在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件。
例如,在某大学的数据库中规定教授的退休年龄是65周岁,男职工的退休年龄是60周岁,女职工的退休年龄是55周岁等。
1.2.3 概念模型
概念模型是现实世界到机器世界的一个中间层次。
①概念模型用于信息世界的建模;
②现实世界到信息世界的第一层抽象;
③数据库设计人员进行数据库设计的有力工具;
④数据库设计人员和用户之间进行交流的语言。
概念模型要求:
①具有较强的语义表达能力;
②能够方便、直接地表达应用中的各种语义知识;
③简单、清晰、易于用户理解。
一、信息世界中的基本概念
1实体(Entity)
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。
例如,一个职工、一个学生、一个部门、一门课、学生的一次选课等都是实体。
2属性(Attribute)
实体所具有的某一特性称为属性。
一个实体可以由若干个属性来刻画。
例如,学生实体可以由学号、姓名、性别、出生年月、所在院系、入学时间等属性组成。(94002268,张山,男,197605,计算机系,1994)这些属性组合起来表征了一个学生。
3码(Key)
惟一标识实体的属性集称为码。
例如,学号是学生实体的码。
4域(Domain)
域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
例如,学号的域为8位整数,学生年龄的域为整数,性别的域为(男,女)。
5实体型(Entity Type)
具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。
6实体集(Entity Set)
同一类型实体的集合称为实体集。例如,全体学生就是一个实体集。
7联系(Relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。
二、两个实体型之间的联系
1一对一联系(1:1)
如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。
例如,学校里面,一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。
1:1联系
2一对多联系(1:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。
例如,一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
1:n联系
3多对多联系(m:n)
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n。
例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课程里学生之间具有多对多联系。
m:n联系
实际上,一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。
三、两个以上的实体型之间的联系
一般地,两个以上的实体型之间也存在着一对一、一对多、多对多联系。
若实体型E1,E2,…,En之间存在联系,对于实体型Ei(j=1,2,…,i-1,i+1,…,n)中的给定实体,最多只和Ei中的一个实体相联系,则说Ei与E1,E2,…,Ei-1,Ei+1,…,En之间能联系是一对多的。请读者给出多实体型之间一对一、多对多联系的定义。
例如,对于课程、教师与参考书3个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的。
两个以上实体型间1:n联系
又如,有3个实体型:供应商、项目、零件,一个供应商可以供给多个项目多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系。
两个以上实体型间m:n联系
四、单个实体型内的联系
同一个实体集内的各实体之间也可以存在一对一、一对多、多对多的联系。
例如,职工实体型内部具有领导与被领导的联系,即某一职工(干部)“领导”若干名职工,而一个职工仅被另外一个职工直接领导,因此这是一对多的联系。
单个实体型内部1:n联系
五、概念模型的一种表示方法:实体-联系图(E-R图)方法
E-R图提供了表示实体型、属性和联系的方法。
实体型:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体型连接起来。
例如,学生实体具有学号、姓名、性别、出生年份、系、入学时间等属性,用E-R图表示如图1-4所示。
图1-4 学生实体及属性
联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。
需要注意的是,如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。
例如,如果用“供应量”来描述联系“供应”的属性,表示某供应商供应了多少数量的零件给某个项目。那么这3个实体及其之间联系的E-R图表示可如图1-5所示。
图1-5 联系的属性
六、一个实例
下面用E-R图来表示某个工厂物资管理的概念模型。
物资管理涉及的实体有:
①仓库属性有仓库号、面积、电话号码;
②零件属性有零件号、名称、规格、单价、描述;
③供应商属性有供应商号、姓名、地址、电话号码、账号;
④项目属性有项目号、预算、开工日期;
⑤职工属性有职工号、姓名、年龄、职称。
这些实体之间的联系如下:
(1)一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。
(2)一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓库和职工之间是一对多的联系。
(3)职工之间具有领导-被领导关系。即仓库主任领导若干保管员,因此职工实体集中具有一对多的联系。
(4)供应商、项目和零件三者之间具有多对多的联系。即一个供应商可以供给若干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可由不同供应商供给。
下面给出此工厂的物资管理E-R图:
图1-6(a) 实体及属性
图1-6(b) 实体及其联系
图1-6(c) 完整的实体-联系图
1.2.4 最常用的数据模型
目前,数据库领域中最常用的逻辑数据模型有:层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)、面向对象模型(Object Oriented Model)、对象关系模型(Object Relational Model)。
1.2.5 关系模型
关系模型是目前最重要的一种数据模型。
一、关系数据模型的数据结构
·关系(Relation):一个关系对应通常说的一张表,如下表中的这张学生登记表;
·元组(Tuple):表中的一行即为一个元组;
·属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。
如下表有6列,对应6个属性(学号,姓名,年龄,性别,系名和年级):
·码(Key):也称为码键。表中的某个属性组,它可以惟一确定一个元组;如上表中的学号,可以惟一确定一个学生,也就成为本关系的码;
·域(Domain):属性的取值范围,如人的年龄一般在1~150岁之间;
·分量:元组中的一个属性值;
·关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,…,属性n)。
例如,上面的关系可描述为:学生(学号,姓名,年龄,性别,系名,年级)
在关系模型中,实体以及实体间的联系都是用关系来表示。
例如,学生、课程、学生与课程之间的多对多联系在关系模型中可以如下表示:
学生(学号,姓名,年龄,性别,系名,年级)
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
二、关系数据模型的操纵与完整性约束
关系数据模型的操作主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。
关系的完整性约束条件包括三大类:
①实体完整性;
②参照完整性;
③用户定义的完整性。
三、关系数据模型的优点
1关系模型与格式化模型不同,它是建立在严格的数学概念的基础上的。
2关系模型的概念单一。
3关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性也简化了程序员的工作和数据库开发建立的工作。