【数据库原理】(16)关系数据理论的函数依赖

一.函数依赖的概念

函数依赖是关系数据库中核心的概念,它指的是在属性集之间存在的一种特定的关系。这种关系表明,一个属性集的值可以唯一确定另一个属性集的值。

  • 属性子集:在关系模式中,X和Y可以是单个属性,也可以是属性的组合。
  • 唯一确定:对于关系模式中的任意两个元组,如果它们在X上的值相同,则它们在Y上的值也必须相同。

定义

  1. 基本定义:函数依赖,记作 X -> Y,意味着在关系模式 R(U) 中,如果 XU 的子集,那么 X 的值可以唯一确定 Y 的值。
  2. 非平凡函数依赖:如果 Y 不是 X 的子集,则 X -> Y 是非平凡函数依赖。
  3. 平凡函数依赖:如果 YX 的子集,则 X -> Y 是平凡函数依赖。

完全与部分函数依赖

  • 完全函数依赖:如果没有 X 的任何真子集能决定 Y,则称 YX 完全函数依赖。
  • 部分函数依赖:如果 X 的某个真子集可以决定 Y,则称 YX 部分函数依赖。

传递函数依赖

  • 定义:如果 X -> YY -> ZY 不函数依赖于 X,则称 ZX 传递函数依赖。。

函数依赖的闭包

  • 闭包:由函数依赖集 F 推导出的所有函数依赖的集合称为 F 的闭包,记作 F + F^+ F+

数据库设计中的应用

  1. 消除冗余和异常:理解和应用函数依赖有助于减少数据存储中的冗余,并避免更新、插入和删除异常。
  2. 规范化:函数依赖是数据库规范化过程的基础。通过规范化,可以将数据库分解成多个结构简单、相互独立的小表,从而提高数据库的运行效率和数据的一致性。

实例分析

以一个简单的员工数据库为例,假设有一个关系模式Employee(员工号, 姓名, 部门),其中:

  • 如果一个员工号唯一地决定一个员工的姓名和部门,则称姓名和部门函数依赖于员工号(员工号 → 姓名, 部门)。
  • 如果部门中的每个员工都有一个唯一的员工号,则员工号函数依赖于部门(部门 → 员工号),这可能表明设计上的问题,因为部门通常包含多个员工。

二.关键字(码)

关键字(码)的定义
  • 基本概念:在关系数据库中,关键字(又称码)是一种特殊的属性或属性组合,能够在关系模式中唯一标识每个元组。
  • 候选码:关系中所有可能作为唯一标识符的属性集称为候选码。
  • 主码:从候选码中选定的一个作为主要的唯一标识符。
  • 主属性:包含在任何一个候选码中的属性。
  • 非主属性:不包含在任何码中的属性。
关键字的重要性
  1. 唯一性标识:关键字确保关系中的每个元组都是唯一的,从而使数据的检索和操作更为准确。
  2. 实体完整性:关键字强制执行实体完整性规则,确保数据库的准确性和可靠性。
  3. 构建关系:关键字是关系间联系的基础,特别是在实现外键(外部码)时,它们建立了表之间的联系。
主键与外键
  • 主键(Primary Key):选定的候选码,用于唯一标识关系中的每个元组。
  • 外键(Foreign Key):存在于一个关系中但作为另一个关系的主键的属性或属性组。
示例

假设有关系模式 R(城市, 街道, 邮编),其中 城市街道 的组合能唯一确定一个邮编,这组属性可以作为候选码。如果在另一个关系模式中 邮编 是唯一标识符,则它在当前关系模式中作为外键存在。

选择合适的关键字

在数据库设计中,选择合适的关键字至关重要,因为它影响数据的整合性、存取效率和系统的可维护性。选择时应考虑以下因素:

  1. 最小化:候选码应该尽可能小,以减少存储空间和提高处理效率。
  2. 稳定性:选择不易改变的属性作为关键字。
  3. 简洁性:简单的属性或属性组合更易于管理和使用。

二.Armstrong 公理系统

Armstrong 公理系统为函数依赖的理论提供了一套形式化的推理规则,用于从已知的函数依赖中导出更多的函数依赖。这一系统是关系模式分解算法的理论基础,帮助数据库设计者理解和应用函数依赖的概念。

Armstrong 公理系统的规则
  1. 自反律 (Reflexivity):

    • 如果 Y⊆X⊆U,则 X→Y 是成立的。
    • 说明: 任何属性集总是函数决定其子集。
  2. 增广律 (Augmentation):

    • 如果 X→Y 成立,且 Z⊆U,则 XZ→YZ 也成立。
    • 说明: 可以在函数依赖的两边同时增加相同的属性集。
  3. 传递律 (Transitivity):

    • 如果 X→Y 和 Y→Z 成立,则 X→Z 也成立。
    • 说明: 函数依赖具有传递性。

由于关系的性质,Armstrong 公理系统是有效和完备的。它的推论包括合并规则、伪传递规则和分解规则。

推论规则
  1. 合并规则 (Union Rule):

    • 如果 X→Y 和 X→Z 成立,则 X→YZ 也成立。
    • 说明: 可以合并具有相同左部的函数依赖。
  2. 伪传递规则 (Pseudo Transitivity Rule):

    • 如果 X→Y 和 WY→Z 成立,则 XW→Z 也成立。
    • 说明: 当函数依赖的右部与另一个函数依赖的左部部分重叠时,可推导出新的函数依赖。
  3. 分解规则 (Decomposition Rule):

    • 如果 X→Y 成立,并且 Z⊆Y,则 X→Z 也成立。
    • 说明: 函数依赖的右部可以分解成更小的部分。
重要结论
  1. 函数依赖 X → A 1 ​ , A 2 ​ , . . . , A n X→A_1​,A_2​,...,A_n XA1,A2,...,An​ 成立的充分必要条件是每个 X → A i X→A_i XAi​ 都成立。
  2. 函数依赖集 F 的闭包 F + F^+ F+ 是从 F 出发用公理导出的所有函数依赖的集合。
应用

Armstrong 公理系统在数据库设计中被广泛应用于确定关系模式的规范化程度。通过应用这些规则,设计者可以识别数据冗余和更新异常,并据此对数据库模式进行调整,以达到更高级别的规范化。

  • 30
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值