Presentation is loading. Please wait.

Presentation is loading. Please wait.

第4章 数据控制功能和表间关系 4.1 数据控制功能 为了确保数据库中数据的正确有效以及数据库系统的有效运行,RDBMS提供了数据控制功能:

Similar presentations


Presentation on theme: "第4章 数据控制功能和表间关系 4.1 数据控制功能 为了确保数据库中数据的正确有效以及数据库系统的有效运行,RDBMS提供了数据控制功能:"— Presentation transcript:

1 第4章 数据控制功能和表间关系 4.1 数据控制功能 为了确保数据库中数据的正确有效以及数据库系统的有效运行,RDBMS提供了数据控制功能:
(1)数据的安全性控制。数据的安全性控制是指采取一定的安全保密措施以确保数据库中的数据不被非法用户存取。例如,RDBMS提供口令检查或其他手段来验证用户身份,合法用户才能进入数据库系统;RDBMS提供用户等级和数据存取权限的定义机制,系统自动检查用户能否执行这些操作,只有检查通过后才能执行允许的操作。 (2)数据的完整性控制。数据的完整性控制是指RDBMS提供必要的功能确保数据库数据的正确性、有效性和一致性。 (3)数据的并发控制。数据的并发控制是指RDBMS必须对多用户并发进程同时存取、修改数据的操作进行控制和协调,以防止互相干扰而得到错误结果。 本章将主要介绍与数据完整性控制有关的内容。

2 4.2 与数据完整性控制有关的字段属性 在前面,我们已经介绍了字段大小、格式、标题等字段属性。这里,我们将介绍与数据完整性控制有关的字段属性——输入掩码、有效性规则和有效性文本。 这3个字段属性能够尽可能地确保进入数据库的数据是正确、有效的。

3 4.2.1 输入掩码 使用输入掩码(Input Mask)字段属性,可以控制在表中字段的数据输入方式。
输入掩码使用一些特殊字符来规定输入某些必需的数据。 如果学校对学号编码的统一规定是“学号至多由10个字符组成,且每个字符可以是阿拉伯数字,也可以是英文字母,但不可以是其他字符”,则需要将“学号”字段的“输入掩码”属性设置为“aaaaaaaaaa”(10个a)。这样,当输入具体学号时,每个字符或者是阿拉伯数字,或者是英文字母,而不能输入其他字符。 输入掩码主要用于文本型字段和日期/时间型字段。 字符 说明 数字(0到9,必选项;不允许使用加号〔+〕和减号〔-〕) 9 数字或空格(可选项;不允许使用加号和减号) # 数字或空格(可选项;空白将转换为空格,允许使用加号和减号) L 字母(A到Z,必选项) ? 字母(A到Z,可选项) A 字母或数字(必选项) a 字母或数字(可选项) 密码 文本框中键入的任何字符都按原字符保存,但显示为星号(*)

4 4.2.2 有效性规则和有效性文本 有效性规则(Validation Rule)字段属性用于指定对输入到字段中的数据的要求,当输入的数据违反了有效性规则的设置时,可以使用有效性文本(Validation Text)向用户发送提示消息。 对于有效性规则属性,需要输入一个表达式以代表一个条件;而对于有效性文本属性,则输入文本串以文字化提示消息。

5 4.2.2 有效性规则和有效性文本 字段名称 字段属性 作用 属性名称 属性值 学号 输入掩码 aaaaaaaaaa 只允许在“学号”中出现阿拉伯数字或英文字母 性别 有效性规则 “男” or “女” 只允许“性别”用“男”、“女”两个汉字中的一个表示 有效性文本 输入性别有误,请重新输入! 如果试图输入除“男”或“女”之外的其他字符,则Access会给出相应的输入错误提示 身份证号码 A “身份证号码”中的前17位必须是阿拉伯数字,最后1位允许是阿拉伯数字或英文字母 入学成绩 >0 规定“入学成绩”必须大于零 入学成绩至少应该大于零! 如果试图输入小于等于零的“入学成绩”,则Access会给出相应的输入错误提示 应交学费 规定“应交学费”必须大于零 学费应该大于零! 如果试图输入小于等于零的“应交学费”,则Access会给出相应的输入错误提示 【练习4-1(P54)】根据上表设置“花名册”表中相应字段的属性,然后在数据表视图中输入相应的数据并观察相应字段属性的作用。

