数据库系统实验课知识点讲解_第1页
数据库系统实验课知识点讲解_第2页
数据库系统实验课知识点讲解_第3页
数据库系统实验课知识点讲解_第4页
数据库系统实验课知识点讲解_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

数据库系统实验课知识点讲解——江叶春数据库基本概念几种键的概念数据完整性约束DDL和DMLJOINGroupBy和聚集函数数据库设计多重性约束ER模型向关系模型的映射规范化数据库基本概念数据库:长期存储在计算机内、有组织、可共享的大量数据的集合。数据库管理系统:位于用户与操作系统之间的一层数据管理软件。数据库系统:计算机引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员构成。几种键的概念事实上,关系模型不允许表格包含有重复记录。所以,一个表格里字段或者列的值必须是唯一的。唯一性可以通过检查key(关键字)来确定,关键字可以由一个单列或者列的组合构成,这样的列叫做compositekey(复合关键字)。关键字有很多不同的类型:studentNo(PK)ID(AK)namePhoneaddresscourseNo(FK)

a)超关键字(SuperKey):又称超键或超码,是能够唯一标识关系中每个元组的一个或一组属性的集合。超关键字能够唯一标识关系中的每个元组,但超关键字中可能包含多余属性,而人们一般对能够唯一标识元组的最小属性集合感兴趣,由此产生了候选关键字的概念。b)候选关键字(CandidateKey):又称候选键或候选码,它本身是超关键字但其任何子集都不是超关键字。或者说候选关键字是能够唯一标识关系中每个元组的一个或一组最小属性的集合。一个关系中也可能会有多个候选关键字。c)主关键字(PrimaryKey):又称主键或主码,是被选为唯一标识关系中各元组的候选关键字。d)辅关键字(AlternateKey):又称辅键或辅码或备选键,是没有被选为主关键字的候选关键字。e)外关键字(ForeignKey):又称外键或外码,设F为关系R中的某个属性或属性组,F可能不是关系R的候选键,但如果F与关系S(关系S与R可以是同一个关系)的主键PKs相对应(F取值与PKs取值相一致),则称F是关系R的外键。

