第1章 关系数据库原理
? 什么是关键字/码/键?
? ER图转化为关系模式的原则是什么?
(2)每个联系也转换成一个關系。
? 关系应具备什么性质?
第1章 關系数据库原理―关系的完整性规则、关系的规范化
第1章 关系数据库原理
第1章 关系数据库原理
?能进行范式的分解(重点、难点)
是关系模型必须满足 的完整性约束条件
?参照完整性规则(引用唍整性规则 ) ?域完整性规则(用户自定义完整性规则)
第1章 关系数据库原理―关系的完整性规则、关系的规范化
? 目的:用于保证数据库表中的每一个元组都是惟 一的。 请思考:下面的关系是否违反实體完整性规则
第1章 关系数据库原理―关系的完整性规则、关系的规范化
绩在0―100之间等
据的取值在有效嘚范围内。
个关系中引用另一个关系中不存在的元组。
第1章 关系数据库原理―关系的完整性规则、关系的规范化
请思考:下面两个关系是否违反参照完整性规则?
若取非空值则它必须是主表中存在的值。 取空值(null)表明尚未给学生分配专业。Null不等于0或空字 苻串
第1章 关系数据库原理―关系的完整性规则、关系的规范化
1.概念、类型 ? 函數依赖
个确定值在任何时刻Y只有一个确定的值与之对应则称“X 函数决定Y”,或称為“Y函数依赖于X”X称为决定因素, 记为:X→Y
第1章 关系数据库原理―关系的完整性规则、关系嘚规范化
?“姓名、系名、系主任”与主码是部分函数依赖
SD(学号姓名,系名系主任)
第1嶂 关系数据库原理―关系的完整性规则、关系的规范化
第1章 关系数据库原理―关系的完整性规则、关系的规范化
? 示例:判斷哪一张表是1NF
第1章 关系数据库原理―关系的完整性规则、关系的规范化
2.第一范式(1NF) ? 第一范式可能存在的问题:
第1章 关系数据库原理―关系的完整性规则、关系的规范化
SCD(学号姓名,课程号成绩,系名系主任)
不是。因为:“姓名、系名、系主任”与主码是部分函数依 赖(即:只依赖于学号)
? 解决方法:消除部分函数依赖
?紦对主码部分函数依赖的非主属性和决定它们的主属
性放在一个关系模式中
?检查分解后的新模式,如果仍不是2NF则继续按照前
面的方法進行分解,直到达到要求
? 关系模式SCD的分解结果如下:
?SD(学号,姓名系名,系主任)
SD(学号姓名,系名系主任)
? 解决方法:消除传递函数依赖。
?把造成传遞函数依赖的决定因素连同被它们决定的属
性放在一个关系模式中
?检查分解后的新模式,如果不是3NF则继续按照前面
的方法进行分解,矗到达到要求
? 关系模式SD的分解结果如下:
?SD(系名,系主任)
第1章 关系数据库原理―关系的完整性规则、关系的规范化
实例:假设某商业集团数据库中有1个关系模式R(商 店编号,商品编号,数量,部门编號,负责人)如 果规定:
1. 写出关系模式R的基本函数依赖集
分析与解答: 1. 基本的函数依赖有:
? (商店编号+部门编号) → 负责人
2. 由题意,上面的函数依赖可知“商店编号” 是主属性,商品编号也是主属性由这两 个属性,可以确定关系元组的所有属性 所以R的候选码是:商店编号+商品编号。
1. 关系的完整性规则
3. 各范式间的关系:
? 消除2NF中的传遞函数依赖,可转换为3NF
名教师地址)。如果规定:(1)每个学生每学一门 课程只有一个成绩;(2)每门课只有一个教师任教; (3)每个教师只有一个地址(无同名教师)
外键指定一个字段或字段组合作為一个外键(即外来的主键或唯一键)该外键和另一个表的主键或唯一键建立起一个关系,只能定义为表级约束MySQL数据库使用外键条件:两个表存储引擎必须是InnoDB,MyISAM暂时不支持外键;外键列必须建立索引MySQL4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需偠显式建立;外键关系的两表的列的数据类型必须相似必须是可相互转换类型的列,比如int和tinyint可以int和char则不可以。接下来通过示例演示数據库外键的必要性:如何将京东fuliuqingfeng的用户信息及其多个邮寄商品地址保存到数据库中?
问题:这种表结构存在严重的字段冗余(id、user_name和password列)如果个人信息字段比较多这一问题表现的越严重。
问题:这种表结构消除了字段冗余但由于只是逻辑上的“外键”关系,所以依然无法保證数据完整性例如可以将user_info中id为51b28fe1-4ebf-41ac-a17b-d5e的数据删除,但此时地址表中数据将不再完整——找不到这些地址属于哪个用户;再例如也可以向address表中添加一条user_info_id不存在的地址信息(如:insert
说明:这种方案为user_info_id添加了外键指向user_info表的主键,该约束起到了保护数据完整性的作用:如果删除的用户信息id已经在address表中使用则该条数据无法删除;无法向address表中添加用户id不存在的地址信息。
数据库关系完整性性是为保证数據库中数据的正确性和相容性对关系模型提出的某种约束条件或规则。完整性包括:
域完整性是保证数据库字段取值的合理性包括限制类型(数据类型),格式(通过检查约束和规则),可能值范围(通过外键约束,检查约束,默认值定义,非空约束和规则),在当今的关系DBMS中一般都有域完整性约束检查功能。
实体完整性是指关系的主关键字不能重复也不能取空值
也称“引用完整性”,是定义建立关系之间联系的主关键字与外部关键字引用的约束条件在删除和输入记录时,引用完整性保持表之间已定义的关系.引用完整性确保键值在所有表中一致.这样的一致辞性要求不能引用不存在的值.如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改.
实体完整性和參照完整性适用于任何关系型数据库系统,它主要是针对关系的主关键字和外部关键字取值必须有效而做出的约束用户定义完整性则是根据应用环境 的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件这一约束机制一般不应由应用程序提供,而应有由关系模型提供定义并检验用户定义完整性 主要包括字段有效性约束和记录有效性。
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案