6 4.3 关系概念模型——E-R模型 存储在数据库中的数据反映了现实的业务情况和状态,而现实的业务问题往往是抽象和复杂的。为了将复杂的现实业务问题抽象、组织和转化为RDBMS支持的关系模型,往往需要首先根据业务问题建立概念模型,然后再在概念模型的基础上建立关系模型。

7 4.3.1 主要概念 实体(Entity):客观存在并可相互区别的事物称为实体。实体可以是具体的人和物(如学生、客户、供应商、产品、运货商),也可以是抽象的概念(如订单、课程)。 属性(Attribute):实体所具有的某一特性或性质。一个实体所具有的特征或性质可以用若干个属性描述。如一个产品实体可以用编号、名称、供应商、单位数量、单价、库存量和订购量等属性来刻画。 实体集(Entity Set):同类实体的集合。如各种产品实体就构成了一个产品实体集,所有客户就构成了一个客户实体集。 实体型(Entity Type):具有相同属性的实体必然具有相同类别的特征和性质。用实体名及其属性名集合来抽象和刻画的同类实体,称为实体型。例如,对于产品实体集,可以用如下实体型表示: 产品(编号、名称、供应商、单位数量、单价、库存量、订购量)

8 4.3.1 主要概念 联系(Relationship):指同一实体型内部实体之间的联系,或指不同实体型之间通过实体发生的联系。

9 4.3.2 关系概念模型的表示方法——E-R图 概念模型:客观现实在人们头脑中的反映,是对客观事物及其联系的一种抽象描述。
关系概念模型(简称关系模型):是关系数据库理论中描述客观事物及其联系的概念模型。 实体联系方法(Entity-Relationship Approach,E-R方法):用E-R图描述现实世界的关系概念模型,也称为E-R模型(P.P.S. Chen, 1976)。E-R图可以描述实体型、实体型具有的属性、实体型之间的联系一级联系的类型等多种信息。 E-R图中使用专门图形符号表示特定的含义: ①矩形框——实体型,在矩形框内标明实体型名称。 ②椭圆形——实体的属性,在椭圆形内标明属性名,并用无向边将其与相应的实体矩形框连接起来。 ③菱形——联系,在菱形内标明联系名,并用无向边分别与有关的实体矩形框连接起来,表明联系的类型。 ④如果一个联系也具有属性,则这些属性也要用无向边与该联系连接起来。

10 4.3.2 关系概念模型的表示方法——E-R图 设A、B为两个实体集, E-R图中表示实体型之间的三种联系:
①一对一联系(1:1):若对于A中的每一个实体,在B中至多有一个实体与之联系;反之,对于B中的每一个实体,在A中也至多有一个实体与之联系,则称实体集A与B之间具有一对一联系,记为1:1。 ②一对多联系(1:n):若对于A中的每一个实体,在B中有n个实体(n≥0)与之联系;反之,对于B中的每一个实体,在A中至多只有一个实体与之联系,则称实体集A与B之间具有一对多联系,记为1:n ③多对多联系(m:n):如果对于A中的每一个实体,在B中有n个实体(n≥0)与之联系;反之,对于B中的每一个实体,在A中也有m个实体(m≥0)与之联系,则称实体集A与B之间具有多对多联系,记为m:n。 总经理 公司 任职 1 (a)一对一联系 员工 部门 工作 n (b)一对多联系 学生 班级 隶属 课程 选修 m (c)多对多联系 产品 客户 购买