这里列出来的关键字的类型并不是相互排斥的;一个关键字可以同时被归入多个类。从定义上说,每个表格必须至少有一个主关键字。数据完整性约束(1)实体完整性实体完整性约束要求基本关系的所有主关键字属性都不能为空,而不是主关键字整体不能为空。例如,对于学生选课关系(学号,课程号,成绩),显然,学号与课程号的组合“学号,课程号”为主键,按照实体完整性的要求,学号和课程号两个属性中的任何一个都不能出现空的现象。根据定义,主关键字是能唯一标识元组的最小属性集合,这就意味着主关键字的任何子集都不能唯一标识元组。如果允许主关键字的某个属性为空,这就暗示了唯一标识元组并不需要所有主关键字属性,这与主关键字的定义相矛盾。这也说明了关系模型实体完整性的约束是合理的。(2)参照完整性如果一个关系中存在某个外关键字,则该外关键字属性的取值应该与它所引用的主关系中的对应属性取值一致,或者为空。其实我们前面在介绍外关键字概念的时候,已经说明了这个问题。换言之,关系模型的参照完整性约束是通过外关键字来体现的。(3)用户定义完整性任何关系数据库系统都应该支持实体完整性和参照完整性,除此之外,不同的数据库系统根据其应用环境和领域的不同,可能还需要一些特殊的约束条件,用户定义完整性也称企业约束,就是为了满足这些特殊约束条件而定义的,它是让用户根据具体应用环境和领域来指定数据所需要满足的附件约束。用户定义完整性由数据库的用户根据数据库使用环境和领域所指定的附加规则。例如,学生关系模式Student(学号,姓名,身份证号,年龄,性别,学院编号,入学年份)中,根据应用环境要求,还可能要求学号属性必须为8位数字,或者要求年龄不能超过30岁等等。这些约束条件都是用户根据具体应用环境而附加的规则。关系模型应该向用户提供定义这类完整性约束的机制和方法,并能够按照用户定义的完整性约束条件对数据进行检验。不过,各种具体DBMS对用户定义完整性的支持程度可能因系统而异,有时需要应用程序和DBMS共同来保证用户定义完整性。DDL和DML1.DDL(数据定义语言):对结构进行的操作。比如create,drop,alter等。2.DML(数据操纵语言):对具体的数据进行的操作。比如update,delete,insert等。JOIN基本操作Join操作基本分为4大类:θ连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。不需要同名属性,可以使用using或on子句来指定连接条件。自然连接:同名属性的等值连接,故无须自己添加连接条件,并删除连接表中的重复列。外连接:返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录;rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录。左连接右连接全连接)Join操作的共性:第一步均为将所有参与操作的表进行了一个笛卡儿积,然后才依据各连接条件进行记录的筛选SQL>select*fromemployees;NAMEDEPARTMENT_IDSALARYGetz103000Davis201500King202200Davis305000Kochhar5000SQL>select*fromdepartments;DEPARTMENT_IDDEPARTMENT_NAME10Sales20Marketing30Accounts40AdministrationInnerjoin等值连接:不需要同名属性,可以使用using或on子句来指定连接条件,包括其中的重复列。SQL>select*fromemployeeseinnerjoindepartmentsdone.department_id=d.department_id;SQL>select*fromemployeese,departmentsdWheree.department_id=d.department_id;说明:内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件NaturaljoinSQL>select*fromemployeesnaturaljoindepartments;说明:自然连接是通过对参与表关系中所有同名的属性对取等(即相等比较)来完成的,故无须自己添加连接条件与外连接的区别在于对于无法匹配的记录外连接会虚拟一条与之匹配的记录来保全连接表中的所有记录,但自然连接不会LeftouterjoinSQL>select*fromemployeeseleftouterjoindepartmentsdone.department_id=d.department_id;-RightouterjoinSQL>select*fromemployeesrightouterjoindepartmentsusing(department_id);FulljoinSQL>select*fromemployeesfulljoindepartmentsusing(department_id);说明:[1]外连接必须使用on或using子句提供相应的连接条件[2]不能为using子句中所列举的列指定表别名,即使在groupby和select子句中也是如此[3]外连接规则:左连右补,右连左补,全连左右合并如:对表departments表进行右连接时,在两表完成笛卡儿积后再依据连接条件using(department_id)来筛选两表中department_id值相同的记录,但对DEPARTMENT_ID=40,employees表中没有与之匹配的记录,按常理此DEPARTMENT_ID=40所对应的记录将被抛弃,但就是为了保全连接表(departments表)中的所有记录就必须在employees表中虚拟出一条与之匹配的记录来保全连接表的所有记录,当然这条虚拟的记录显示时值全为null。聚集函数和GroupByAVG函数返回数值列的平均值。NULL值不包括在计算中。COUNT(column_name)函数返回指定列的值的数目(NULL不计入);COUNT(*)函数返回表中的记录数;COUNT(DISTINCTcolumn_name)函数返回指定列的不同值的数目;FIRST()函数返回指定的字段中第一个记录的值。(提示:可使用ORDERBY语句对记录进行排序。)MAX函数返回一列中的最大值。NULL值不包括在计算中。(MIN和MAX也可用于文本列,以获得按字母顺序排列的最高或最低值。)SUM函数返回数值列的总数(总额)。GROUPBY语句用于结合合计函数,根据一个或多个列对结果集进行分组。在SQL中增加HAVING子句原因是,WHERE关键字无法与合计函数一起使用。groupby有一个原则,就是select后面的所有列中,没有使用聚集函数的列,必须出现在groupby后面。数据库设计一般情况下,数据库设计包含三个主要阶段,它们分别是:概念设计、逻辑设计和物理设计。这三个设计阶段中的每个阶段将产生不同的结果模型,具有不同的用途和目的。1)概念设计概念设计是根据企业的目标,针对所设计系统中的数据需求建立模型的过程,它是数据库设计的第一个阶段,也是整个数据库设计的关键。在此阶段,通过对用户需求进行综合、归纳与抽象,形成一个独立于所有物理因素的模型,并且完全独立于实现细节,例如,数据库系统在实现中将采用的DBMS软件、应用程序结构、编程语言、硬件平台或其它任何实现上的考虑。概念设计的目的是充分挖掘系统对数据的需求,并进行归纳和抽象,在此基础上所建立的模型应该容易为设计人员和用户所理解,从而为设计人员和用户之间提供一个交流的桥梁,同时,该模型应该能够较准确表达用户需求,减少二义性。目前常用的模型是实体-联系(Entity-Relationship,ER)模型,后面将详细介绍这种模型。概念设计的结果将得到概念数据模型,通常为ER模型,它将是数据库设计下一阶段,即逻辑设计的信息来源。因此,在概念数据模型建立过程中,模型应该被测试并验证是否满足用户的需求。2)逻辑设计逻辑设计是将概念设计阶段所得到的概念数据模型转化为目标DBMS所支持的数据模型的过程。逻辑设计仍然与所有的物理因素无关,但它是针对特定数据模型进行设计的,建立在目标DBMS所支持的数据模型的基础之上。也就是说,逻辑设计是在知道目标DBMS所支持的基本数据模型的条件下进行设计的。因此,在建立逻辑模型之前,应该先确定最终的目标DBMS所支持的数据模型,例如,关系模型、层次模型、网状模型或者面向对象模型等,针对目标DBMS所支持的模型不同,概念模型转化所得到的逻辑模型结果也不相同。当前广泛应用的DBMS大部分都支持关系模型,因此,本书后面只重点讨论如何把概念模型转化为关系模型。逻辑设计的目的是根据目标DBMS所支持的数据模型的特点,把概念数据模型所表达的信息转化为用目标DBMS所支持的数据模型进行表达和描述。在逻辑设计阶段得到的数据模型应该容易为设计人员和支持该种数据模型的DBMS所理解,从而成为设计人员和某种DBMS之间的桥梁,另外,由于该模型能够为DBMS所理解和使用,因此它应该能够准确表达设计人员的意图,并且无二义性。逻辑设计的结果将得到逻辑数据模型,由于目前广泛应用的DBMS大部分为关系DBMS,支持关系模型,因此该阶段设计的结果通常为关系数据模型,它将是数据库设计下一阶段-物理设计的信息来源。在逻辑数据模型建立过程中,模型应该被测试并验证满足用户的需求,同时,它还应该满足它针对的特定的数据模型(关系模型)的要求和规范。本书后面将详细介绍针对关系模型的规范化要求。3)物理设计物理设计是对数据库在辅助存储上的实现进行描述的过程。包括描述数据库最终的文件组织、高效数据访问的方法,以及所有完整性约束和安全措施等物理实现细节。物理设计是数据库设计的最后阶段。在这一阶段,设计人员要确定如何面向具体DBMS最终实现该数据库。因此,在进行物理设计时,必须首先确定最终将要使用的具体DBMS,例如,Oracle、PostgreSQL或者SQLServer等。当前流行的DBMS大多采用固定的物理设计,它们能够自动选择高效的访问路径,能够自动优化性能,从而减少手工对性能调优的操作,而且这种趋势越来越明显。并且,DBMS也正向智能化方向发展,以方便用户操作和使用,减少用户对数据库的物理干涉。此外,由于物理设计跟具体DBMS密切相关,需要对具体DBMS有深入了解,不能一概而论。因此,仅着重对数据库设计的前两个阶段,即概念设计和逻辑设计进行讨论,这两个阶段在数据库设计中具有一定通用性。在数据设计过程中,概念设计和逻辑设计对一个系统的成功具有决定性影响,因为这两个设计阶段的结果代表了用户需求,它们的设计结果如果不准确或者与用户需求有偏差,将导致最终系统不能满足用户或企业的使用要求。数据库设计是一个反复修改和不断完善的过程,好的数据库设计应该能够根据需求变化作出相应调整,这也是一个好的数据库设计的标志。因此,在数据库设计阶段花费必要的时间和精力,从而得到尽可能好的数据库设计是值得的。概念数据库设计:ER建模技术工具:violet(FTP/ssd7/software目录下有),PowerDesign标识实体型标识联系型标识每个实体型和联系型的基本属性确定属性域简单属性or复合属性单值属性or多值属性是否为导出属性属性类型确定候选关键字以及主关键字确定联系的多重性约束基数约束(1还是n的区别)参与性约束(0还是1的区别)检查模型中的冗余验证局部概念模型与用户共同审查局部概念模型逻辑数据库设计:Removefeaturesnotcompatiblewiththerelationalmodel(optionalstep)Deriverelationsforlocallogicaldatamodel(ER模型向关系模型的映射)Validaterelationsusingnormalization(使用规范化方法验证关系模式)Validaterelationsagainstusertransactions(结合用户事务验证关系模型)Defineintegrityconstraints(定义完整性约束)Reviewgloballogicaldatamodelwithuser(与用户共同复查逻辑数据模型)下面首先对ER模型图形化建模过程中常用的基本建模元素逐一进行描述。1)实体与实体型实体(Entity)是现实世界独立存在并可以唯一标识的对象。实体型(EntityType)是一组具有相同属性的对象。在建模过程中,如果要表示每个实体以及实体之间的联系,那么模型将会由于企业中实体的众多并且联系细节的复杂而变得难以表述和理解。因此,ER模型建模过程中,通常仅对实体型以及实体型之间的联系进行标识,而不对每个实体以及实体之间的联系进行标识。一个实体的独立存在,既可以是物理上存在的对象,也可以是概念上存在的对象。例如,学生和教师都是物理上存在的对象,而学生选课情况或者银行账户,并不是物理上存在的实体,它们属于概念上存在的实体。不同实体型可以通过一个唯一的实体名和一组属性来区分,一个数据库通常包括很多实体型。在ER模型的图形化中,实体型用矩形表示,矩形里面标识该实体的名称,实体名通常为名词,英文一般用单数形式,实体名的每个单词第一个字母大写。图1显示了实体型Student和Class的图形化表示。图1Student和Class实体型的图形化表示2)联系与联系型联系(Relationship)是两个或更多实体间有意义的关联。联系型(Relationship)是实体型间一组有意义的关联,或者说联系型是一组相似的联系。前面在实体与实体型的定义中已经说明,在ER模型中,一般针对实体型标识,而不会针对具体实体个体进行标识。同理,ER模型一般针对联系型标识,而不会针对具体联系进行标识。对于联系和联系型,在不引起歧义的情况下,本书通常都使用“联系”一词表示。不同联系可以通过一个唯一的联系名来区分,有时联系也可能会有属性,一个数据库通常包括很多联系。在ER模型的图形化表示中,对于两个实体型间的联系,通常用连接两个实体型的直线表示,并在直线上方标识该联系的名称,联系名通常为动词或动词短语,与实体型一样,联系名每个单词的第一个字母大写。一个联系只应标记为一个方向,因此,在联系名确定之后,一般会在联系名旁边放置一个箭头符号来表示联系的方向。例如,图2标识了学生实体Student与课程实体Course间的选课联系Elects,它表示学生可以选修课程。图2联系的图形化表示两个实体间也可能会发生多于一种联系,在这种情况下,可以使用角色名来区分实体每次参与联系的角色。例如,图3标识了学生Student和班级Class两个实体间的两种联系。具体说,Student和Class两个实体间的一个联系是“学生管理班级”,在这个联系中,学生Student的角色为班长Monitor,它管理一个具体的班级Class。类似地,在联系“班级拥有学生”中,学生Student的角色为班级成员Member。当参与联系的实体在联系中的功能无二义性的情况下,通常不需要使用角色名。例如,对于两个实体间只有一种联系的情况下,参与联系的双方功能一般不会产生二义性,因此一般不需要标识角色名。图3两个实体间的两种联系联系除了可以在两个或者多个不同实体间发生外,也可以在同一个实体之上发生,称为递归联系。递归联系(RecursiveRelationship)是同一个实体型参与次数大于1的联系型,同一实体型每次参与的联系具有不同的角色。考虑教学信息数据库系统中的课程实体Course。假设对某一课程的学习可能需要具备一定的基础知识,也就是说课程可能具有先修课,而先修课也是一门课程。这时课程实体就与自身发生了联系。该课程实体两次参与联系所扮演的角色不同:一次参与的角色为后续课程;另一次参与的角色为先修课。在递归联系中,可以使用角色名来区别实体每次参与联系的角色。例如,图4标识了课程实体的递归联系。图4递归联系3)属性属性(Attribute)是实体型或联系型所具有的某一特性。例如,学生实体具有属性studentNo,name,sex等。每个属性一般都与一个取值集合相关联,这个集合称为域(Domain)。一个完整的ER模型应该包括其中每个属性的域。根据不同的分类方式,属性可以分为:简单属性和复合属性;单值属性和多值属性;导出属性等。(1)简单属性和复合属性简单属性是由单个部分组成的属性,复合属性则是由多个部分组成的属性,并且其中每个部分都可以独立存在。例如,学生实体Student的学号属性studentNo为简单属性,它由单个部分组成。如果学生实体具有家庭地址属性homeAddress,该属性很可能就是一个复合属性,因为它可能由某某省、某某市、某某路某某号组成,并且组成该属性的每个部分都是可以独立存在的。某个复合属性应由哪几部分组成,用户最终的使用需求可能起决定性作用。对于homeAddress属性,如果用户最终要求单独使用地址中的省和市(例如,用户有查询来自某某省或某某市学生的需求,就要求单独使用省和市),那么homeAddress属性就由省、市和具体地址三个部分组成;如果用户最终只要求单独使用地址中的省(如果用户查询学生时,只需要根据省查询,而不需要具体到市),不要求单独使用市,那么该属性可以看作由省和详细地址两个部分组成,其中详细地址包括了市以及具体地址。(2)单值属性和多值属性单值属性是指对于实体型中的每个实例(即每个具体实体),该属性只有一个取值。多值属性则指对于实体型中的每个实例(即每个具体实体),该属性可能有多个取值。大多数的属性都是单值属性,例如,学生实体的学号属性,对于每个学生该属性只能有一个取值,因此该属性为单值属性。如果学生实体有一个联系电话属性,并且每个学生的联系电话可能有两个或者更多(比如,宿舍电话,小灵通或者手机),那么该属性就为多值属性。多值属性的取值数目有时也有限制,例如,学生电话号码属性取值数目可以限制为1到3个。(3)导出属性导出属性是指可以由相关的一个或者多个属性之值通过计算得到的属性。导出属性对于实体来讲并不是必须的。例如,如果学生实体具有年龄属性age,而同时具有出生年份属性DOB,那么age属性就是一个导出属性,它可以由当前日期和出生年份属性DOB计算得到。某些情况下,一个实体的属性也可能由其它实体的属性导出。例如,如果学生实体具有平均学分积属性,该属性就可以由学生每门课程的成绩属性以及每门课程的学分计算而得到,而课程的成绩以及学分属性并不包含在学生实体中。4)强实体型与弱实体型在前面的介绍中,实体都是独立存在的。然而,在ER建模过程中,根据需要也可能会出现这样一种实体,它依赖于其它实体而存在,称之为弱实体,也就是说,实体型可以分为强实体型和弱实体型两种,下面分别予以介绍。强实体型指不依赖于其它的实体型而存在的实体型。我们前面在实体概念中介绍的实体型都指的是强实体型,例如,学生、课程与班级等实体型都属于强实体型。强实体型的一个显著特征是可以使用该实体型的主关键字唯一标识其中的每个实体,例如,学生的学号属性为主关键字,它能够唯一标识每个学生。弱实体型指依赖于其它实体型而存在的实体型。考虑这样一个例子,假设学生在学校期间可能获得各种奖励,也可能受到一些惩罚或者处分。在前面的例子中,曾经把奖惩记录作为一个多值属性设计,现在假设奖惩记录具有惩奖名称、惩奖级别与惩奖时间等属性,此时有必要将惩奖记录作为一个实体看待。不过该实体将是一个弱实体,因为它并不能够单独存在,而是依赖于学生实体的存在,即每个惩奖记录必须对应一个学生。图3.11显示了Student强实体与Honous弱实体之间的联系。弱实体型的一个特征是,仅使用该实体型本身的属性无法唯一标识该实体型中的每个实体。对于一个惩奖记录,它本身的三个属性惩奖名称、惩奖级别与惩奖时间都无法唯一标识每个实体,该实体只有与学生实体发生联系时才具有意义。弱实体有时也称为子实体、依赖实体或从属实体,强实体有时称为父实体、属主实体或支配实体。在ER模型的建模过程中,弱实体并不是必要的,考虑上面的例子,如果设计人员把惩奖记录作为学生实体本身的一个属性,那么惩奖记录这个弱实体将不存在了,但是应该注意,惩奖记录作为学生实体的一个属性时,它是一个多值属性,同时也可能是复合属性。需要说明的是,把惩奖记录作为一个弱实体或者作为学生实体的一个多值属性,并不会影响逻辑数据库设计的结果,也就是说,对于两种不同ER模型情况,它们转化为逻辑模型之后是相同的。多重性约束实体型间联系型的主要约束称为多样性约束(MultiplicityConstraints),它表示在一个特定的联系型中,一个参与联系的实体型中的某个个体,可能与另外一个参与联系的实体型中个体发生联系的数目或范围。由于数目或范围由最小数目和最大数目两个部分组成,因此,多样性约束实际上可以看作由两个独立部分组成的约束,即基数约束(CardinalityRatioConstraints)和参与性约束(ParticipationConstraints)。基数约束用来描述联系双方的实体型中,一方实体型中的实体可以与另一方实体型中某个实体发生联系的数目对比。基数约束有三种情况,分别为:一对一(1∶1)、一对多(1∶*)和多对多(*∶*)。例如,对于学生实体Student与班级实体Class之间的Manages联系,该联系应该是一个一对一的联系,它表示班长与班级之间是一一对应的关系,即一个班长只能管理一个班级,一个班级也只能有一个班长;对于班级实体Class与学生实体Student之间的Has联系,该联系应该是一个一对多的联系,它表示一个班级可以拥有多名学生;对于学生实体Student与课程实体Course之间的选课联系,该联系应该是一个多对对的联系,它表示一名学生可以选修多门课程,一门课程也可以被多名学生选修。参与性约束用来描述联系双方的实体型中,每一方实体型中的实体参与联系的最小数目,即是否每一方实体型中的所有实体都参与了联系。参与性约束有两种情况,分别为:强制参与(MandatoryParticipation)和可选参与(OptionalParticipation)。强制参与约束表示参与联系的一方实体型中的所有实体都参与了联系,而可选参与则表示参与联系的一方实体型中的部分实体参与了联系,即允许部分实体不参与联系。例如,对于班级实体Class与学生实体Student之间的Has联系,在该联系中,如果学生实体中的任一学生都必须属于某一个班级,也就是说学生实体中的每个学生个体都必须参与该联系,那么学生实体在该联系中是强制参与的。同样,在该联系中,如果规定每个班级至少拥有一名学生,那么班级实体在该联系中也是强制参与的。ER模型向关系模型的映射ER模型向关系模型的映射的步骤:S1:Strongentity(强实体)标识强实体及其包含的所有基本属性。S2:Weakentity(弱实体)标识弱实体及其所有基本属性(主键也必须被定义当与每一个主实体关系被映射后。)S3:1:*binaryrelationship(1:*二元关系)将1对应的实体的主键作为外键放到n对应的实体中,所有的关联属性也放到n对应的实体中。S4:1:1binaryrelationship(1:1二元关系)双方全部参与:合并成一个关系一方全部参与:将部分参与的实体的主键作为外键放到全部参与对应的实体中。双方部分参与:将参与性较弱的的实体的主键作为外键放到参与性较强的实体中。S5:1:1recursiverlationships(1:1递归联系)S6:Superclass/subclassrelationshiptypes(父类子类关系)S7:*..*binaryrelationship(多对多二元关系)将一个多对多拆成两个一对多,创建一个新的关系包含所有的关联属性,将每一个主实体的主键放到新的关系中做外键。S8:complexrelationshiptypes(复杂关系型)S9:Multi-valuedattributes(多值属性)创建一个新的关系去描述多值属性,将主实体的主键放到新关系中作为外键。具体映射过程实例,可参考SSD7带练习版本.chm的3.2.3节。规范化1NF:关系模式的所有属性都是不可分的基本数据项,即关系的每一行和每一列的相交部分(称为格)只能有一个值。满足1NF要求的关系或表称为规范化的关系或表,不满足1NF要求的关系或表称为非规范化的关系或表。2NF:对于关系模式R满足1NF(RÎ1NF,),如果R中的任意一个非主属性都完全函数依赖于码,则称关系模式R满足2NF的要求,记作记作RÎ2NF。3NF:关系模式R满足2NF(RÎ2NF,),如果R中的任意一个非主属性都不传递依赖于码,则称关系模式R满足3NF的要求,记作记作RÎ/r

温馨提示

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

评论

0/150

提交评论