关系数据库基本概念
关系的基本术语
(1)属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性。例如学生通过学号、姓名、性别、系别、年龄、籍贯等属性来描述。
(2)域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。例如,学号的域是6位整型数;姓名的域是10位字符;性别的域为{男,女}等。一般在关系数据模型中,对域还加了一个限制,即所有的域都应是原子数据(Atomic Data)。例如,整数、字符串是原子数据,而集合、记录、数组是非原子数据。关系数据模型的这种限制称为第一范式(First Normal Form,1NF)条件。但也有些关系数据模型突破了1NF的限制。
(3)目或度(Degree>:目或度指的是一个关系中属性的个数。
(4)候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组,则称该属性或属性组为候选码。
(5)主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个作为主码。
(6)主属性(Prime Attribute):包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性(Non-Prime Attribute )。
(7)外码(Foreign Key):如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
例如,客户与贷款之间的借贷联系c-l (c-id,loan-no),属性 c-id是客户关系中的码,所以c-id是外码;属性 loan-no是贷款关系中的码,所以 loan-no也是外码。
(8)全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。
例如,关系模式R(T,C,S),属性T表示教师,属性C表示课程,属性S表示学生。假设一个教师可以讲授多门课程,某门课程可以由多个教师讲授,学生可以听不同教师讲授的不同课程,那么,要想区分关系中的每一个元组,这个关系模式R的码应为全属性T、C和s,即ALL-KEY。
(9)笛卡尔积:
关系数据库模式
在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库结构的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
【定义6.2】关系的描述称为关系模式(Relation Schema)。可以形式化地表示为:
R (U,D,dom,F)
其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域; dom是属性向域的映像集合;F为属性间数据的依赖关系集合。
通常将关系模式简记为:
R (U)或R(A,A,A3,…,A,)
其中,R为关系名,A|,A,,A,,…,A为属性名或域名,属性向域的映像常常直接说明属性的类型、长度。通常在关系模式主属性上加下画线表示该属性为主码属性。
例如:学生关系S有学号Sno、学生姓名Same、系名SD、年龄SA属性;课程关系C有课程号Cno、课程名Cname、先修课程号PCno属性;学生选课关系SC有学号Sno、课程号Cno、成绩Grade属性。定义关系模式及主码如下(本题未考虑F属性间数据的依赖,该问题在后续内容讨论)。
(1)学生关系模式S (Sno,Sname,SD,SA)。
(2)课程关系模式C(Cno,Cname,PCno),Dom (PCno)=Cno。这里,PCno是先行课程号,来自Cno域,但由于PCno属性名不等于Cno值域名,所以要用Dom来定义。但是,不能将Pcno直接改为Cno,因为在关系模型中,各列属性必须取相异的名字。
(3)学生选课关系模式SC (Sno,Cno,Grade)。SC关系中的Sno、Cno又分别为外码。因为它们分别是S、C关系中的主码。
关系的完整性约束
完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。因此,完整性规则防止的是对数据的意外破坏。关系模型的完整性规则是对关系的某种约束条件。例如,若某企业实验室管理员的基本薪资小于2000元,则可用完整性规则来进行约束。
关系的完整性约束共分为3类:实体完整性、参照完整性(也称引用完整性)和用户定义完整性。
(1)实体完整性(Entity Integrity)。实体完整性规则要求每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值。
(2)参照完整性(Referential Integrity)。现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。
参照完整性规定:若F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值或者取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。
例如,某企业员工Emp关系模式和部门 Dept关系模式表示如下:Emp(员工号,姓名,性别,参加工作时间,部门号)Dept(部门号,名称,电话,负责人)
Emp和 Dept关系存在着属性的引用,即员工关系中的“部门号”值必须是确实存在的部门的部门号。按照关系的完整性规则,员工关系中的“部门号”属性取值要参照部门关系的“部门号”属性取值。如果新入职的员工还未分配具体的部门,那么部门号取空值。
注意:本书若在关系模式主属性上加实下画线,通常表示该属性为主码属性;如果在关系模式属性上加虚下画线,通常表示该属性为外码属性。
(3)用户定义完整性(User Defined Integrity)。就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用的环境决定。例如,银行的用户账户规定必须大于等于100 000,小于999 999。
待更新


还不快抢沙发