11 4.3.3 根据E-R图设计关系模式 【练习4-2(P58)】根据如图4-5所示的E-R图设计关系模式。
(1)根据实体型及其属性设计关于实体型的关系模式 。 (2)根据实体型之间的多对多联系设计关系模式。 客户 产品 客户ID 产品ID 产品名称 单位数量 单价 类别名称 类别说明 订购 m n 公司名称 联系人姓名 地址 邮政编码 电话 发货日期 订购日期 到货日期 数量 客户 产品 客户ID 产品ID 产品名称 单位数量 单价 类别名称 类别说明 订购 m n 公司名称 联系人姓名 地址 邮政编码 电话 发货日期 订购日期 到货日期 数量 客户ID 公司名称 联系人姓名 邮政编码 地址 电话 客户(客户ID、公司名称、联系人姓名、地址、邮编、电话) 客户ID 单价 客户 公司名称 数量 n 产品ID 订购日期 E-R图表示的关系概念模型能够很好地描述现实世界中的事物以及事物之间的联系,并且还可以根据E-R图设计关系模式。 订购(客户ID、公司名称、产品ID、产品名称、单位数量、单价、数量、订购日期、发货日期、到货日期) 订购 产品名称 m 发货日期 单位数量 产品 到货日期 产品名称 单位数量 产品ID 类别名称 类别说明 单价 产品(产品ID、产品名称、单位数量、单价、类别名称、类别说明)

12 4.3.3 根据E-R图设计关系模式 将相关实体的某些属性放入同一个二维表中将产生数据冗余(Data Redundancy),即同样的数据在同一张表中重复出现。 数据冗余问题会占用更多的存储空间、造成存储空间的浪费,而且还可能引起数据的不一致性问题。

13 4.3.3 根据E-R图设计关系模式 减少关系模式的数据冗余:
选择相关实体的主键作为关系模式中的属性,并将它们的组合做为主键或主键的组成部分; 保留多对多联系自身的属性。 外键/外码(Foreign Key):当某个属性(或属性组)不是关系R的主键或只是主键的一部分,但是另一个关系R’的主键,则称该属性(或属性组)是关系R相对于关系R’的外键/外码。 客户 产品 客户ID 产品ID 产品名称 单位数量 单价 类别名称 类别说明 订购 m n 公司名称 联系人姓名 地址 邮政编码 电话 发货日期 订购日期 到货日期 数量 客户 产品 客户ID 产品ID 产品名称 单位数量 单价 类别名称 类别说明 订购 m n 公司名称 联系人姓名 地址 邮政编码 电话 发货日期 订购日期 到货日期 数量 订购(客户ID、公司名称、产品ID、产品名称、单位数量、单价、数量、订购日期、发货日期、到货日期) 订购(客户ID、产品ID、单价、数量、订购日期、发货日期、到货日期)

14 4.3.4 关系模式的优化 根据E-R图,可以得到实体型和多对多联系的关系模式: 客户(客户ID、公司名称、联系人姓名、地址、邮编、电话)
订购(客户ID、产品ID、单价、数量、订购日期、发货日期、到货日期)

15 4.3.4 关系模式的优化 为了减少数据冗余,可将实体型中重复出现的属性值,且容易产生数据不一致性的字段提取出来,构成一个新的实体型。
同时,在新的实体型和提取的源实体型中添加关联属性。

16 4.3.4 关系模式的优化 经过对关系模式的进一步优化,可以得到新的E-R图 根据优化后的E-R图,为每个实体型设计关系模式:
客户(客户ID、公司名称、联系人姓名、地址、邮编、电话) 类别(类别ID、类别名称、类别说明) 产品(产品ID、产品名称、单位数量、单价、类别ID) 为“订购“多对多联系设计关系模式: 订购(客户ID、产品ID、单价、数量、订购日期、发货日期、到货日期) 客户 产品 客户ID 产品ID 产品名称 单位数量 单价 类别ID 订购 m n 公司名称 联系人姓名 地址 邮政编码 电话 类别名称 类别说明 1 包含 类别 发货日期 订购日期 到货日期 数量 注意:通常情况下,不需要为实体型之间的一对多联系建立专门的关系模式,可以通过关联属性建立联系。

