您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据库技术基础chp3
数据库技术基础第3章关系模型和关系数据库第3章关系模型和关系数据库3.1学习目标3.2关系模型3.3实体-联系模型向关系模型的转换3.4关系数据库实例3.5小结3.1学习目标学完本章后,读者应具备以下能力:理解关系模型的三要素。理解实体完整性的含义。能使用SQL语句建立和删除关系,维护关系中的数据。了解空值的含义。了解实体-联系模型向关系模型转换的一般原则。第3章关系模型和关系数据库3.1学习目标3.2关系模型3.3实体-联系模型向关系模型的转换3.4关系数据库实例3.5小结3.2关系模型关系模型的概念一种数据模型用于描述现实世界中的实体以及实体之间的联系由数据结构、操作和完整性约束规则三部分组成3.2关系模型3.2.1关系3.2.2基本操作3.2.3约束条件3.2.1关系学号姓名性别年龄所在院系2000712马翔男19计算机学院2007113刘大方男18管理学院2007256史玉明女19管理学院……表头表名列行表3.1学生花名册表格由以下部分组成:1.表名。每个表都会有一个名称,一般放在表的顶部,字体和字号通常和表格中的其他部分有明显的区别。表3.1的名字是“学生花名册”。2.表头。表3.1的第一行就是表头,它由多个列名构成,表示每一列可以出现的值的类型。3.从横向看,表由若干行组成;从纵向看,表由若干列组成。在每列上放一个允许的值,将这些值按照列的顺序排列,就得到了表中的某一行。3.2.1关系(续)关系由三部分组成:关系名,即表名。关系模式,即表头。关系实例,所有的数据行。注:由于关系和表的相似性,在某些场合也把关系叫做表,表是关系的同义词。3.2.1关系(续)元组一行数据叫做一个元组。码码是关系实例中的一个属性或一组属性,关系实例中的任何两个实例在码上的取值不能相同。主码多个码中被选中的码叫做主码。候选码多个码中没被选中的码叫做候选码。3.2.2基本操作表格的操作要绘制表格,写上表名、表头,画好水平线和垂直线,然后,填写上数据。某一行数据不再需要了,会将它从表中划去。某些数据发生了变化,会擦掉原来的数据,填写上新数据有时需要将新增加的数据填写到表中。3.2.2基本操作(续)关系的基本操作创建关系,相当于绘制表格。插入数据,即在表格中填写数据。更新数据,类似于修改表中错误的或修改数据。删除数据,如同从表格中划去不再有用的数据。查找数据,在表中查找满足一定条件的数据。删除关系,就像丢弃表格一样。3.2.2基本操作(续)建立关系模式在SQL语言中,用CREATETABLE建立关系模式。格式:CREATEEABLE表名(列名1数据类型,列名2数据类型,...列名n数据类型);3.2.2基本操作(续)注:列和列之间用逗号分开,所有的列放在一对小括号中,最后,以分号作为语句的结束符号。数据库中每个表的名字要唯一,不能和其他的表重名。每个表都要用PrimaryKey子句定义主码。CREATETABLE是保留字。图3.1创建关系student列名关键字提示信息分隔符结束符数据类型表名数据类型含义char(n)固定长度字符型数据,占用n个字符的存储空间varchar(n)变长数据类型,最多可以存储n个字符bigintintsmallinttinyint整数型,存储整型数的范围不一样,分别占用8、4、2、1个字节float浮点数,默认7位有效数字datetimesmalldatetime代表日期和一天内的时间的日期和时间数据类型,时间范围不一样nchar(n)nvarchar(n)nchar是固定长度Unicode数据的数据类型,nvarchar是可变长度Unicode数据的数据类型,二者均使用UNICODEUCS-2字符集binary(n)varbinary(n)固定长度(binary)的或可变长度(varbinary)的n位二进制数据类型。表3.2SQLServer常用的数据类型3.2.2基本操作(续)装入数据使用INSERT语句把表中的数据存入数据库中。格式1:INSERTINTO表名VALUES(列值1,列值2,……,列值n);格式2:INSERTINTO表名(列名1,列名2,……,列名n)VALUES(列值1,列值2,……,列值n);3.2.2基本操作(续)提示信息一行数据表名,分隔符;结束符列值图3.2向表中插入一行数据注:格式1中,VALUES子句中的第一个值赋予CREATETABLE中的第一列,第二个值赋予第二列,依此类推。3.2.2基本操作(续)一行数据列名列值图3.3INSERT语句的第二种形式空值一行数据列名图3.4INSERT语句的第三种形式注:一个INSERT语句一次只能向表中插入一行数据对于内容不确定的值,在数据库中用NULL(空值)表示主关键字不能为空数据类型必须一致3.2.2基本操作(续)删除数据如果不需要继续保存一个元组,可以使用DELETE语句从表中去除这个元组。格式:DELETEFROM表名WHERE条件;表名条件where子句from子句图3.5DELETE语句的格式3.2.2基本操作(续)修改数据格式:UPDATE表名SET列名=值WHERE条件的格式要修改的属性及新值图3.5UPDATE语句3.2.2基本操作(续)查询数据基本格式:SELECT*FROM表名WHERE条件;所有的列查询结果查询条件图3.6SELECT语句的格式3.2.2基本操作(续)删除关系格式:DROPTABLE表名;表名图3.7删除表student注:该语句是一旦被执行,关系的关系模式和关系中的元组就被删除,所占用的存储空间被数据库系统收回,无法恢复。3.2.2基本操作(续)3.2.3约束条件三类约束条件:实体完整性约束、参照完整性约束和用户自定义的完整性约束。实体完整性(EntityIntegrity):关系中任何一个元组的主码不能取空值。例如,在关系Student中有两个元组:2000712,马翔,男,19,计算机学院,刘大方,男,18,管理学院请注意,第二个元组的学号为空,学号是Student的主码。那么,可能他没有学号(刘大方同学可能刚入校,还没有得到一个学号),也可能是他有学号,但是,目前不知道是多少。如果允许这样的元组插入到关系中,潜在的危险是刘大方的学号可能是2007012。如果这样,两个元组的主码就相同,破坏了码唯一性的要求。第3章关系模型和关系数据库3.1学习目标3.2关系模型3.3实体-联系模型向关系模型的转换3.4事例关系数据库3.5小结3.3实体-联系模型向关系模型的转换一个实体型转换为一个关系。实体型的属性就是关系的属性,实体型属性取值的域就是关系的域(即数据类型),实体型的主码就是关系的主码。例如,学生实体型具有学号、姓名、性别、年龄和所在院系属性,年龄的域是正整数,其他属性的域是字符串。学生实体型要设计为一个关系,关系模式为:学生(学号,姓名,性别,年龄,所在院系)联系型的转换则有以下的不同情况:一个一对一联系型可以转换为一个独立的关系,也可以合并到任意一端的实体型中。•如果转换为一个独立的关系,则参与联系的各实体型的主码以及联系型本身的属性均转换为关系的属性,每个实体型的主码均是该关系的候选码,可以任选一个作为关系的主码。•如果合并到某一端实体型中,则需要在实体型对应的关系中增加另一个实体型的主码和联系型本身的属性。3.3实体-联系模型向关系模型的转换例如,图2.8中的联系型“拥有”描述了学生实体型和学生证实体型之间的一对一联系,学生实体型的主关键字是学号,学生证实体型的主关键字是学生证号。按照第一种方法,则创建一个关系,名字叫做拥有,具有学号和学生证号两个属性,如果将学号作为主码,则关系模式为:拥有(学号,学生证号)按照第二种方法,将联系型合并到学生实体型后,学生关系中要增加学生证实体型的主码,学生关系的关系模式改变为:学生(学号,姓名,性别,年龄,所在院系,学生证号)1..11..1学生学生证拥有3.3实体-联系模型向关系模型的转换图2.8学生与学生证之间的一对一联系一个一对多联系可以转换为一个独立的关系,也可以与多端对应的实体型合并。•如果转换为一个独立的关系,则参与联系的各实体型的主码以及联系型本身的属性均转换为关系的属性,而关系的主码为多端实体型的主码。•如果合并到多端的实体型中,则要在该实体型对应的关系中增加一端实体型的码。3.3实体-联系模型向关系模型的转换例如,图2.9中的“隶属于”联系型描述了班级实体型和学生班级实体型制之间的一对多联系。按照第一种方法,建立关系,关系名为隶属于,属性有学号和班号,主码是学号,关系模式为:隶属于(学号,班号)按照第二种方法,将联系型合并到学生实体型后,学生关系中要增加班级实体型的主码,学生关系的关系模式改变为:学生(学号,姓名,性别,年龄,所在院系,班号班级学生拥有班级的约束学生的约束3.3实体-联系模型向关系模型的转换图2.9班级与学生之间的一对多联系1n一个多对多联系型转换为一个关系参与联系的各实体型的主码以及联系型本身的属性均转换为关系的属性,各实体型的主码的组成关系的主码。课程选修学生mnm:n联系例如,图2.6中的联系型“选修”是一个多对多联系型,要设计为一个关系,关系的属性由学生实体型的主码学号、课程实体型的主码课程号和联系型本身的属性成绩组成,关系的主码是学号和课程号:选修(学号,课程号,成绩)三个或三个以上实体型间的联系型可以转换为一个关系,具体方法同上。具有相同主码的多个关系可以合并为一个关系。3.3实体-联系模型向关系模型的转换第3章关系模型和关系数据库3.1学习目标3.2关系模型3.3实体-联系模型向关系模型的转换3.4关系数据库实例3.5小结3.4关系数据库实例学生表:Student(Sno,Sname,Sgender,Sage,Sdept)其中属性Sno、Sname、Sgender、Sage和Sdept分别表示学号、姓名、性别、年龄和所在院系,Sno为主码。在后面,关系的主码下会有下划线作为标识。课程表:Course(Cno,Cname,Cpno,Ccredit)其中属性Cno、Cname、Cpno和Ccredit分别表示课程号、课程名、先修课号和学分,Cno为主码。学生选课表:SC(Sno,Cno,Grade)其中属性Sno、Cno和Grade分别表示学号、课程号和成绩,主码(Sno,Cno)。SnoSnameSgenderSageSdept2000712马翔男19计算机学院2007113刘大方男18管理学院2007256史玉明女19管理学院2007278龚兵男19管理学院2007014张晓敏女18计算机学院SnoCnoGrade20070121156802007113115689200725611569320070141156882007256113777200727811378920070121024802007014113690200701211367820070121137702007014102488CnoCnameCpnoCcredit1024数据库原理113641136离散数学112841137管理学41156英语61128高等数学6CourseStudentSC3.4关系数据库实例(续)图3.9学生-课程-选课数据库第3章关系模型和关系数据库3.1学习目标3.2关系模型3.3实体-联系模型向关系模型的转换3.4关系数据库实例3.5小结3.5小结关系数据库中以关系为单位存放数据,每个关系在数据库中有唯一的名称。和文件系统不同,关系数据库中既存放数据又存放数据的结构。关系模式描述数据的结构,由一组列名和数据类型对组成,它指出关系中每行数据由哪些列组成,每列的数据类型是什么。由于关系和二维表格的相似性,又把关系叫做表。每个关系都要定义一个主码,主码是一个属性或一组属性。关系中任何两个元组在主码上的取值不能相同。关系模型要求关系要满足实体完整性约束
本文标题:数据库技术基础chp3
链接地址:https://www.777doc.com/doc-3359584 .html