[理学]数据库第一章

上传人:油条 文档编号:49790992 上传时间:2018-08-02 格式:PPT 页数:87 大小:819KB
返回 下载 相关 举报
[理学]数据库第一章_第1页
第1页 / 共87页
[理学]数据库第一章_第2页
第2页 / 共87页
[理学]数据库第一章_第3页
第3页 / 共87页
[理学]数据库第一章_第4页
第4页 / 共87页
[理学]数据库第一章_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《[理学]数据库第一章》由会员分享,可在线阅读,更多相关《[理学]数据库第一章(87页珍藏版)》请在金锄头文库上搜索。

1、数据库理论l数据库系统实现Hector Garcia-MolinaJeffrey D.Ullman著(美斯坦福大学)杨冬青 等译机械工业出版社数据库管理系统原理与设计Raghu Ramarkrishnan 著周立柱 等译清华大学出版社第第1 1章章 数据库及其发展概述数据库及其发展概述第一部分 数据库系统基础 第二部分 数据库的数据存储管理 第三部分 数据库查询处理第1章 数据库及其发展概述1.1 数据模型概述 1.2 几个典型的数据模型简介 1.3 数据库系统的体系结构 1.4 数据库系统的发展概况 1.5 关系数据库设计理论 1.1 数据模型数据模型定义l是描述数据如何表示、组织和操纵的概

2、念集合 l是数据特征的抽象表示,描述的是数据的共性 l是现实世界对象(或实体)、以及对象约束、对象 联系的逻辑组织 l几个典型的数据模型-关系数据模型 -面向对象数据模型 -E-R模型 l应满足的基本要求-能比较真实模拟现实世界 -易理解 -易于计算机上实现第1章 数据库及其发展概述1.1 数据模型概述 1.2 几个典型的数据模型简介 1.3 传统数据库系统的体系结构 1.4 数据库系统的发展概况 1.5 关系数据库设计理论 1.2 几个典型的数据模型简介 1.2.1 实体-联系数据模型(E-R模型) 1.2.2 关系数据模型 1.2.3 面向对象的数据模型1.2.1实体联系模型(E-R模型

3、)l实体与实体集 实体与实体集关系:Is member of 实体集间层次关系Is subset of/IS-A/extend- generalization E-R图中,实体集用外加矩形框的实体集名表示,无法表达实体集间的层次关系 l属性与码 l联系 实体联系模型(E-R模型 )l实体与实体集 l属性与码 通常每个实体集具有一组特征(属性);属性:Is part Of 实体集,E-R图中,属性用外加椭圆的属性名表示; 主码(Primary key)/候选码(Unique Attribute)/外码l若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码. l若一个关系有多个候选码

4、,其中任何一个都可以做主码,主码的诸属性就称为 主属性. l一个表中如果有一个字段,存储另外一个表的主键,这个字段就是外键,又 称外码。 l在关系模式A(城市,街道,邮编)中,只有知道了城市和街道或者街道和邮编才 能唯一的确定一个地址,在两个元组中,城市名,街道名,邮编号都有可能相同, 它们中的任何一个都不能唯一识别这个元组. l联系 实体联系模型(E-R模型 )l实体与实体集 l属性与码 l联系 实体集之间的对应关系,包括1对1、 1对、 对1或多对多的数量对应关系。 E-R图中,用外加菱形框的联系名(动词)表示一个联系; E-R模型图示例 1.2.2 关系数据模型1. 关系数据模型的提出

5、2. 关系数据模型的三个基本组成部分 3. 关系模型的特点 4. 关系模型的主要局限型 5. 关系模型的发展1. 关系数据模型的提出lCodd E.F(1970),首次提出。70年代也是关系数据库理论研究和RDBMS原型 开发的时代。l典型代表-有IBM公司SanJose研究室开发的System R-Berkeley大学研制的INGRES。l该阶段(20世纪70年代)的主要成果-奠定了关系模型的理论基础,给出了关系模型的规范说明 ; -研制了关系数据语言,包括SQL、QBE等; -通过原型研制,攻克了系统实现中的查询优化、并发控制 、故障恢复等一系列DBMS系统实现的关键技术; 2.关系模型的

6、三个基本组成部 分 l数据结构 -域(Domain) :字段的取值范围-关系(Relation) -关系元组 (Tuple, Record)-数据库模式(Schema)l关系操作 -数据的关系操作可用关系代数中的并、交、差、广义笛卡儿积,选择 、投影、连接等操作来表示。-关系操作的特点是集合操作,无论是操作对象还是结果都是集合(子 集) l完整性 -包括实体的完整性、参照的完整性和用户定义完整性,它们是关系模 型必须满足的约束条件,应由关系系统自动支持。 实体完整性l关系模型的实体完整性-CREATE TABLE中用PRIMARY KEY定义l单属性构成的码有两种说明方法 -定义为列级约束条件

