关系模型 超键 候选键 主键
一、关系(二维表)
现阶段主要的商用数据库系统,如ORACLE,Sybase, DB2等,都是基于关系模型的数据库系统。关系模型应用广泛的原因之一就是它具有简单、明快的数据建模概念:以称为关系的二维表的形式结构数据。使数据库的结构和相关操作也都变得简洁和易于理解。
以教学管理系统为例,若定义三个实体集:学生(student)、课程(course)、学习(sc),则在关系数据库系统中可以使用图1-5的三个二维平面表描述。
Student
Course
SC
图1-5
为便于理解,我们讨论在文件系统和关系数据库系统中,分别是如何看待这三张平面表的。在文件系统中,上述三个二维平面表,称为三个文件(file)。由于各个文件均只含一种记录类型的纪录,所以称之为同质文件。表中的一行称为一个记录;表头的一行称为相应文件中记录的型;表中任一列中的每一个数据称为对应记录的一个数据项。在数据库系统中,对图1-5中三个平面表则是这样看待的:每一个二维平面表,称为一个关系(relation);表中的一行叫一个元组(tuple);表头的一行称为该关系的关系框架(framework);表中的一列对应一个属性;关系数据库要求每一属性对应一个特定数据类型,所以属性列在关系数据库中又称域;列中一个元素,是对应元组所描述的实体在该属性上的取值。
尽管文件系统和关系数据库系统在数据管理上具有质的区别,但在对客观世界进行数据描述这一根本的目的上它们是统一的,或说是一脉相承的:一个平面表描述一个实体集,描述实体集的数据在文件系统中叫文件,而在关系数据库中则叫关系;表中一行描述一个实体,描述实体的数据,在文件系统中叫记录,而在关系数据库中则叫元组;表中一列,描述实体集中各实体在相应属性上的取值,称它们是描述属性的数据,在文件系统中叫数据项,而在关系数据库中则称之为元组的分量。
二、关系模式
考察图1-5所示各关系的‘表头’,都是一个属性序列,如关系student的属性序列是(s#,sname,age,sex)。这种属性序列规定了被描述实体集要描述的性质,关系的属性既是相应列的名字,也是各元组分量的逻辑含义。例如,age是关系student的第三属性,从而规定了该关系所有元组的第三分量均为相应学生的年龄取值。但是从概念上讨论关系模式时,却不把关系框架中的属性序列视为列表,而把它视为属性集合,并且把关系名和关系的属性集合一起称为关系的模式。一般用圆括号把属性集括起来,把关系名写在括号前面,表示一个具体关系的模式。以图1-5关系student为例,其模式书写方式如下:
student (s#,sname,age,sex);
在关系模型中,一个数据库可以包含多个关系模式。我们在数据库设计中,把一个数据库包含的所有关系模式的集合,叫该数据库的‘数据库模式’。
三、其它关系模型的基本概念
1、元组
图1-5各关系中,一个数据行称为一个‘元组’。关系是元组的集合。所以,理论上,元组在关系中出现的次序是无关紧要的。但要注意:一个元组各分量的物理含义和数据类型是由关系框架中的属性列表及各属性的数据类型解释的,如图1-5 student关系的第一元组可记为:
(s1,张明,20,男)
该元组的语义是:在student实体集中有一个特定实体,其学号为s1,姓名为张明,年龄20,性别为男。
2、域(domain)
关系模型规定元组的每一个分量都必须是原子的,也就是它们必须属于某一基本的数据类型,如整型、实型、字符串型等。不允许元组中的任何分量值是结构类型的,如记录,数组,列表,集合等。实际上,关系的属性在数据库定义时,都具有与一般简单变量定义类似的类型说明,为每一个属性都定义了一个指定的数据类型,称之为该属性的值域(domain)。并且数据库管理系统限制元组每一分量均必须在指定值域内取值。这就是为什麽属性在关系数据库操作语言中,可以被当成变量(域变量)使用的理由。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 超键(Super Key):在关系中能唯一标识元组的属性集称为关系模式的超键;
2 候选键(Candidate Key):不含有多余属性的超键称为候选键;
3 主键(Primary Key):用户选作元组标识的一个候选键。
在以上概念中,主键一定可作候选键,候选键一定可作超键;反之,则不成立。
比如,在学生表中,如果有“学号”、“姓名”、“出生年月”等字段, 其中学号是唯一的,那么(学号)属于超键,(学号,姓名)的组合也是超键。 同时,(学号)是候选键,而(学号,姓名)由于含有多余属性,所以不是候选键。在这三个概念中,主键的概念最为重要,它是用户选作元组标识的一个关键字。 如果一个关系中有两个或两个以上候选键,用户就选其中之一作为主键。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
R(U, D, DOM, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM属性向域的映象集合,F为属性间数据的依赖关系集合。
举个例子来说, 比如表student里面有一个属性叫name 那么映射到域就是: private String name;
关系模式通常可以简记为:R(A1, A2, …, An)。其中R为关系名,A1, A2, …, An为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。