SQL的数据关系模型的基本概念
2.1.1 二维表格的基本术语
考核要求:达到“识记”
层次知识点:主要是一些基本概念
(1)二维表格 在关系模型中,一张二维表格对应一个关系。
(2)元组(tuple) 表中的一行(即一个记录),表示一个实体;关系是由元组组成的。
(3)关系:是一个元数为K(K>=1)的元组的集合。 一张二维表格对应一个关系。表中的一行称为关系的一个元组;表中的一列称为关系的一个属性。
在关系模型中,对关系作了下列规范性的限制: 关系中每一个属性值都是不可分解的;
关系中不允许出现相同的元组(没有重复元组);
不考虑元组间的顺序,即没有行序;在理论上,属性间的顺序(即列序)也是不存在的;
但在使用时按习惯考虑列的顺序。
(4)超键(Super Key):在关系中能唯一标识元组的属性集称为关系模式的超键;
(5)候选键(Candidate Key):不含有多余属性的超键称为候选键;
(6)主键(Primary Key):用户选作元组标识的一个候选键。
在以上概念中,主键一定可作候选键,候选键一定可作超键;反之,则不成立。
比如,在学生表中,如果有“学号”、“姓名”、“出生年月”等字段, 其中学号是唯一的,那么(学号)属于超键,(学号,姓名)的组合也是超键。 同时,(学号)是候选键,而(学号,姓名)由于含有多余属性,所以不是候选键。 在这三个概念中,主键的概念最为重要,它是用户选作元组标识的一个关键字。 如果一个关系中有两个或两个以上候选键,用户就选其中之一作为主键。
2.1.2 关系模式、关系子模式和存储模式
考核要求:达到“识记”
层次知识点:三种模式的理解
(1)关系模式:关系模型的定义包括:模式名,属性名,值域名以及模式的主键。它仅仅是对数据特性的描述,不涉及到物理存储方面的描述。
(2)子模式: 子模式是用户所用到的那部分数据的描述。除了指出用户数据外,还应指出模式和子模式之间的对应性。
(3)存储模式:关系存储时的基本组织方式是文件,元组是文件中的记录。
几个模式的理解(教材30页的例子):
在教学模型中,有实体类型“学生”,其属性有学号S#、SNAME、AGE、SEX分别表示学生的学号、姓名、年龄、性别;实体类型“课程”的属性C#、CNAME、TEACHER分别表示课程号、课程名和任课教师名。学生用S表示,课程用C表示,S和C之间有M:N联系,联系类型SC的属性是GRADE.
关系模式为:
学生关系S (S#、SNAME、AGE、SEX)
课程关系C(C#、CNAME、TEACHER)
学习关系SC(S#、C#、GRADE)
以下则为关系子模式:
成绩关系子模式G (S#、SNAME、C#、GRADE,GRADE),它对应的数据来自关系S和SC.
2.1.3 关系模型的三类完整性规则
考核要求:达到“领会”
层次知识点:三类完整性规则的理解
(1)实体完整性规则 要求关系中元组在组成主键的属性上不能有空值。如果出现空值, 那么主键值就起不了唯一标识元组的作用。(对关系主键的约束)
(2)参照完整性规则 要求外键值必须是另一个关系的主键的有效值,或者是空值。 (对关系外键的约束) 外键:(外来关键字)将一个关系的主键(比如 学生关系S中的S#) 放到另一个关系(比如SC)中,此时称S#是关系SC的外键。
注意事项:
外键和相应的主键可以不同名,只要定义在相同值于域上即可;
两个关系可以是同一个关系模式,表示了属性之间的联系。
外键值是否允许空,应视具体情况而定
假设数据库有如下关系:
学生关系S (S#、SNAME、AGE、SEX)
课程关系C(C#、CNAME、TEACHER)
学习关系SC(S#、C#、GRADE)
那么(1)S#是关系S的主键,因此在关系S中不能为空;(实体完整性规则)
(2)C#是关系C的主键,因此在关系C中不能为空;(实体完整性规则)
关系SC中:
S#、C#的组合为主键,因此S#、C#不能为空;(实体完整性规则)
S#是来自S的外键,因此它必须和关系S中某个元组的S#相同。(参照完整性规则)
C#是来自C的外键,因此它必须和关系C中某个元组的C#相同。(参照完整性规则)
(3)用户定义的完整性规则:这是针对某一具体数据的约束条件,由应用环境决定, 例如,学生的年龄限制为15~30周岁。 用户定义的完整性规则反映某一具体应用涉及的数据必须满足的语义要求。 系统提供定义和检验这类完整性的机制。
2.1.4 关系模型的形式定义
考核要求:达到“识记”
层次知识点:三个组成部分的了解
关系模型有三个组成部分:
数据结构、数据操作和完整性规则关系模型的的数据结构是关系;
关系模型提供一组完备的高级关系运算(关系代数+关系演算),支持数据库的各种操作;
关系模型包括三类完整性规则。