-
关系数据库基本概念
一.关系
1.关系:关系数据库是由表的集合构成的,因此在关系数据库中,表又称为关系。
2.属性:表的每一列称为一个属性。
(1)一个有n个属性的关系,称为n元关系。
3.元组:表的每一行称为一个元组。
(1)元组的一个属性值称为分量。即分量是一行与一列(元组与属性)的一个交点。
4.关系实质是一张二维表,表格的每一行就是一个元组,每一列就是一个属性。
二.关系模式
1.关系模式就是对关系的描述,由关系名+属性集合构成。记作R(A1,A2,...An)。
例如:Student(Id,Name,Age,Dept)。
三.关系实例
1.关系实例是若干个关系元组的集合,可以看作是关系的一个子集,表示特定实例。
四.域
1.域就是一个属性的合法取值集合,每个属性都存在一个域。
例如:Student关系的Age属性的域是(>=0)。
五.键
1.超键:如果一个属性或多个属性构成的集合可以唯一地标识不同的元组,则称该属性或该属性集合为超键。
2.候选键:是最小的超键,或者说不含多余属性的超键。即保持超键特性的同时,只要再少一个属性就不再是超键。
(1)例如:Id是可以唯一标识Student关系的元组的属性,则(Id)既是超键也是候选键,但是(Id,Age)只是超键而不是候选键,因为Age并不是关系的唯一标识。
(2)候选键的每个属性称为主属性,不包含在任何候选键的属性称为非主属性。
3.复合键:如果候选键的属性个数在两个及两个以上,则称该候选键为复合键。
4.主键:在定义关系数据库的关系表时,选择一个最合适的候选键作为该关系的主键。
5.外键:若关系R1中的一个属性是另一个关系R2中的主键,则在R1中称该属性是参照R2的外键。
6.注意:
(1)上述提到的5种键,只有主键在一张关系表中是唯一的。一张表只能有一个主键,但可以有多个超键、候选键等。
(2)主键是唯一的,但不代表主键只有一个属性,主键也可以是复合键。
-
关系数据库语言
关系数据库语言包含 关系运算(关系代数和关系演算) 和 SQL。
一.关系代数(Relational Algebra)
1.关系代数是一种过程化查询语言,通过描述对关系的运算来表达查询、获取数据。
二.关系演算
1.关系演算是一种非过程化查询语言,通过描述想要获取的数据的信息来获取数据而无需给出运算过程。
三.SQL(Structured Query Language)
1.为了方便用户查询处理关系数据,定义了结构化查询语言SQL来处理了关系数据。
2.SQL是一种非过程化查询语言,但以关系代数作为理论基础。即介于关系代数和关系演算之间,作为用户与关系数据库直接交互的途径。
-
关系约束
关系约束可以分为 完整性约束 和 其他约束。
一.完整性约束
1.实体完整性约束(主键约束)
(1)关系中每个元组都必须是唯一且可区分的。通过实施主键取值约束实现。
(2)关系的主键必需是非空且唯一的。
若键K是关系R的主键,则K的取值在R中不能重复。
若键K是关系R的主键且K是复合键,则K的每个属性都不能为空。
2.参照完整性约束(外键约束)
(1)参照完整性约束用于不同关系实例间的引用情况。例如若实例A被另一个实例B引用,则:
插入:在B引用A前,A必须要先存在于数据库中。被参照实体先插入。
删除:在删除A前应当先删除B中引用A的实例。被参照实体后删除。
3.用户定义完整性约束
(1)用户定义完整性约束指用户根据具体的数据库应用场景,设置的具体约束条件。例如关系Student中,Name属性必需为非空,Age属性必需为非空且大于0。
二.其他约束
1.非空约束(not null):指关系中某一属性的取值不能为空值。
2.唯一约束(unique):指关系中某一属性的取值不能重复。
(1)主键约束和唯一约束都用于保证属性的唯一性。
(2)主键约束保证主键包含的属性必须是唯一且非空;唯一约束保证属性必须是唯一但可以为空。
(3)主键约束只能作用于一个候选键;唯一约束可以作用于任意属性。
3.自增长约束(auto_increment):指关系中某一属性取值自增长。
4.默认值约束(default):指关系中某一属性的取值为默认值。
5.检查约束(check):指关系中某一属性的取值必须满足一个指定条件的约束。
三.完整性约束与其他约束的理解
1.完整性约束偏向于规定关系的设计范式,而其他约束则偏向于对完整性约束范式的具体实现。
2.例如非空约束+唯一约束可用于实现主键约束,而其他约束中的每一种都可以用于用户实现用户定义完整性约束。
3.因此主键约束和唯一约束虽然在定义上相似,但从作用上来讲两者完全在不同的方向上。