数据模型(Data Model) 是对现实世界数据特征的模拟和抽象,用来描述数据是如何组织、存储和操作的。
数据模型应满足如下三个条件:
能比较真实地模拟现实世界
容易为人所理解
便于在计算机上实现
举例:
学生信息(2017010101,李光明,男,19,计算机科学学院,软件工程)
数据结构:其描述的是学生的特征信息,即学生数据的基本结构;
数据操作:主要包括对学生信息的查询、修改、删除数据;
数据的完整性约束:其中的性别信息只能是男或女,年龄一般是在15到40岁之间,这实际就是对性别和年龄的一种约束。
实体(Entity):
客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念,如:张三、汽车、运动、兴趣……
属性(Attribute):实体所具有的某一特性称为属性。
码(Key):唯一标识实体的属性集称为码。
域(Domain):属性的取值范围称为该属性的域。
实体集(Entity Set): 同一类型实体的集合称为实体集。
实体型(Entity Type):用实体名及其属性名集合来抽象和刻画同类实体。
学生实体型:学生(学号,姓名,性别,院系,专业)
实体:学生
属性:学号、姓名、性别、院系;
专业码:学号
性别的域: 男,女教师实体型: 教师(工号,姓名,性别,院系)
实体:教师
属性:工号、姓名、性别、院系
码:工号
性别的域: 男,女全体学生是一个实体集
全体教师是一个实体集
学生和教师之间的联系:选课
联系(Relationship):现实世界中事物内部以及事物之间的联系,在信息世界中反映为实体内部的联系和实体之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系 实体之间的联系通常是指不同实体集之间的联系。
联系分为: 一对一(1:1) 一对多(1:n) 多对多(m:n)
一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1。
一对多联系(1:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。
多对多联系(m:n):如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称实体集A与实体B具有多对多联系,记为m:n。
E-R方法(实体-联系法)是P.P.S.Chen于1976年提出的,是目前最常用的概念模型描述方法
E-R方法使用的工具称为E-R图,E-R方法描述的结果也称为E-R模型。
实体:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体连接起来
联系:
联系本身:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)
联系的属性:联系本身也是一种实体型,也可以有属性。
课程、教师与参考书三个实体型:
如果一门课程可以由若干个教师讲授,且使用若干本参考书
而每一个教师可以讲授多门课程
一本参考书可以供多门课程使用
供应商、项目、零件三个实体型:
一个供应商可以供给多个项目多种零件
每个项目可以使用多个供应商供应的零件
每种零件可由不同供应商供给
职工实体型内部具有领导与被领导的联系
即某一职工(干部)“领导”若干名职工,而一个职工仅被一个职工(干部)直接领导
案例:实现一个简单的学生选课系统,只涉及对学生、教师、课程的管理。用E-R图表示“学生选课系统”的概念模型。
说明:此系统要求能够记录学生的选课情况、教授的授课情况以及学生、课程、教师的基本信息。 业务需求:
一个教师可以教授多名学生,每个学生可以选修多个教师的课程
一个学生可以选择多门课程,一门课程可以对多个学生开放,且学生选修一门课程就会有一个成绩。
教师与课程:一个教师可以教授多门课程,一门课程同时也可以被多名教师教授。
分析确定实体的基本信息:
学生基本信息:学号、姓名、性别、专业、院系、电话、EMAIL
教师基本信息:工号、姓名、性别、职称、院系、年龄、电话、EMAIL
课程基本信息:课程号,课程名,学分,课程性质
逻辑模型(Logical Data Model):从数据的组织方式来描述数据,即用什么样的数据结构来组织数据。
概念数据模型必须转换成逻辑模型,才能在DBMS中实现,因此逻辑模型既要面向用户,又要面向系统。
非关系模型:层次模型和网状模型在20世纪70—80年代初非常流行,在数据库系统的初期起了重要作用
关系模型(Relational Data Model):
以严格的数学理论为基础:谓词逻辑(predicate logic)、集合论(set theory)
目前主流的数据库系统都是基于“关系模型”
面向对象模型:目前数据库技术的研究方向
1970年,IBM的研究员E.F.Codd博士发表《大型共享数据银行的关系模型》一文,提出了关系模型的概念,奠定了关系数据库的基础。关系数据库系统采用关系模型作为数据的组织方式。 目前,计算机厂商新推出的数据库管理系统几乎都支持关系模型。
关系(Relation):一个关系对应通常说的一张表
元组(Tuple):表中的一行即为一个元组
属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名
关系模式:对关系的描述,例如:关系名(属性1,属性2,…,属性n)
用关系模式描述学生、课程、学生与课程之间的多对多联系。
学生(学号,姓名,性别,院系,专业,年龄,电话,EMAIL)
课程(课程号,课程名,学分,课程性质)
选课(学号,课程号,成绩)
1975年,ANSI/SPARC(美国国家标准协会/标准规划和需求委员会)提出数据库的三级模式结构/
概念模式:
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图,综合了所有用户的需求
一个数据库只有一个模式
外模式:数据库用户(包括应用程序员和最终用户)看见和使用的局部数据的逻辑结构和特征描述。
一个数据库可以有多个外模式。
外模式是保证数据库安全性的一个有力措施。
是数据物理结构和存储方式的描述
是数据在数据库内部的表示方式:
记录的存储方式(顺序存储,按照B树结构存储, 按hash方法存储)
索引的组织方式
数据是否压缩存储
数据是否加密
数据存储记录结构的规定
一个数据库只有一个内模式
对于下表的学生基本信息,分配宿舍的部门关心的属性可能是:学号、姓名和性别,学院教学管理人员关心的属性可能是学号、姓名、院系、专业,设计该数据库的三级模式。
根据用户需求,该数据库可以分别为两类用户建立外模式:
宿舍部(学号,姓名,性别)
内模式:顺序存储、数据不压缩存储,MD5加密。
为了能够在数据库系统内部实现三级模式的联系和转换,数据库管理系统在三个模式之间提供了两级映像。
外模式/概念模式映象
模式:描述的是数据的全局逻辑结构
外模式:描述的是数据的局部逻辑结构
每一个外模式,数据库系统都有一个外模式/模式映象。外模式/模式映象定义了该外模式与概念模式之间的对应关系。映象定义通常包含在各自外模式的描述中。
保证数据的逻辑独立性。
概念模式/内模式映象
定义了数据全局逻辑结构与存储结构之间的对应关系。如,说明逻辑记录和字段在内部是如何表示的。数据库中模式/内模式映象是唯一的。该映象定义通常包含在模式描述中。
保证数据的物理独立性。
对于下标的学生基本信息,分配宿舍的部门关心的属性可能是:学号、姓名和性别,学院教学管理人员关心的属性可能是学号、姓名、院系、专业。
外模式
根据用户需求,该数据库可以分别为两类用户建立外模式:
宿舍部(学号,姓名,性别)
院部(学号,姓名,院系、专业)
概念模式内模式
顺序存储、数据不压缩存储,MD5加密。
关系模式增加“爱好”属性,即:学生基本信息(学号、姓名、年龄、性别,院系、专业,爱好)
“宿舍部”:不关心学生的“爱好”,外模式“宿舍部”不需要变化;
院部需要了解学生的“爱好”,数据库管理员调整“院部”的外模式,添加“爱好”属性,即:院部(学号,姓名,院系、专业,爱好)