数据库关键技术.ppt
1,第3讲数据库关键技术,武汉大学国际软件学院,2,一关系模型二.主键和实体完整性三外键与参照完整性四.数据库语言SQL五.数据库设计,内容提纲,武汉大学国际软件学院,3,关系模型,武汉大学国际软件学院,4,关系模型,数据模型的概念数据模型(Data Model)是用来抽象、表示和处理现实世界中的数据和信息的工具。数据模型应该满足三方面要求:能比较真实地模拟现实世界容易为人所理解便于在计算机上实现一种数据模型要很好地满足这三方面的要求在目前尚很困难:多层次建模(概念模型、与计算机相关的数据模型)针对不同的使用对象和应用目的,采用不同的数据模型,武汉大学国际软件学院,5,关系模型,数据模型的类型决定数据库系统的类型数据模型是数据库系统的核心和基础,数据模型类型,DBS,武汉大学国际软件学院,6,关系模型,关系模型的三要素关系模型是一种与计算机相关的数据模型数据结构表数据操作传统的集合操作专门的关系操作数据约束条件实体完整性参照完整性用户自定义的完整性,武汉大学国际软件学院,7,关系模型,关系代数 是根据查询来生成新表的方法的集合关系代数的运算分成两种类型:集合运算,表实际上是“行”的集合,集合的运算是只涉及“行”的运算;专门的关系运算,既涉及到“行”,也涉及到“列”的运算。,武汉大学国际软件学院,8,主键和实体完整性,9,主键和实体完整性,超键 超键是能唯一区分任意两行数据的列或多个列例,在表students中,通过哪些列可以区别不同的学生?,students,lname,sid,fname,telephone,(lname,fname),(lname,fname,telephone),(sid,fname),包含超键的多个列都是超键,武汉大学国际软件学院,10,主键和实体完整性,键(候选键)能唯一标识表中每一行的属性或属性组。表在某一时刻的内容无法告诉我们表中的键是什么每个表都至少有一个键,武汉大学国际软件学院,11,主键和实体完整性,主键 主键是被数据库设计者选择出来作为表T的行的唯一性标识符的候选键键是客观的概念,主键是主观的概念例 下表中的键和主键是什么?,如果学校不允许重名,则键为sid,(lname,fname).可以任选一个作主键,如果学校允许重名呢?,武汉大学国际软件学院,12,主键和实体完整性,实体完整性规则 表T中的任意行在主键列的取值都不允许为空,武汉大学国际软件学院,13,主键和实体完整性,如何选择有效的主键?,sid 为主键?cno 为主键?(sid,cno)为主键?(sid,cno,major)为主键?,enrollment,(sid,cno,first)为主键?,(sid,cno,time)为主键?,主键的选择可能决定系统的功能,武汉大学国际软件学院,14,主键和实体完整性,创建表时定义主键,DBMS自动支持实体完整性定义表语句的基本语法CREATE TABLE 表名((NOT NULLNULL UNIQUE,NOT NULLNULL UNIQUE,PRIMARY KEY(,),FOREIGN KEY(,)REFERENCES);,武汉大学国际软件学院,15,外键和参照完整性,16,外键和参照完整性,外键设F是基本关系R的一个或一组属性,但不是R的键。如果F与基本关系S的键KS相对应,则称F是R的外键(Foreign Key),并称R为参照关系(Referencing Relation),S为被参照关系(Referenced Relation)。关系R和S不一定是不同的关系。,武汉大学国际软件学院,17,外键和参照完整性,参照完整性规则若属性(或属性组)F是基本关系R的外键,它与基本关系S的键KS相对应(关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:(1)或者取空值(F的每个属性值均为空值);(2)或者等于S中某个元组的主键值。,武汉大学国际软件学院,18,外键和参照完整性,实例例1 两个关系间学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名)例2 两个以上的关系间学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)例3 同一关系学生2(学号,姓名,性别,专业号,年龄,班长),武汉大学国际软件学院,19,外键和参照完整性,创建表时定义外键,DBMS自动支持参照完整性定义表语句的基本语法CREATE TABLE 表名((NOT NULLNULL UNIQUE,NOT NULLNULL UNIQUE,PRIMARY KEY(,),FOREIGN KEY(,)REFERENCES);,武汉大学国际软件学院,20,数据库语言SQL,武汉大学国际软件学院,21,数据库语言SQL,SQL的特点和功能高度的非过程化语言一体化面向集合的操作方式两种使用方式,统一的语法结构简洁易学,武汉大学国际软件学院,22,数据库语言SQL,SQL的数据定义语言,武汉大学国际软件学院,23,数据库语言SQL,DDL对数据库三级模式的支持,SQL,视图1,基本表4,基本表3,基本表2,基本表1,存储文件2,存储文件1,内模式,模式,视图2,外模式,武汉大学国际软件学院,24,数据库语言SQL,定义表语句的基本语法CREATE TABLE 表名((NOT NULLNULL UNIQUE,NOT NULLNULL UNIQUE,PRIMARY KEY(,),FOREIGN KEY(,)REFERENCES);,武汉大学国际软件学院,25,数据库设计,武汉大学国际软件学院,26,数据库设计,数据库逻辑设计的两类方法E-R模型建立概念模型,然后将概念模型转换成关系模型规范化设计方法,武汉大学国际软件学院,27,数据库设计,为什么需要概念模型(现实世界是复杂的),武汉大学国际软件学院,如何将现实世界的不规则的手工信息处理方式转换为规则的计算机信息处理方式?,28,数据库设计,为什么需要概念模型(隔行如隔山),武汉大学国际软件学院,需要一个简明易懂、无二义性且能描述信息处理现状的语言,数据库语言及高级程序语言,29,数据库设计,现实世界与E-R模型的概念对应 现实世界 E-R模型 关系模型,武汉大学国际软件学院,事物特征联系,实体属性联系,关系属性关系,30,数据库设计,简单E-R图实体用矩形表示简单的单值属性用椭圆形表示,并用直线连接到实体复合属性用椭圆形表示,并用直线连接到实体,同时组成复合属性的简单属性连接到复合属性上多值属性用双线连接到实体,武汉大学国际软件学院,31,数据库设计,简单E-R图,武汉大学国际软件学院,32,数据库设计,案例一个简单的航空定票数据库系统(只考虑一条航线的一端飞出的航班):,武汉大学国际软件学院,33,数据库设计,案例应用环境介绍:旅客已经明确他需要的航线,在定票时,他需要了解有哪些航班可以乘坐?每个航班是否还有票?剩下哪些座位可供选择?一旦买了机票,就确定了航班和在飞机上的座位号码。在旅客拿着机票,在飞机起飞之前到达飞机场后,可以查到登记口是哪一个。这些信息应该都可以从航空定票系统中获得。,武汉大学国际软件学院,如何确定定票系统中需要存放的信息及结构?,34,数据库设计,案例确定实体旅客、航班、登机口和座位,武汉大学国际软件学院,旅客:旅客需要提供身份证航班:航班包括航班乘务组、飞机、地勤人员以及起飞时间;登记口:登记口包括登记口编号及在飞机场的位置座位:座位包括座位号码和在飞机中的位置,35,数据库设计,案例确定实体的属性及与实体的关系,武汉大学国际软件学院,36,数据库设计,案例确定实体之间的联系旅客将乘坐航班旅行,而旅客也将得到飞机上的一个座位;一个航班上有很多座位;旅客要登上他的航班,要通过某个登记口;所以,一个航班对应着一个登记口;,武汉大学国际软件学院,37,数据库设计,案例确定实体之间的联系,武汉大学国际软件学院,38,数据库设计,案例确定实体之间的联系,武汉大学国际软件学院,39,数据库设计,为什么需要规范化设计现在要建立一个数据库来描述学生的借书情况,有这样一些属性:借书证号(S#)姓名(SN)所在系(SD)电话(PHONE)借阅的图书号(B#)借阅图书名(BN)借阅日期(DATE)用一个关系模式S(S#,SN,SD,PHONE,B#,BN,DATE)表示。,武汉大学国际软件学院,40,数据库设计,假定有这样一个关系:,设定主码为(S#,B#,DATE),武汉大学国际软件学院,41,数据库设计,冗余太大更新异常插入异常删除异常,一个学生借多本书“王铭”转系新生注册但没借书还掉了借的所有书,更新操作:,武汉大学国际软件学院,42,数据库设计,解决-将该模式分解下列成三个模式:S(S#,SN,SD,PHONE),B(B#,BN),SB(S#,B#,DATE),一个学生借多本书“王铭”转系新生注册但没借书还掉了借的所有书,解决前面的问题了吗?,?,?,能保证不再存在其它的更新异常吗?,武汉大学国际软件学院,43,数据库设计,出现更新异常的原因?-在这单个模式中存在某些不好的数据依赖,如函数依赖,多值依赖,武汉大学国际软件学院,44,数据库设计,规范化设计思想规范化是将属性分配给一个实体的过程,用以减少数据冗余和减少更新异常。这个过程实际上就是将一个低一级范式的关系模式,通过模式分解转换为若干个高一级范式的关系模式的集合的过程。,武汉大学国际软件学院,一个手工处理的表可能存在数据冗余和导致更新异常吗?,