关系模型的数据结构_第1页
关系模型的数据结构_第2页
关系模型的数据结构_第3页
关系模型的数据结构_第4页
关系模型的数据结构_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v1.0可编辑可修改关系模型的数据结构关系模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中称为关系。关系数据库是表的集合用关系表示实体以及实体间的联系的模型,称为关系模型,下面我们来看看关系模型中的基本术语1.关系关系就是二维表,它满足以下几个条件1)关系表中的每一列都是不可再分的基本属性。(有子属性,分开了,不是关系表)2)表中的各属性不能重名3)表中的行、列次序并不重要,即交换列的前后顺序(比如将性别放在年龄前面)不影响其表达的一个语义。2 .元组表中的每一行数据称为一个元组,它相当于一个记录值3 .属性表中的每一列是一个属性值的集合,列可以命名,称为属性名,属性与前面讲到的

2、实体属性(特征)或记录的字段意义相当。关系表中的每一行数据不允许完全相同,因为存储值完全相同的两行或多行数据并没有实际意义4 .主键主键也称主码或主关键字,是表中用于唯一确定一个元组的一个属性或最小属性组。主键可以由一个属性组成,也可以由多个属性共同组成。如表所示,学号就是此学生基本信息表的主键,因为它可以唯一地确定一个学生。而表所示的关系的主键就由学号和课程号共同组成,因为一个学生可以选修多门课程,而且一门课程也可以有多个学生选修,因此,只有将学号和课程号结合起来才能共同的确定一行记录。通常称由多个属性共同组成的主键为复合主键。表的主键与其实际应用语义有关,与表设计者的意图有关,如表,用(学

3、号,课程号)作为主键在一个学生对一门课程只能有一次考试的前提下是成立的,如果设定一个学生对一门课程可以有多次考试,则用(学号,课程号)作主键就不够了,因为一个学生对一门课程有多少次考试,则这个值就回重复多少遍,如果是这种情况,就必须为这个表添加一个“考试次数”歹I,同时作为主键有时一个表中可能存在多个可以作主键的属性,比如,对于学生信息表,如果能够保证姓名肯定不重复的话,那么姓名也可以作为学生基本信息的主键,如果表中存在多个可以作为主键的属性,则称这些属性为候选键属性,相应的键称为候选键,从中选一个作为主键都是可以的。5 .域属性的取值范围称为域。例如,大学生的年龄假设在1440岁范围内,则学

4、生的“年龄”属性的域就是(1440)关系模型的数据操作增删改查关系模型的数据完整性约束数据完整性是指数据库中存储的数据是有意义的,是正确的。主要包括三大类1)实体完整性是指的是关系数据库中所有的表都必须有主键,而且表中不允许存在以下两种情况(1)无主键值的记录(2)主键值相同的记录因为若记录没有主键值,则此记录在表中一定是无意义的。关系模型中的每一行记录都对应客观存在的一个实例或一个事实,比如,一个学号唯一地确定了一个学生,如果表中存在没有学号的学生记录,则此学生一定不属于正常管理的学生。另外,如果表中存在主键值相等的两个或多个记录,则这两个或多个记录会对应同一个实例,这会出现两种情况。第一,

5、表中的其他值也完全相同,则这些记录就是重复记录,存储重复的记录是没有意义的,第二,如果其他值不完全相同,则会出现语义矛盾,哪条记录才是真实的实体中每个具体的记录值(一行数据),比如学生实体中的每个具体的学生,称为实体的一个实例。2)参照完整性参照完整性有时也称为引用完整性。现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系(表)与关系(表)之间的引用关系。参照完整性就是描述实体之间的联系的。参照完整性一般是指多个实体或表之间的关联关系。比如表2-3中,学生选课信息表所描述的学生必须受限于表2-1学生基本信息表中已有的学生,不能在

6、学生选课信息表中描述一个根本就不存在的学生,也就是学生选课信息表中学号的取值必须在学生基本信息表中学号的取值范围内。这种一个表中某列的取值受限于另一个表的某列的取值范围约束的特点就称为参照完整性。在关系数据库中用外键(foreignkey,有时也称为外部关键字或外码)来实现参照完整性。例如,只要将学生选课表中的“学号”定义为引用学生基本信息表的“学号”的外键,就可以保证选课表中的“学号”的取值在学生基本信息表的已有“学号”范围内外键一般出现在联系所对应的关系中,用于表示两个或多个实体之间的关联关系。外键实际上是表中的一个(或多个)属性,它引用某个其他表(特殊情况下,也可以是外键所在(的表)的主

7、键,当然,也可以是候选键,但多数情况下是主键。下面举例说明如何指定外键例2-1】学生和专业可以用下面的关系表示,其中主键用下划线标识。学生(学匕姓名,性别,专业号,出生日期)专业(专业号,专业名)这两个关系之间存在着属性引用关系,即学生关系中的“专业号”引用了专业关系中的“专业号”,显然,学生关系中的“专业号”的值必须是确实存在的专业的专业号。也就是说,学生关系中的“专业号”引用了专业关系中的“专业号”,是引用了专业关系中的“专业号”的外键【例2-2】学生、课程以及学生与课程之间的选课关系可以用以下3个关系表示,其中主键用下划线标识。学生(S姓名,性别,专业号,出生日期)课程(课程号,课程名,

8、学分)选课(S课程号,成绩)这3个关系中,选课关系中的“学号”必须是学生关系中已有的学生,因此选课关系中号”引用了学生关系中的“学号”。同样,选课关系中的“课程号”也必须是课程关系中已有的课程,即选课关系中的“课程号”引用了课程关系中的“课程号”。因此,选课关系中的“学号”是引用了学生关系中的“学号”的外键,而“课程号”是引用了课程关系中的“课程号”的外键。主键必须是非空且不重复的,但外键无此要求。外键可以有重复值,这点从表2-3中可以看出。外键也可以取空值,例如,职工与其所在的部门可以用以下两个关系表小。职工(职工号,职工名,部门号,工资级别)部门(部门号,部门名)其中,职工关系的“部门号”

9、是引用部门关系的“部门号”的外键,如果某新来职工还没有被分配到具体的部门,则其“部门号”就为空值;如果职工已经被分配到了某个部门,则其部门号就有了确定的值(非空值)。3)用户定义完整性用户定义的完整性也称为域完整性或语义完整性。任何关系数据库管理系统都应该支持实体完整性和参照完整性,除此之外,不同的数据库应用系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体应用领域定义的数据约束条件,它反映某一具体应用所涉及的数据必须满足应用语义的要求。用户定义的完整性实际上就是指明关系中属性的取值范围,也就是属性的域,这样可以限制关系中属性的取值类型及取值范围,防止属性