17 4.3.4 关系模式的优化 进一步减少数据冗余的操作: 分析数据冗余 提取重复出现的字段,构造新关系
利用提取重复字段后剩下的字段再构造另一个新关系 “订单”关系 “订单明细”关系

18 4.3.4 关系模式的优化 在两个关系中都添加关联字段,使两者相互联系,确保数据的完整性。 优化后的关系模式:
客户(客户ID、公司名称、联系人姓名、地址、邮编、电话) 类别(类别ID、类别名称、类别说明) 产品(产品ID、产品名称、单位数量、单价、类别ID) 订单(订单ID、客户ID、订购日期、发货日期、到货日期) 订单明细(订单ID、产品ID、单价、数量)

19 4.3.5 实体表与联系表 关系模型 数据库 二维表是关系模型在关系数据库技术上的具体体现 实体 实体表 联系 联系表
“客户”实体表 实体 实体表 客户ID 公司名称 联系人姓名 联系人头衔 地址 城市 地区 邮政编码 TRAIH 伸格公司 林小姐 销售员 石碑路甲 141 号 深圳 华南 342356 VAFFE 中硕贸易 苏先生 销售经理 威成路 321 号 837206 VICTE 千固 销售代理 明成西街 471 号 秦皇岛 华北 598018 VINET 山泰企业 黎先生 结算经理 舜井街 561 号 天津 575909 WANDK 凯旋科技 方先生 销售代表 使馆路 371 号 212400 联系 联系表 雇员ID 姓氏 名字 头衔 尊称 出生日期 雇用日期 地址 城市 1 销售代表 女士 复兴门 245 号 北京 2 副总裁(销售) 博士 罗马花园 890 号 3 芍药园小区 78 号 4 建杰 先生 前门大街 789 号 5 销售经理 学院路 78 号 “雇员”实体表 实体与联系是关系模型中的两个重要概念 实体代表了一类具有相同属性的事物或人群 联系反映了实体之间的内在联系 根据所描述对象的不同可以将关系数据库中的表分为实体表和联系表。 实体表:描述实体的表 联系表:描述实体之间联系的表 订单ID 客户ID 雇员ID 订购日期 到货日期 发货日期 10248 VINET 5 10249 TOMSP 6 10250 HANAR 4 10251 VICTE 3 “客户”实体和“雇员”实体的联系表——“订单”表

20 4.4 表间关系 二维表(尤其是实体表)中的数据具有一定的独立性:不需要借助其他数据就可以直接从不同角度描述特定实体的一些性质。
不同二维表中的数据之间又存在一定的内在联系:通过表之间的数据联系,可以将数据库中多个表联结为一个有机的整体,使多个表相互对应。 掌握二维表之间的内在数据联系,将有助于提高从数据库中提取信息的效率。

21 4.4.1 表间关系的基本概念及类型 不同二维表中的数据之间的内在联系,是以“关联字段”为纽带,通过表间关系体现和实现的。
关联字段能够在两个相关表之间建立联系,进而将相关表中的数据联系起来。 通过关联字段“供应商ID”将“供应商”和“产品”两个表联系起来 供应商ID 公司名称 联系人姓名 联系人头衔 地址 城市 地区 邮政编码 国家 电话 1 佳佳乐 陈小姐 采购经理 西直门大街 110 号 北京 华北 100023 中国 (010) 2 康富食品 黄小姐 订购主管 幸福大街 290 号 170117 (010) 3 妙生 胡先生 销售代表 南京路 23 号 上海 华东 248104 (021) 4 为全 王先生 市场经理 永定路 342 号 100045 (020) 5 日正 李先生 出口主管 体育场东街 34 号 133007 (010) 产品ID 产品名称 供应商ID 类别ID 单位数量 单价 库存量 订购量 1 苹果汁 每箱24瓶 ¥18.00 39 2 牛奶 ¥19.00 17 40 3 蕃茄酱 每箱12瓶 ¥10.00 13 70 4 ¥22.00 53 5 麻油 ¥21.35 如果A表和B表之间的关系是一对多关系,则称A表为主表(或父表),B表为子表。 在主表和子表之间建立一对多关系的关联字段是主表中的主键,而在子表中则是外键。 在一对多表间关系中,主表定义了关联字段的取值范围,而子表只能引用主表中关联字段的值。

