数据库原理(二)——数据模型
【摘要】 数据库原理——基本数据模型
2 数据模型
2.1 层次数据模型
基本概念
记录型(黄色部分):所有的特征,可以理解为特征集。
记录(蓝色部分):记录型的实例对象。
字段:记录型中的单个特征,是层次数据模型的最小单位。
双亲子女关系(Parent-Chlid-Relationship,PCR):层次模型中最基本的数据模型,代表两个记录型之间一对多的关系。
冗余和虚记录
层次模型只有PCR关系,但是现实世界中有一些关系是多对多的。如果我们要使用PCR来表示多对多,则需要将原来一对多中的一复制多个副本,以此来达到多对多的目的。
为了防止PCR的浪费,层次模型中引入了虚记录的概念。若想表示多对多的关系,我们无须复制一份,只需要用一个记录变量引用原来需要复制数据的地址,用该记录变量我们叫做虚记录,虚记录通常用下标V表示,指针用虚线箭头表示。
2.2 网状数据模型
基本概念
记录:对应一个实体。
数据项:对应一个数据单元格。
多值数据项:可再分的数据项
数据库码(DBK):记录在内存中的地址。
系:用于数据间的n-n的联系。其中我们把一端称为首记录,另一端称为属记录;如一个班级中的学生,班级是首记录,学生是属记录,反之成立。
联系记录:一种代指自身的记录变量,可返回记录自身的数据库码。如经理既是员工的上级,也是老板的下级。
网状数据模型的实现方式
网状数据模型使用链表存储记录。首记录一般作为头结点,然后依次串连各个记录,每个记录都保存在链表的结点中。其中用于串连的指针可分为三种:
-
前向指针:必备,从头结点开始依次指向下一个记录。
-
后向指针:非必备,当出现后向指针时,链表变为双向链表
-
首记录指针:非必备,当出现首记录指针时,链表变为循环链表
单值系
如果一个系中只有一个首记录,即记录之间为1-n关系时,则我们称该系为单值系,或者称无首系。
2.3 关系数据模型
基本概念
-
关系数据模型:以集合论中的关系概念为基础发展起来的数据模型,以表为数据结构。
-
关系:一种特殊的二维表。
-
属性:元组个体共同拥有的特征
-
属性名:属性的实例,以后我们简称属性
-
属性域:属性对应的取值范围
-
元组:实体的实例对象
-
目:属性的大小
-
关系的描述:R(属性名1,属性名2…)
注:
-
关系严格来说不是表,而是一张加了==特殊限制的二维表==。因为根据数据库的范式理论,关系数据库必须满足第一范式——即不允许表中套表的情况出现。
-
既然满足集合论,则元组作为集合中的元素,其满足集合三大特性:无序性、确定性、互异性
-
NULL值不是0,这和我们一些高级编程语言的表达具有一致性,NULL表示不存在或不知道。
-
在实际情况中,空值会给数据库的访问和更新带来很多困难,所以我们应该尽量避免使用空值。
-
不同属性名可以具有相同的属性域,如生日和出生年份。
键
候选键:简称键。通俗来讲它是某个属性或属性组(两个数据以上)。通过这个属性我们可以唯一地确定某一个元组,且候选键中不包含候选键。如学生表(Sno,Sname)不是候选键,因为只需要Sno就可以唯一确定一条元组。
主属性:候选键包含的属性
非主属性:候选键不包含的属性
超键:可以确定元组,但不是候选键则为超键
主键:候选键任选其一为主键,其余为候补键
外键:通过表1的某个键可以找到表2的某个元组,则表1中该引用键称为外键。
注:
-
外键本质上值一个指针,通过它可以找到另外一张表上的元组,故外键必须非空。
-
主键唯一确定一条元组,故主键必须非空
-
由于键的英文为key,故有时候在其他的书上也被翻译为==码==。
2.4 约束
约束及其分类
约束:为了维持数据库中的数据一致性,使其能够准确地描述世界。
实体完整性约束:保证元组的确定性;即主键非空,如果主键为空则会丢失元组。
域完整性约束:属性值必须符合属性域。
参照完整性约束(引用完整性):关系中不允许引用不存在的实体。
用户定义的完整性约束:针对某一数据的约束条件,由应用环境决定。
注:实体完整性约束和参照完整性约束是关系模型必须满足的完整性约束条件
用户定义的完整性约束
年龄不可能是负的,性别不可能不男不女不人妖。为了限制具体数据,用户定义的完整性约束应运而生。常见的用户定义的完整性约束如下所示:
- NULL:代表空值,但是他不是一个值,不等于0,而是代表这里没有值。在以前我们是二值逻辑,即要么true要么false,引入NULL后,我们由二值逻辑变为三值逻辑。
- NOT NULL:不允许对应的属性值为空。
- Unique:不允许属性值重复,即列值不能重复。
- DEFAULT:如果属性值为空,则填个
默认值
上去。 - CHECK:限制具体值的条件;比如人的年龄不可能为负数,你可以加age>0。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)