10、的值与应用语义矛盾。例如,学生的考试成绩的取值范围为0100,人的性别的取值是男,女。关系规范化为什么要关系规范化观察这个表的数据,会发现有以下几个问题数据冗余问题:在这个关系中,有关学生所在系和其所对应的宿舍楼的信息有冗余,因为一个系有多少个学生,这个系所对应的宿舍楼的信息就要重复存储多少遍。而且学生基本信息(包括学生学号、姓名、性别、所在系)也有重复,一个学生修了多少门课,他的基本信息就重复多少遍。数据更新问题:如果某一学生从数字媒体系转到了信息管理系,那么不但要修改此学生的Sdept列的值,还要修改其Sloc列的值,从而使修改复杂化。数据插入问题:如果新成立了某个系,并且也确定好了此系学

11、生的宿舍楼,即已经有了Sdept和Sloc信息,但也不能将这个信息插入到表1中,因为这个系还没有招生,其Sno和Cno歹的值均为空,而Sno和Cno是这个表的主属性,因此不能为空。数据删除问题:如果一个学生只选了一门课,而后来又不选了,则应该删除此学生选此门课程的记录。但由于这个学生只选了一门课,则删掉此学生的选课记录的同时也删掉了此学生的其他基本信息。这些都是操作异常,为什么会出现操作异常呢,就是关系模式没有设计好。为了解决这类似的问题,我们就要按照关系规范化去进行设计。1.关系中的码例1:有关系模式:学生(学号,姓名,性别,身份证号,年龄,所在系)候选码为:学号,身份证号主键可以为“学号”

12、或者是“身份证号”。主属性为:学号,身份证号作主属性为:姓名,性别,年龄,所在系。例2:有关系模式:选课(学号,课程号,考试次数,成绩)设一个学生对一门课程可以有多次考试,每一次考试有一个考试成绩候选码为:(学号,课程号,考试次数),也为主键主属性为:学号,课程号,考试次数非主属性为:成绩。例3:有关系模式:授课(教师号,课程号,学年)其语义为:一个教师在一个学年可以讲授多门不同的课程,可以在不同学年对同一门课程讲授多次,但不能在同一个学年对同一门课程讲授多次。一门课程在一个学年可以由多个不同的教师讲授,同一个学年可以开设多门课程,同一门课程可以在不同学年开设多次。其候选码为:(教师号,课程号

13、,学年),因为只有(教师号,课程号,学年)三者才能唯一的确定一个元组。这里的候选码也是主键主属性为:教师号,课程号,学年没有非主属性。称这种候选码为全部属性的表为全码表。2.范式1NF第一范式(1NF)是指数据表中的每个字段必须是不可拆分的最小单元。2NF第二范式(2NFF是指满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情。这个是什么意思呢,意思就是说,表中除了主键的其他列,不能和主键没有关系,但其实这句话又有点相互矛盾,既然没关系,又怎么会放在同一列中呢,其实可以这样想,单独把这一列和主键拿出来,如果他们之间没有关系,那肯定是不

14、满足第二范式的。这是一张成绩表,包括学号、课程号、成绩和学分,主键为学号,但是单独将学分和学号拿出来,两个没有关系,所以不满足第二范式。第三范式(3NF)是指必须先满足第二范式(2NH,另外要求表中的每一列只与主键直接相关而不是间接相关。这个又是什么意思呢,似乎和第二范式的描述差不多啊,其实不然,还是有细微差别的,第三范式保证了表中的字段消除了传递依赖,比如C依赖于B,B依赖于A,那么C依赖于A,像这样的t青况不能让AB、C出现在同一个表中。可以看出,学院地点与学号不是直接相关连,学院地点和学院号直接相关连,所以不满足数据库第三范式。如何转换呢2NF函数依赖关系的分解过程有以下几个步骤可以用模

15、式分解的办法将非2NF的关系模式分解为多个2NF的关系模式。步骤用组成主键的属性集合的每一个子集作为主键构成一个关系模式将依赖于这些主键的属性放置到相应的关系模式中最后去掉只由主键的子集构成的关系模式例如,对S-L-C表,首先分解为如下的三个关系模式(下划线部分表示主键):S-l(Sno,.)C(Cno,.)S-c(Sno,Cno,.)然后,将依赖于这些主键的属性放置到相应的关系模式中,形成如下三个关系模式S-l(Sno,Sname,Ssex,Sdept,Sloc)C(CnO)S-c(sno,con,grade)最后,去掉只由主键的子集构成的关系模式,也就是去掉C(Cno)关系模式。SLC关系模式最终被分解的形式为:s-l(Sno,Shane,Ssex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论