[工学]数据库应用技术本第3章

上传人:油条 文档编号:33595628 上传时间:2018-02-16 格式:PPT 页数:56 大小:356.50KB
返回 下载 相关 举报
[工学]数据库应用技术本第3章_第1页
第1页 / 共56页
[工学]数据库应用技术本第3章_第2页
第2页 / 共56页
[工学]数据库应用技术本第3章_第3页
第3页 / 共56页
[工学]数据库应用技术本第3章_第4页
第4页 / 共56页
[工学]数据库应用技术本第3章_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《[工学]数据库应用技术本第3章》由会员分享,可在线阅读,更多相关《[工学]数据库应用技术本第3章(56页珍藏版)》请在金锄头文库上搜索。

1、第3章 数据库规范化与完整性,学习目标: (1)理解关系模型、关系模式的概念 (2)理解关系运算的基本方法 (3)理解理解数据库完整性的概念 (4)掌握关系规范化理论,一、关系模型 关系模型是建立在严格的数学理论基础上、特点是采用模型概念单一,采集合操作,数学理论支持、数据完全独立。一个关系模型的逻辑结构就是一张二维表,它由行和列组成。,3.1 关系模型与关系模式,关系模型的几个术语:(1)关系:通俗讲关系就是一张二维表。 理论上讲关系是各属性域上的笛卡尔积的一个子集。(2)元组:二维表中的一行即为一个元组,也称为记录(即除二维表表头以外的每一行)。 元组 行 记录等价(3)属性:二维表中的一

2、列即为一个属性,也称字段。 属性 列 字段,关系模型的几个术语(序)(4)域:属性的取值范围。如性别属性的域为 男,女(5)主关键字(主键或主码):指表中的最少的属性或属性组,它的值可以惟一确定一个元组,称其为主键或主码。 如:学生(学号,姓名,性别,系,班级号) 主键(码)为学号 选课(学号,课程号,成绩),关系模型的几个术语(序)(6)外关键字:也称外键、外码,如果一个关系(R1)的某个属性或属性组是另一个关系的(R2)主键(主码),那么就称这个属性或属性组为R1的外关键字,或外键。 如:学生(学生号,姓名,性别,系,班级号) 班级(班级号,班级名,地址) 学生关系中的班级号为外码。 课程

3、(课程号,班级名) 选课(学生号,课程号,成绩) 选课中的学生号和课程号分别为外键。,二、关系模式 关系模式为对关系的描述,可简记为: 关系名(属性1,属性2, 属性n) 如学生关系为: 学生(学生号,姓名,性别,出生日期,专业,班级号)三、关系模式举例 学生(学生号,姓名,班级) 课程(课程号,课程名,学分) 选课(学生号,课程号,成绩),3.2 关系操作一、传统的集合运算 包括并、差、交和笛卡儿积等四种运算。设关系R和关系S具有相同的列数n(即两个关系都有n个属性),且相应的属性取自同一个域,则:并:RS= t | t R t S 结果仍为n列的关系,由属于R或属于S的元组组成。差:R-S

4、=t |t R t S 结果仍为n列的关系,由属于R而不属于S的所有元组组成。其中, t为结果集的任意元组。,一、传统的集合运算(续)交: RS=t | t R t S 结果仍为n目关系,由既属于R又属于S的元组组成。笛卡儿积:两个分别n目(列)和m目(列)的关系R和S的笛卡儿积是一个(n+m)目(列)的元组集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡儿积有k1k2个元组。 记作: RS= tR tS| tRR t s S,2、专门的关系运算(1)选择运算(): 从一个关系R中选择出满足条件的所有元组所构成新关系,且新

5、关系同R具有相同的结构。选择提供了横向划分关系的手段。表示方法:对关系R按F(t)条件做选择运算,用集合公式表示为: F(t)(R)= t |t R F(t)= true ,例1:查询年龄大于18的所有学生记录。,2、专门的关系运算(2)投影运算(): 从一个关系R中按所需顺序选取若干个属性构成新关系,投影提供了纵向划分关系的手段,且新关系的元组数必然小于等于原关系R中的元组数,因为要去掉在新关系模式下重复的元组。用集合公式表示:A(R)= t A | t R ,例2:在学生关系中查询学号和姓名。,2、专门的关系运算(续) (3)连接运算( ): 把两个关系(R和S)按相应属性值的比较条件连接

6、起来,如大于,小于等于、等于等,记作: R R.AS.B S。它是笛卡尔积的一个子集。R R.AS.BSR.AS.B(RS)=tR tS |tRR tSS R .AS.B=TRUE 自然连接:把两个关系按属性名相同进行等值连接,且结果中只保留一个同名属性。R S,R关系,S关系,专门的关系运算应用举例:,RS-笛卡尔积,R S -自然连接,R S-条件连接 R.BS.B,3、关系综合运算举例 设有学生、课程、选课三个关系 学生S(学号,姓名,性别,系) 课程C(课程号,课程名,学分) 选课SC(学号,课程号,成绩) 例: 1.查询“李明”选课的成绩; 2.查询选修了数据库课程的学生学号,姓名;