22 4.4.2 创建和编辑表间关系 【练习4-4(P67)】创建“供应商”表和“产品”表之间的一对多表间关系。
(1)在主表—“供应商”表的设计视图中设置主键。 (2)打开“关系”窗口:在菜单栏中执行“工具”|“关系”命令。 (3)在“关系”窗口中添加表。 (4)创建并保存表间关系。 (5)在“关系”窗口中,用鼠标左键双击相关表之间的连线,可以重新打开“编辑关系”对话框;如果有必要,可以在“编辑关系”对话框中重新设置有关选项。用鼠标右键单击相关表之间的连线,在弹出菜单中选择“删除”命令,则可以删除已建立的表间关系。

23 4.4.3 参照完整性 可实施参照完整性的表间关系必备的3个条件: ①在主表和子表中,关联字段有相同的数据类型;
②在主表中已经将关联字段设置为主键; ③在子表中,每条记录在关联字段上的值或者为空值,或者等于主表中某条记录的主键值。 参照完整性是数据完整性控制的另一项重要措施

24 4.4.3 参照完整性 参照完整性是一个规则系统,该规则系统可确保主表和子表之间记录对应关系的有效性,并不会意外删除或更改相关数据。
成功实施参照完整性后,在父表或子表中的数据操作应该遵守以下3条规则。: 规则1:不能在子表的关联字段中输入不存在于主表的主键中的值。 规则2:如果在子表中存在对应的记录,则不能从主表中删除相应记录。 规则3:如果在子表中存在对应的记录,则不能在主表中更改相应记录的主键值。 【练习4-5(P69)】在对“供应商”和“产品”一对多表间关系实施参照完整性的基础上,验证上述3条规则。

25 4.4.4 级联更新相关字段和级联删除相关记录 在关系数据库中,主表和子表中的记录之间存在着一定的逻辑对应关系,而参照完整性就可以确保这种记录之间逻辑对应关系的正确性和有效性。 出现的新问题:更新主表中的主键值、或者删除主表中的记录都有可能破坏主表与子表之间的数据完整性。 解决问题的思路:但如果在对主表中记录进行更新或删除操作的同时,对子表中的记录也进行相应的更新或删除操作,则仍然可以保持主表与子表之间的数据完整性。 解决问题的办法:Access中的“级联更新相关字段”规则和“级联删除相关记录”规则就提供了相应的解决措施。 “级联更新相关字段”规则是指,在主表中修改关联字段(主键)值时,自动更新子表中对应关联字段的值; “级联删除相关记录”规则是指,在主表中删除记录时,自动删除子表中的对应记录。 在关系数据库中,主表和子表中的记录之间存在着一定的逻辑对应关系,而参考完整性就可以确保这种记录之间逻辑对应关系的正确性和有效性。更新主表中的主键值、或者删除主表中的记录都有可能破坏主表与子表之间的数据完整性。但如果在对主表中记录进行更新或删除操作的同时,对子表中的记录也进行相应的更新或删除操作,则仍然可以保持主表与子表之间的数据完整性。Access中的“级联更新相关字段”规则和“级联删除相关记录”规则就提供了相应的解决措施。

