数据模型的概念
数据库数据模型是指描述数据组织、存储和操作的概念工具。
它们提供了一种方式,用于描述在数据库中存储的数据如何被组织、操作和表示。数据模型为设计和管理数据库提供了一个框架,同时也提供了一种通用的方式来描述数据。
数据模型是数据库系统的核心和基础。
数据模型的要素
一般地讲,任何一种数据模型都是严格定义的概念的集合,这些概念必须能够精确地描述系统的静态特性、动态特性和数据约束条件。因此,数据模型通常都是由数据结构、数据操作和数据约束三个要索组成。
1. 数据结构
数据结构:描述了数据如何被组织和存储的方式,包括数据实体(entity)、属性(attribute)和关系(relationship)等概念。数据结构通常使用图形化的方式来表示,比如实体-属性-关系(Entity-Attribute-Relationship,EAR)模型。
2. 数据操作
数据操作:描述了如何对数据进行操作和访问的方式,包括数据的增删改查等操作。数据操作通常使用结构化查询语言(Structured Query Language,SQL)等方式来实现。
3. 数据约束
数据约束:描述了数据必须满足的条件和限制,包括实体完整性、域完整性、参照完整性、触发器和约束等概念。数据约束通常用于确保数据的一致性和完整性。
数据模型的分类
根据抽象的层面不同,数据模型可分为概念层模型、逻辑层模型和物理层模型。
1. 概念层模型 E-R模型等 描述属性关系
概念层模型:概念层模型也称为概念模型或实体关系模型,它是最抽象的数据模型,用于描述系统中数据的本质和含义,而不考虑数据在计算机系统中的存储和处理方式。概念层模型主要由实体、属性和实体之间的关系组成,常用的概念模型有ER模型、EER模型等。
概念数据模型 E-R模型 实体-联系模型
涉及的基本概念
实体
客观存在并可相互区别的事物称为实体。是具有公共性质并可相互区分的现实对象的集合。
实体是具体的,例如:职工、学生、教师、学生的一次选课,部门的一次订货等等都是实体
实体在ER图中由矩形组成
属性
实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
例如:学生实体可以由学号,姓名,性别等属性组成。
属性在E-R图中由椭圆形组成
联系
在现实世界中,事务内部以及事务之间是有联系的,这些联系在信息世界中反映为实体内部的联系和实体之间的联系。
实体内部的联系通常是指组成实体的各属性之间的联系。两个实体型之间的联系可以分为三类:
- 一对一联系 (1:1): 如果对于实体集A中的每一个实体,实体集B中至多有n个体与之联系,反之亦然,则称实体集 A 与实体集 B具有一对一联系。记为 1:1
例如: 一个经理只能管理一个部门,一个部门只能有一个经理管理
- 一对多联系(1:n): 如果对于实体集A中的每一个实体,实体集B中有n个实体与之联系 ,反之,对于实体 B 中的每一个实体,实体集 A 中至多只有一个实体与之联系,则称实体集A与实体集 B有一对多联系。记为 1:n
例如: 一个部门有若干个职工,一个职工只能在一个部门工作,则部门与职工之间有1:n关系
- 多对多关系(m:n): 如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体A中也有m个实体 (m>=0)与之联系,则称实体集A与实体集B具有多对多联系。记为 m:n。
例如: 一门课程可以有多个学生选修,一个学生可以同时选修多门课程,则课程与学生之间具有多对多关系。
- 二个以上实体型之间的联系
实体型之间的这种一对一、一对多、多对多联系不仅存在于两个实体型之间,也存在于两个以上的实体型之间。例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的。
在ER图中,联系用菱形表示,菱形框内写明联系名,无向边将实体连接起来,旁边标明联系的类型(1:1,1:n或m:n)
其他的
键或码(key):唯一标识实体的属性集
唯一标识实体的属性集
例如:学号是学生实体的键
域: 属性的取值范围
域是指属性的取值范围
例如:比如学号的域为8位整数,姓名的域是字符串集合,年龄的域小于<120的整数
实体型: 实体名及其属性 相同的实体
具有相同性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
例如,学生(学号,姓名,性别,出生日期,系) 就是一个实体型。
实体集合:实体型的集合
同型实体的集合称为实体集。
例如:全体学术就是一个实体集。
2. 逻辑层模型
逻辑层模型:逻辑层模型也称为逻辑模型,是在概念模型的基础上,考虑数据在计算机系统中的存储和处理方式,进一步抽象出来的模型。逻辑模型描述了数据在计算机系统中的逻辑结构,如表格、文件等,通常使用关系模型,如关系数据库模型(RDM)和层次数据库模型(HDM)等。
传统的逻辑模型有三种,
层次模型
网状模型
关系模型
下面介绍关系模型中的一些基本术语:
关系
关系就是二维表,它满足如下条件:
- 关系中的每一列都是不可再分的基本属性. 例如表中的出生日期能够分成年月日,不是基本属性,不是关系
- 一个关系的各属性不能重名
- 关系中的行列顺序不重要,例如年龄跟性别更换次序,放在前后没影响
元祖
关系中的每一行数据称为元祖,它相当于一个记录值
属性
关系中的每一列是一个属性值的集合,称为属性名。
因此,关系是元祖的集合,如果有n列,则称关系为n元关系。
主码
主码也称为主键或者主关键字,是关系中用于唯一确定一个元祖的一个属性值或最小的属性组。
例如:学生表中的学号
有时候一个关系可能存在多个做主码的属性,比如学生表中,姓名不重复的话也可做主码,那么称这些属性是 候选码
,主码可以从候选码中挑选出来
域
属性的取值范围称为域
关系模式
二维表的结构称为关系模式
一般表现形式: 关系名(属性名1,属性名2,.....属性名n)
例如:表中 是 学生(学号,姓名,性别,年龄)
外码
当关系中的某个属性(或属性组)然不是这个关系的主键或只是主键的一部分,但却是另一个关系的主键时,称该属性(或属性组)为这个关系的外键或外码。
例如,学生(,姓名,性别,年龄,所在系)
课程(,课程名,教师)
选课(,,成绩)
这里面选课表中的学号,和课程号就是学生和课程的主码,是选课关系的外码、
超键或超码
如果在关系的一个键中移去某个属性,他仍然是这个关系的键,则称为这个关系的超键或超码。
每个关系至少有一个缺省的超键,即该关系的所有属性的集合,也是这个关系的最大超键。
全键或全码
一个关系模式的所有属性集合是这个关系的主键。
主属性和非主属性
关系中包含在任何一个候选键中的属性称为主属性或码属性,不包含在任何一个候选键的属性称为非主属性或非码属性。
参照关系与被参照关系
参照关系(Relerencing Relation) 与被参照关系 (Referenced Relation):参照关系也称从关系,被参照关系也称主关系,它们是指以外键相关联的两个关系。以外键作为主键的关系称为被参照关系:外键所在的关系称为参照关系。
由此可见,被参照关系与参照关系是通过外键相联系的,这种联系通常是1:n 的联系。
3. 物理层模型
物理层模型:物理层模型也称为物理模型,是在逻辑模型的基础上,考虑了数据在计算机系统中的实际存储和处理方式。物理模型描述了数据在磁盘或其他存储介质上的存储方式、存储位置和访问方式等。常用的物理模型有ISAM模型、B树模型、哈希模型等。
关系模型数据完整性约束 — 实体、参照、用户定义的
1、实体完整性约束
实体完整性约束(Entity Integrity Constraint)是指关系数据库中所有表必须有主码,并且不存在如下的记录:
- 无主码值的记录
- 主码值相同的记录
例如:学生表中学号不存在的元祖肯定不是正常的学生记录
2、参照完整性约束— 外码实现
表与表之间的联系,参照完整性就是描述实体与实体之间的联系的。
比如: 三个关系,其中主码用下划线标识。
学生(,姓名,性别,年龄,所在系)
课程(,课程名,教师)
选课(,,成绩)
这三个关系之间存在着属性的参照,也就是选课关系参照了学生关系的主键“学号”和课程关系的主键“课程号”,显然,选课关系的“学号”性与学生关系的主键“学号”相对应“课号”性与课关系的主键“课号”相对应。
因此“学号”和“课号”性都是选课关系的外键。这里学生关系和课程关系均为被参照关系,选课关系为参照关系,
不仅两个或两个以上的关系间可以存在参照关系,同一个关系的属性间也可能存在参照关系。
例如:上面学生关系中添加一个班长属性
学生(,姓名,性别,年龄,所在系,班长)
、其中,“学号”属性是主键,“班长”属性表示该学生所在班级的班长的学号,它参照了本关系中“学号”属性,即“班长”必须是确实存在的学生的学号。
在例中,“班长”属性与本关系的主键“学号”属性相对应,因此“班长”是外键。 这里学生1 关系是参照关系,也是被参照关系。
需要指出的是,外键并不一定要与相应的主键同名。不过,在实际应用中,为了便于识别,当外键与相应的主键属于不同关系时,往往给它们以相同的名字
3、域完整性约束—— 值域
是对属性的值域的约束,是指对关系中属性包括数据类型、精度、取值范围、是否允许空值、是否有默认值等。取值取值的正确性限制....
数据库的三级模式
数据库系统的三级模式结构是指数据库系统是由 外模式、模式和内模式
三级抽象模式构成,这是数据库系统的体系结构或总体结构.
如图所示。在数据库系统领域,一般不必深人到二进位或字节的级别看待数据,而是从文件级(物理级)开始,因为数据库系统往往是建立在文件系统基础之上的。三级抽象模式在数据库系统中都存储于数据库系统的数据字典中,是数据字典的最基本的内容,数据库管理系统通过数据字典来管理和访问数据模式。
模式 —— 概念模式
模式也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
它是数据库系统模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序以及所使用的应用开发工具及高级程序设计语言 (如 FORTRANC,COBOL等)无关。
模式实际上是数据库数据的 逻辑视图
。 一个数据库只有一个模式。
数据库模式以某一种数据模型为基础,统一综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
数据库管理系统提供了模式定义语言(DDL)来定义数据库的模式。
外模式
外模式也称为子模式或用户模式,它是数据用户 (包括应程序员和用户)能够看见和使用的局部的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
一个数据库可以有多个外模式。
由于它是各个用户的数据视图,如果不同的用户在应用求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述也就不同。即使对模式中的同一数据,在外模式中的结构、类型、长度、保密级别都可以不同。另一方面,同一外模式可以被某一用户的多个应用程序所使用,但一个应用程序只能使用一个外模式。
例如: 对于学生基本信息表来说,分配学生寝室部门的人可能关心的信息是学号,性别等....而学院管理人员可能关心的是学号,姓名,所在系....
因此,可以分别为这二类用户建立外模式:
- 宿舍部门(学号,姓名,性别)
- 院部(学号,姓名,所在系)
外模式是保证数据安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。
外模式通常是模式的子集,外模式处理的数据并不实际存储在数据库中,而仅可以从模式中构造出来,因此,外模式比模式的抽象级别更高。
例如: 假设职工关系模式
- 职工(职工号,姓名,所在部门,基本工资,职务工资,奖励工资)
如果不希望一般职工看到每个职工的“奖励工资”,则可以生成一个包含一般职工可以看的信息的外模式
- 职工(职工号,姓名,所在部门,基本工资,职务工资)
内模式
内模式也称为物理模式或存储模式。一个数据库只有一个内模式。
它是对数据物理结构和存储方式的描述,是数据库内部的表示方法。
例如,记录的存储方式是顺序存储、按照 B树结构存储还是 Hash 方法存;
索引按照什么方式组;
数据是否缩是否加密;
数据的存储记录结构有何规定等。
数据库的二级映射与数据独立性
为了能够在内部实现这三个抽象层的联系和转换,数据库管理系统在三个模式之间提供了以下二级映像
- 外模式/模式映像
- 模式/内模式映像
正是这二级映像能保证数据库中的数据具有较高的逻辑独立性和物理独立性。
数据独立性:
物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。
下面具体介绍:
1. 外模式/模式映像—— 逻辑独立性
模式描述的是数据库数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。
对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义该外模式与模式之间的对应关系。
这些映像定义通常包含在各自外模式的描述中。当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),则数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
例如:学生关系模式
- 学生(学号,姓名,性别,所在系,专业)
假设在此关系模式上建有外模式:
- 女学生(学号,姓名,专业)
则当学生关系模式发生变化,比如增加一个班号属性,则外模式女学生不需要有任何变化。因为该外模式的用户并不关心班号这一属性。
另外一种情况,假设学生关系模式的"专业"属性改名为"所学专业",这时就需要数据库管理员调整女学生外模式的"专业"属性,使其从原来与学生模式的“专业"属性对应改为与现在"所学专业"属性对应。
这些变化对使用外模式的用户是不可见的,这就是逻辑独立性的含义。
2. 模式/内模式映像—— 物理独立性
数据库中只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的
它定义数据库全局逻辑结构与存储结构之间的对应关系
例如,说明逻辑记录和字段在内部是如何表示的。
该映像定义通常包含在模式描述部分。当数据库的存储结构改变了(例如选用了另一种存储结构),由数据库理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据与程序的物理独立性,简称数据的物理独立性。
数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图即外模式,也独立于具体的存储设备。它是将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
数据库的外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改所以设计外模式时应充分考思到应用的扩充性。
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式,数据库的二层映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用求本身发生变化,否则应用程序一般不需要修改
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由 DBMS管理,用户不必考存取路径等细节,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。