一概述:
(1)综述:
*按照数据模型的3要素:关系模型由关系数据结构、关系操作集合和关系完整性约束3部分组成。
*在关系模型术语中,关系用来指代表;元组指代表中的行;属性指代表中的列。
*关系有三种类型:
~基本关系(基本表):实际存在的表,是实际存储数据的逻辑表示。
~查询表:是查询结果对应的表。
~视图:是基本表或其他视图表导出的表,是虚表,不对于实际存储的数据。
(2)术语:
*域:对于关系的每个属性,都存在一个取值集合。称为该属性的域。
*候选码:若关系中某一属性组的值能唯一标示一个元组,则称该属性组为候选码。最简单候选码只包含一个属性,最极端包含全部属性(全码)。
*主码:若一关系有多个候选码,则选定其中一个为主码。主码应该选择那些值从不或极少变化的属性,
*主属性:候选码的诸属性称为主属性。不包含在主码中的属性称为非主属性或非码属性。
*外码:一个关系R1可能在它属性中包括另一个关系R2的主码,这个属性在R1上称为参照R2的外码。
二 关系操作:
(1)常用的关系操作:查询和插入、删除、修改。
三 关系完整性(保证数据的正确、有效、相容):
*任何关系数据库都必须支持实体完整性和参照完整性
(1)实体完整性:若属性A是基本关系R的主属性,那么A不能取空值。
1.定义:关系模型中的实体完整性create table中用primary key定义。两种方法:
*列级约束:只适合单个属性构成的码。例如:create table lyr(name varchar(20) primary key,age int)。
*表级约束:适合单个属性和多个属性的码。例如:create table lyr(name varchar(20),age int,primary key(name,age))。
2.实体完整性检查:
*检查主码值是否唯一,如果不唯一拒绝插入或修改。
*检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改。
(2)参照完整性:若属性(或属性组)F是基本关系的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:或者取空值;或者等于S中的某个元组的主码值。
1.定义:在create table中用foreign key定义那些列为外码,用references指明这些外码参照哪些表的主码。
*例如:create table lyr (name varchar(20),salary int,foreign key(name) references worker(name));
2.参照完整性检查或违约处理:
1.违反处理策略:
*拒绝(No Action)操作:不允许该操作执行。默认策略。
*级联(CASCADE)操作:当删除或修改被参照表的一个元组造成了与参照表的不一致,则删除或修改参照表中的所有造成不一致的元组。
*设置为空值:
当删除或修改被参照表的一个元组造成了与参照表的不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。
(3)用户自定义完整性:用户自定义的完整性是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。
1.属性上的约束:在create table的同时可根据需要定义属性上的约束条件,包括:
*列值非空(NOT NULL)。
*列值唯一(UNIQUE)。
*检查列值是否满足一个布尔表达式(CHECK)。
*注意:当往表中插入元组或修改属性的值时,DBMS检查属性上的约束条件是否满足,如果不满足,则拒绝操作。
2.元组上约束条件:在create table时可以使用check语句定义元组上的约束条件。
*注意:当往表中插入元组或修改属性的值时,DBMS检查元组上的约束条件是否满足,如果不满足,则拒绝操作。
(4)域上完整性限制:
(5)完整性约束命名子句:
*SQL在create table语句中提供了完整性约束命名子句CONSTRAINT,用来对完整性约束条件命名,从而灵活的增加、删除一个完整性约束条件。
1.完整性约束命名子句:
*格式:CONSTRAINT<完整性约束条件名>[PRIMARY KEY | FOREIGN KEY | CHECK]。
2.修改表中的完整性限制:使用drop table语句修改表中的完整性限制。
本文介绍了关系数据库中的数据模型要素及关系完整性概念,包括实体完整性、参照完整性和用户自定义完整性等,探讨了如何通过SQL语句实现这些完整性约束。
6605

被折叠的 条评论
为什么被折叠?