26 4.4.4 级联更新相关字段和级联删除相关记录 【练习4-6(P70)】在对“供应商”和“产品”一对多表间关系实施参照完整性的基础上,再设置“级联更新相关字段”规则和“级联删除相关记录”规则,并验证这两条规则。 (1)规则设置。 在关系数据库中,主表和子表中的记录之间存在着一定的逻辑对应关系,而参考完整性就可以确保这种记录之间逻辑对应关系的正确性和有效性。更新主表中的主键值、或者删除主表中的记录都有可能破坏主表与子表之间的数据完整性。但如果在对主表中记录进行更新或删除操作的同时,对子表中的记录也进行相应的更新或删除操作,则仍然可以保持主表与子表之间的数据完整性。Access中的“级联更新相关字段”规则和“级联删除相关记录”规则就提供了相应的解决措施。

27 4.4.4 级联更新相关字段和级联删除相关记录 (2)验证“级联更新相关字段”规则。 (3)验证“级联删除相关记录”规则。

28 4.5 业务数据分析的前期准备工作 对于业务数据分析人员来说,数据库技术的价值在于能够帮助他们更加有效地处理、利用和分析业务数据,以达到从众多的明细业务数据中获得有用信息、并利用这些信息辅助经营管理决策的目的。

29 4.5.1 明确字段的业务含义和数据类型 正确理解每个字段的业务含义、并明确每个字段的数据类型,可综合运用三种方法:
方法1.查阅数据库应用系统的开发手册或使用手册。 方法2.查阅数据字典(Data Dictionary)。 在Access数据库中,表的设计视图就相当于一种数据字典。 方法3.咨询业务处理人员。

30 4.5.1 明确字段的业务含义和数据类型 “产品”表 “订单明细”表 字段名称 数据类型 说明 产品ID 自动编号(长整型)
自动赋予新产品的编号,且每个产品都有唯一的编号 产品名称 文本 供应商ID 数字(长整型) 与供应商表中的“供应商ID”含义相同 类别ID 与类别表中的“类别ID”含义相同 单位数量 定义了产品大件的包装形式。例如,24装箱、一公升瓶 单价 货币 罗斯文公司内部制定的销售价格 库存量 数字 目前库存中尚有的货物单位数 订购量 已经向供应商发出订购申请的货物单位数 再订购量 为保持安全库存所需的货物最小单位数 中止 是/否 “是”表示条目不可用,即该产品已经停止销售 不太容易理解的字段是“产品”表中的“再订购量”字段,该字段的含义是“为保持安全库存所需的货物最小单位数”,即最低库存量。当某产品当前的“库存量”低于“再订购量”时,罗斯文公司就会向相应供应商发出货物采购申请。此外,“再订购量”是一个相对稳定的数值,不会经常变动,而“库存量”则是一个随采购和销售活动不断变化的数值——每当收到来自供应商发来的货物时,“库存量”就会相应地增加;而每当有销售业务发生,“库存量”则会相应地减少。 “订单明细”表 字段名称 数据类型 说明 订单ID 数字(长整型) 与订单表中的“订单ID”含义相同 产品ID 与产品表中的“产品ID”含义相同 单价 货币 雇员向客户销售产品的报价 数量 数字 折扣

31 4.5.2 建立数据库所反映的业务模型 数据库中存储的大量业务数据隐含着特定的业务模型。
业务模型在一定程度上能够反映数据库中业务数据的含义及业务数据之间的内在联系。 1.罗斯文公司是一个贸易公司,有多个供应商向罗斯文公司提供货物(产品),一个供应商可能提供多种货物(产品)。换句话说,罗斯文公司可以从一个供应商采购多种产品; 2.罗斯文公司向多个客户销售多种产品,这些客户都是一些公司客户(而不是以家庭为单位的普通消费者),其中一些老客户会向罗斯文公司反复订货。并且,一个公司客户一次通常会从罗斯文公司订购多种产品; 3.在一次交易中,客户以订单的形式向罗斯文公司购买多个产品。在一次交易中,罗斯文公司会选派一名雇员专门负责处理该订单的所有相关业务及与客户的联系; 4.罗斯文公司与(3家)运货商签定了长期的货物(产品)配送协议。协议规定,由运货商按照要求完成向客户的送货任务。