7、 3.查询未选“数据库”课程的学生学号,姓名。,3.3 关系的完整性一、关系完整性概述 关系完整性就是关系模型中数据的正确性、一致性和有效性。 关系的完整性包括实体完整性、参照完整性和用户定义完整性(域完整性)。 每种完整性都对应有相应的完整性规则,都需要用户在定义关系数据库时给出相应的定义。,3.3 关系的完整性 1.实体完整性(约束键码属性的取值) 关系的键码属性不能取空值。 例:学生(学生号,姓名,年龄,专业,籍贯),学生号为学生关系的主码,学生号属性不能取空值。 选课(学生号,课程号,成绩) 学生号和课程号取值均不能为空。,3.3 关系的完整性2.参照完整性(约束外键的取值) 规则为:

8、在两个参照和被参照关系中,参照关系中每条记录的外键的取值或者为空,或者等于被参照关系中某条记录的主码值。 例:课程(课程号,课程名,学分,系号), 系(系号,系名,系主任,办公电话) 课程中的系号为外键,课程中的系号取值要么为空,要么为系关系中主键系号的某个取值。,3.3 关系的完整性3.用户定义完整性(约束属性的取值范围)就是针对某一具体数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的定义要求。例:年龄的取值可以限定在18-60之间 成绩的取值可以限定在0-100之间等。总之,关系模型中存在完整性的约束,为了保证数据库的一致性和正确性,必须使数据库中的数据满足完整性的约束。,二、使

9、用约束实施完整性 SQL Server的主要约束类型:主码约束:Primary Key外码约束:Foreign key单值(惟一)值约束:Unique检验约束:Check用sp_helpcontraint 表名 来查看约束。,二、使用约束实施完整性 1.Primary Key-主码约束 CREATE TABLE 学生表1 (学号 char(8), 姓名 char(8),CONSTRAINT PK_学生表 PRIMARY KEY (学号) ) CREATE TABLE 学生表2 (学号 char(8) NOT NULL CONSTRAINT PK_学号 PRIMARY KEY NONCLUSTE

10、RED,姓名 char(8) NULL),二、使用约束实施完整性 2. Foreign Key-外键约束 CREATE TABLE 成绩表 (学号 char(8)NOT NULL CONSTRAINT FK_NO REFERENCES 学生表(学号) , 课程号 char(7) NOT NULL CONSTRAINT FK_Num REFERENCES 课程表(课程号) , 成绩 numeric(9,2) ),二、使用约束实施完整性 3. Default 约束 例:在成绩表的成绩属性上加约束。 ALTER TABLE 成绩表 ADD CONSTRAINT df_score DEFAULT 0

11、FOR 成绩 例:建表时创建约束 CREATE TABLE 成绩表(学号 char(8) NOT NULL, 课程号 char(7) NOT NULL, 成绩 numeric(9,2) CONSTRAINT df_score DEFAULT 0.0),二、使用约束实施完整性 4. Unique 约束 例:向学生表中添加单值约束。 ALTER TABLE 学生表1 ADD CONSTRAINT un_name UNIQUE(姓名) 例:建表时创建约束 CREATE TABLE 学生表2(学号 char(8) NOT NULL CONSTRAINT un_no UNIQUE, 姓名 char(8)

12、,二、使用约束实施完整性 5. Check 约束 例:建表时创建约束 CREATE TABLE 学生表4(学号 char(8) NOT NULL, 姓名 char(8)NOT NULL, 年龄 int CONSTRAINT chk_age CHECK (年龄17 and 年龄 26) ),二、使用约束实施完整性 6. 删除约束 ALTER TABLE 表名 DROP CONSTRAINT 约束名 例: ALTER TABLE 学生表 DROP CONSTRAINT un_name,三、使用规则实施数据的完整性 1.创建和删除规则 创建规则的语法结构: CREATE RULE 规则名 AS 条件

13、表达式 删除规则语法结构: DROP 规则名 例:创建学生的年龄必须在一定范围内的规则Age_rule。 CREATE RULE Age_rule AS MyAge BETWEEN 18 AND 28,三、使用规则实施数据的完整性 2.绑定规则 绑定规则和解除绑定规则的语法结构: sp_bindrule 规则名,表名.列名 sp_unbindrule 规则名,表名.列名 例: 将上面创建的规则与学生表的年龄绑定。 sp_bindrule Age_rule , 学生表.年龄 sp_unbindrule 学生表.年龄 3.删除规则 DROP RULE 规则名,四、使用默认值实施数据的完整性 1.创

14、建与删除默认 创建默认的语法如下: CREATE DEFAULT 默认值名 AS 默认值 删除默认的语法是: DROP 默认值名 例:CREATE DEFAULT def_date AS 1980-01-01 CREATE DEFAULT def_age AS 17,三、使用默认值实施数据的完整性 2.绑定默认 绑定规则的语法结构: sp_binddefault 默认值名,表名.列名 例: 将上面创建的默认与学生表的年龄绑定。 sp_bindefault def_age,学生表.年龄 解除绑定: sp_unbindefault 表名.列名,3.4 关系的规范化一、关系规范化的必要性例如:学生表的实例如下,上面学生关系模式的主键为(学号,课程名)上面学生关系模式中至少存在以下问题: 1.数据冗余 2.修改异常 3.插入异常 更新异常 4. 删除异常,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号