7、-定义为表级约束条件l对多个属性构成的码只有一种说明方法-定义为表级约束条件 实体完整性定义例1 将Student表中的Sno属性定义为码(1)在列级定义主码CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) NOT NULL, Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(20);(2)在表级定义主码CREATE TABLE Student(Sno CHAR(9), Sname CHAR(20) NOT NULL,Ssex CHAR(2) ,Sage SMALLINT,Sdept CHAR(2

8、0),PRIMARY KEY (Sno); 例2将SC表中的Sno,Cno属性组定义为码CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade INT,PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/); 实体完整性检查和违约处理l插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:-1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改-2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改l检查记录中主码值是否唯一的一种方法是进行全表扫描参照完整性定义l关系模

9、型的参照完整性定义-在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码-用REFERENCES短语指明这些外码参照哪些表的主码参照完整性定义例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,( Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码 和Course表的主码 例3 定义SC中的参照完整性CREATE TABLE SC(Sno CHAR(9) NOT NULL, Cno CHAR(4) NOT NULL, Grade INT,PRIMARY KEY (Sno, Cno), /*在表级定义实体完整性*/FOREIGN KEY (Sno)

10、 REFERENCES Student(Sno), /*在表级定义参照完整性*/FOREIGN KEY (Cno) REFERENCES Course(Cno) /*在表级定义参照完整性*/);参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(例如Student)参照表(例如SC)违约处 理 可能破坏参照完整性 插入元组拒绝可能破坏参照完整性 修改外码值拒绝删除元组 可能破坏参照完整性拒绝/级连删 除/设置为空 值 修改主码值 可能破坏参照完整性拒绝/级连修改/设置为空值违约处理l参照完整性违约处理-1. 拒绝(NO ACTION)执行l默认策略-2. 级联(CASCADE)

11、操作-3. 设置为空值(SET-NULL)l对于参照完整性,除了应该定义外码,还应定义外码列是否 允许空值违约处理例4 显式说明参照完整性的违约处理示例CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT,PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE /*级联删除SC表中相应的元组*/ON UPDATE CASCADE, /*级联更新SC表中相应的元组*/FOREIGN KEY (Cno

12、) REFERENCES Course(Cno) ON DELETE NO ACTION /*当删除course 表中的元组造成了与SC表不一致时拒绝删除*/ON UPDATE CASCADE /*当更新course表中的cno时,级联更新SC表中相应的元组*/);用户定义的完整性l用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 lRDBMS提供,而不必由应用程序承担用户定义的完整性l1 属性上的约束条件的定义l2 属性上的约束条件检查和违约处理 l3 元组上的约束条件的定义 l4元组上的约束条件检查和违约处理1 属性上的约束条件的定义lCREATE TABLE时定义-列值非空(

13、NOT NULL)-列值唯一(UNIQUE)-检查列值是否满足一个布尔表达式(CHECK)属性上的约束条件的定义(续)l1.不允许取空值 例5 在定义SC表时,说明Sno、Cno、Grade属性不允许取空值。CREATE TABLE SC(Sno CHAR(9) NOT NULL,Cno CHAR(4) NOT NULL,Grade SMALLINT NOT NULL,PRIMARY KEY (Sno, Cno), /* 如果在表级定义实体完整性,隐含了Sno,Cno不允许取空值,则 在列级不允许取空值的定义就不必写了 * /); 属性上的约束条件的定义(续)l2.列值唯一 例6 建立部门表D

14、EPT,要求部门名称Dname列取值唯一,部门编号 Deptno列为主码CREATE TABLE DEPT(Deptno INT(2),Dname CHAR(9) UNIQUE,/*要求Dname列值唯一*/Location CHAR(10),PRIMARY KEY (Deptno);属性上的约束条件的定义(续)l3. 用CHECK短语指定列值应该满足的条件例7 Student表的Ssex只允许取“男”或“女”。CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY,Sname CHAR(8) NOT NULL, Ssex CHAR(2) CHECK (Sse

15、x IN (男,女) ) , /*性别属性Ssex只允许取男或女 */Sage SMALLINT,Sdept CHAR(20);用户定义的完整性l1 属性上的约束条件的定义l2 属性上的约束条件检查和违约处理 l3 元组上的约束条件的定义 l4 元组上的约束条件检查和违约处理2 属性上的约束条件检查和违约处 理l插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足l如果不满足则操作被拒绝执行 用户定义的完整性l1 属性上的约束条件的定义l2 属性上的约束条件检查和违约处理 l3 元组上的约束条件的定义 l4 元组上的约束条件检查和违约处理3 元组上的约束条件的定义l在CREATE

16、 TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制l同属性值限制相比,元组级的限制可以设置不同属性之间的取值的相互约束条件 元组上的约束条件的定义(续)例9 当学生的性别是男时,其名字不能以Ms.打头。CREATE TABLE Student(Sno CHAR(9), Sname CHAR(8) NOT NULL,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20),PRIMARY KEY (Sno),CHECK (Ssex=女 OR Sname NOT LIKE Ms.%)/*定义了元组中Sname和 Ssex两个属性值之间的约束条件*/);性别是女性的元组都能通过该项检查,因为Ssex=女成立;当性别是男性时,要通过检查则名字一定不能以Ms.打头用户定义的完整性l1 属性上的约束条件的定义l2 属性上的约束条件检查

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

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

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