32 4.5.3 基于E-R图的业务规则分析 E-R图有助于更好地理解数据库中业务数据之间的联系。
1.一个供应商(实体)可以提供多种产品(实体)。因此,供应商(实体型)与产品(实体型)之间是一对多联系; 2.客户(实体型)与产品(实体型)之间是多对多联系,即一个客户可以订购多种产品,一种产品可以被多个客户所订购; 3.由于客户(实体型)与产品(实体型)之间是多对多联系。所以,需要专门建立一个“订单”表以体现客户(实体型)与产品(实体型)之间的多对多联系,“订单”表因此就是一个联系表。同时,也可以将“订单”看作一个抽象的实体型; 4.罗斯文公司的一个雇员可以负责多张订单的处理业务,但一张订单只能由一个雇员负责。因此,雇员(实体型)与订单(实体型)之间是一对多联系; 5.一个运货商可以承担多张订单的产品配送任务,但一张订单中所有产品的配送任务只是交由一个运货商完成。因此,运货商(实体型)与订单(实体型)之间是一对多联系; 6.产品分为不同的类别,因此,类别(实体型)与产品(实体型)之间也就是一对多联系; 7.在一个订单当中包含了多个产品,因此,订单(实体型)与订单明细(实体型)之间也就是一对多联系。

33 4.5.4 基于关联字段的表间关系分析 基于对字段业务含义、数据类型的分析和理解以及对业务模型、业务规则的细致分析,可归纳“罗斯文”示例数据库中的表间关系: 注意:在Access关系数据库中,建立表间关系的关联字段不需要有相同的名称,但必须有相同的数据类型、并具有相同的字段含义 父表 (主表) 子表 关联字段 表间关系类型 主键(父表) 外键(子表) 供应商 产品 供应商ID 一对多 类别 类别ID 客户 订单 客户ID 雇员 雇员ID 运货商 运货商ID 订单明细 订单ID 产品ID “罗斯文”示例数据库中的表间关系都是一对多的。实际上,在任何一个关系数据库中也存在类似的情况——表间关系大都是一对多的,而很少出现一对一的表间关系。另外,一对多表间关系中的关联字段,在父表中是主键,而在子表中则是外键。

34 4.5.5 创建表间关系 在明确了数据库中的表间关系及相关的关联字段之后,还需要利用RDBMS软件所提供的功能创建表间关系。
在Access中,通过在菜单栏中执行“工具”|“关系”命令、并在“编辑关系”窗口中编辑关系等操作可以创建表间关系。 注意:在“关系”窗口中创建表间关系之前,必须先在设计视图中设置父表的主键。

35 4.5.5 创建表间关系 父表中的主键在一对多表间关系中起着关联字段的重要作用。 在Access数据库中,可定义三类主键:
(1)自动编号主键:如果在保存新建表时没有设置主键,Access将询问是否创建主键。如果回答为“是”,Access将创建自动编号主键。 (2)单字段主键:在实体表中,通常将相应的实体ID设置为主键。 (3)多字段主键:在 “订单明细”表中,“订单ID”和“产品ID”的组合值具有唯一性,所以可将其组合设置为主键。 具有多字段主键的表通常是以子表身份出现的,且多字段主键中的单个字段是子表相对于父表的外键。

36 4.5.5 创建表间关系 【练习4-7(P79)】以“订单明细”表为例,在设计视图中设置多字段主键。
至此,业务数据分析的前期准备工作就基本完成了。要想从二维表中提取出有用的信息以支持经营管理决策,还必须使用专门的函数对数据进行特殊的处理、并创建相应的查询。这些方法将在第五章中详细介绍。

37 4.6 数据的完整性控制 在关系数据库中,数据完整性以及相应的控制措施主要体现在以下4个方面。
(1)域完整性(Domain Integrity)。在二维表中,同一字段上的所有值都具有相同的数据类型,从而保证了基本的域完整性。设置字段的“字段大小”属性也是保证域完整性的一项措施。 (2)实体完整性(Entity Integrity)。在实体表中,将相应的实体ID设置为主键。而主键上的值在二维表中是唯一的,且不能为空值。这样,实体表中的一条记录就唯一地描述了现实世界中的一个实体。

38 4.6 数据的完整性控制 (3)用户定义完整性(User-defined Integrity)。用户还可以根据业务规则定义专门的约束条件进一步规范和限制某些字段上的数据取值范围。例如,将“身份证号码”字段的“输入掩码”属性设置为“ A”以及将“性别”字段的“有效性规则”属性设置为“男” or “女”。 (4)参照完整性(Referential Integrity)。在Access数据库中,通过在表间关系之间实施参照完整性可以确保和验证父表和子表之间记录对应关系的有效性。此外,通过设置 “级联更新相关字段”规则和“级联删除相关记录”规则,可以在主表中更新主键值或删除记录时,仍然保持父表与子表之间记录对应关系的原有完整状态。

39 4.7 现实世界与数据模型之间的相互转换

40 4.8 小结 在Access数据库中,“输入掩码”、“有效性规则”和“有效性文本”是3个十分有用的字段属性,它们可以在一定程度上确保输入到表中的数据是有效的,是RDBMS在数据完整性控制功能方面的具体体现。

41 4.8 小结 在关系数据库中,是使用关系概念模型描述客观事物及其联系的。
实体-联系方法(Entity-Relationship Approach)是最为著名也最为常用的关系概念模型的表示方法。 在E-R图中,可以描述实体型、实体型具有的属性、实体型之间的联系以及联系的类型等多种信息。 在关系模型中,需要为实体型和实体型之间的多对多联系建立专门的关系模式。而对于实体型之间的一对多联系,则不需要建立专门的关系模式,一对多联系所关联的两个实体型之间可以通过关联属性建立联系。 根据所描述对象的不同,就可以将关系数据库中的表分为实体表和联系表。实体表是用来描述实体的,联系表描述的是实体之间的联系。

42 4.8 小结 为了减少或避免数据冗余,在关系数据库中,数据是分散地存储在不同的二维表中的。
而存放在不同表中的数据之间又是相互联系的。存放在不同表中的数据之间的内在联系,是以“关联字段”为纽带、通过表间关系体现和实现的。 在关系数据库中,最常见的表间关系是一对多的表间关系。 父表与子表之间通过关联字段可以建立一对多表间关系。 关联字段在父表中是主键,而在子表中则是外键。 父表定义了关联字段的取值范围,而子表只能引用父表中关联字段的值。 在Access关系数据库中,建立表间关系的关联字段不需要有相同的名称,但必须有相同的数据类型、并具有相同的业务含义。

43 4.8 小结 参照完整性是数据完整性控制的另一项重要措施,可以确保和验证父表和子表之间记录对应关系的有效性。
更新父表中的主键值或者删除父表中的记录,都有可能引起父表与子表之间的数据不一致性。 为此,Access提供了“级联更新相关字段”规则和“级联删除相关记录”规则。这样,当在父表中进行主键值更新或记录删除操作时,可以在子表中进行相应的字段更新或记录删除操作,从而使得父表与子表之间的记录对应关系保持原有的完整状态。

44 4.8 小结 对于业务数据分析人员来说,数据库技术的价值在于能够帮助他们更加有效地处理、利用和分析业务数据,以达到从众多的明细业务数据中获得有用信息、并利用这些信息辅助经营管理决策的目的。 业务数据分析之前的准备工作: (1)正确地理解字段的业务含义,明确字段的数据类型; (2)以数据(字段)的业务含义为基础建立数据库所反映的业务模型; (3)在理解数据业务含义的基础上,利用E-R图分析业务规则,并与业务模型相互验证; (4)基于关联字段的识别进行表间关系分析; (5)利用数据库工具创建表间关系。


Download ppt "第4章 数据控制功能和表间关系 4.1 数据控制功能 为了确保数据库中数据的正确有效以及数据库系统的有效运行,RDBMS提供了数据控制功能:"

Similar presentations


Ads by Google