关系数据库设计

(一)两种闭包

(1)函数依赖集的闭包
  • 逻 辑 蕴 含 : 给 定 一 个 关 系 模 式 r ( R ) , 如 果 r ( R ) 的 每 一 个 满 足 F 的 实 例 也 满 足 f , 则 R 上 的 函 数 依 赖 f 被 r 上 的 函 数 依 赖 集 F 逻 辑 蕴 含 ( f 逻 辑 蕴 含 F ) 。 主 观 上 来 理 解 , 就 是 函 数 依 赖 集 F 可 以 推 出 函 数 依 赖 f 。 逻辑蕴含:给定一个关系模式r(R),如果r(R)的每一个满足F的实例也满足f,\\则R上的函数依赖f被r上的函数依赖集F逻辑蕴含(f逻辑蕴含F)。\\主观上来理解,就是{\color{red}函数依赖集F可以推出函数依赖f。} r(R)r(R)FfRfrFfFFf
  • 函 数 依 赖 集 F 的 闭 包 : 就 是 被 F 逻 辑 蕴 含 的 所 有 函 数 依 赖 的 集 合 , 记 作 F + 。 函 数 依 赖 集 的 闭 包 可 以 使 用 A m s t r o n g 公 理 以 及 另 外 三 条 规 则 来 求 : ( a ) 自 反 律 : β ⊂ α ⇒ α → β ( b ) 增 补 律 : α → β 且 γ 为 一 属 性 集 ⇒ γ α → γ β ( c ) 传 递 律 : α → β 且 β → γ ⇒ α → γ ( d ) 合 并 律 : α → β 且 α → γ ⇒ α → β γ ( e ) 分 解 律 : α → β γ ⇒ α → β 且 α → γ ( f ) 伪 传 递 律 : α → β 且 γ β → δ ⇒ α γ → δ 函数依赖集F的闭包:就是被F逻辑蕴含的所有函数依赖的集合,记作F^+。\\ 函数依赖集的闭包可以使用Amstrong公理以及另外三条规则来求:\\ (a)自反律:\beta\subset\alpha\Rightarrow\alpha\rightarrow\beta\\ (b)增补律:\alpha\rightarrow\beta且\gamma为一属性集\Rightarrow\gamma\alpha\rightarrow\gamma\beta\\ (c)传递律:\alpha\rightarrow\beta且\beta\rightarrow\gamma\Rightarrow\alpha\rightarrow\gamma\\ (d)合并律:\alpha\rightarrow\beta且\alpha\rightarrow\gamma\Rightarrow\alpha\rightarrow\beta\gamma\\ (e)分解律:\alpha\rightarrow\beta\gamma\Rightarrow\alpha\rightarrow\beta且\alpha\rightarrow\gamma\\ (f)伪传递律:\alpha\rightarrow\beta且\gamma\beta\rightarrow\delta\Rightarrow\alpha\gamma\rightarrow\delta FFF+使Amstrongaβααβbαβγγαγβcαββγαγdαβαγαβγeαβγαβαγfαβγβδαγδ
(2)属性集的闭包
  • 函 数 确 定 : 如 果 α → B , 那 么 属 性 B 被 α 函 数 确 定 。 函数确定:如果\alpha\rightarrow B,那么属性B被\alpha函数确定。 αBBα
  • F 下 α 的 闭 包 : 函 数 依 赖 集 F 下 被 α 函 数 确 定 的 所 有 属 性 的 集 合 , 即 为 α + 。 求 解 F 下 α 的 闭 包 可 以 先 将 α 加 入 到 α + 中 , 然 后 循 环 遍 历 所 有 函 数 依 赖 F i ( 记 作 α i → β i ) , 如 果 α i ⊂ α + , 那 么 就 将 β i 加 入 到 α + 中 。 当 α + 不 再 加 入 新 属 性 , 算 法 终 止 。 F下\alpha的闭包:函数依赖集F下被\alpha函数确定的所有属性的集合,即为\alpha^+。\\ 求解F下\alpha的闭包可以先将\alpha加入到\alpha^+中, 然后循环遍历所有函数依赖F_i(记作\alpha_i\rightarrow\beta_i),\\ 如果\alpha_i\subset\alpha^+,那么就将\beta_i加入到\alpha^+中。 当\alpha^+不再加入新属性,算法终止。 FαFαα+Fααα+Fiαiβiαiα+βiα+α+
(3)正则覆盖
  • 目 的 : 删 除 无 关 变 量 , 得 到 最 小 的 覆 盖 。 目的:删除无关变量,得到最小的覆盖。
  • 定 义 : F 的 正 则 覆 盖 F c 是 一 个 函 数 依 赖 集 , 使 得 F 逻 辑 蕴 含 F c 中 的 所 有 依 赖 , 而 且 F c 逻 辑 蕴 含 F 中 的 所 有 依 赖 。 定义:F的正则覆盖F_c是一个函数依赖集,使得F逻辑蕴含F_c中的所有依赖,\\而且F_c逻辑蕴含F中的所有依赖。 FFc使FFcFcF
  • 检 验 A 是 否 为 无 关 变 量 的 方 法 : ( a ) 如 果 删 掉 箭 头 后 面 的 A , 检 验 新 F ′ 能 否 推 出 α → A ( b ) 如 果 删 掉 箭 头 前 面 的 A , 检 验 原 F 能 否 推 出 α − { A } → β 检验A是否为无关变量的方法:\\ (a)如果删掉箭头后面的A,检验新F'能否推出\alpha\rightarrow A\\ (b)如果删掉箭头前面的A,检验原F能否推出\alpha-\{A\}\rightarrow\beta AaAFαAbAFα{A}β

(二)两种范式

(1)Boyce-Codd范式(BCNF)
  • 定 义 : 对 F + 中 所 有 形 如 α → β 的 函 数 依 赖 , 下 面 至 少 有 一 项 成 立 : ( a ) α → β 是 平 凡 的 函 数 依 赖 ( 即 β ⊂ α ) 。 ( b ) α 是 模 式 R 的 一 个 超 码 。 定义:对F^+中所有形如\alpha\rightarrow\beta的函数依赖,下面至少有一项成立:\\ (a)\alpha\rightarrow\beta是平凡的函数依赖(即\beta\subset\alpha)。\\ (b)\alpha是模式R的一个超码。 F+αβaαββαbαR
  • B C N F 分 解 BCNF分解 BCNF
    步 骤 : 找 出 非 平 凡 的 函 数 依 赖 α → β ( 其 中 α 不 是 R 的 超 码 ) , 用 以 下 两 个 模 式 取 代 R : ( a ) ( α ∪ β )          ( b ) ( R − ( β − α ) ) 重 复 以 上 过 程 直 至 所 有 的 模 式 都 满 足 B C N F 。 更 一 般 而 言 , 如 果 α + 同 时 违 反 了 以 下 两 个 条 件 , 且 存 在 函 数 依 赖 α → β , 则 证 明 R 违 反 了 B C N F : ( a ) α + 不 包 含 R − α 的 任 何 属 性          ( b ) α + 包 含 R 的 所 有 属 性 步骤:找出非平凡的函数依赖\alpha\rightarrow\beta(其中\alpha不是R的超码),用以下两个模式取代R:\\ (a)(\alpha\cup\beta)\;\;\;\;(b)(R-(\beta-\alpha))\\ 重复以上过程直至所有的模式都满足BCNF。\\ 更一般而言,如果\alpha^+同时违反了以下两个条件,且存在函数依赖\alpha\rightarrow\beta,则证明R违反了BCNF:\\ (a)\alpha^+不包含R-\alpha的任何属性\;\;\;\; (b)\alpha^+包含R的所有属性 αβαRRa(αβ)b(R(βα))BCNFα+αβRBCNFaα+Rαbα+R
    B C N F 分 解 一 定 是 无 损 分 解 ( R 1 ∩ R 2 一 定 是 R 1 或 R 2 的 超 码 ) , 但 并 不 一 定 能 保 持 依 赖 ( F 上 的 每 一 个 函 数 依 赖 都 在 其 分 解 后 的 某 一 个 关 系 上 成 立 ) , 所 以 需 要 引 入 比 B C N F 弱 的 第 三 范 式 。 BCNF分解一定是无损分解(R_1\cap R_2一定是R_1或R_2的超码),\\但并不一定能保持依赖(F上的每一个函数依赖都在其分解后的某一个关系上成立),\\所以需要引入比BCNF弱的第三范式。 BCNFR1R2R1R2FBCNF
(2)第三范式(3NF)
  • 定 义 : 在 B C N F 的 基 础 上 增 加 一 个 可 选 项 : ( c ) β − α 中 的 每 个 属 性 A 都 包 含 于 R 的 一 个 候 选 码 中 ( 不 要 求 包 含 于 同 一 个 候 选 码 ) 。 定义:在BCNF的基础上增加一个可选项:\\ (c)\beta-\alpha中的每个属性A都包含于R的一个候选码中(不要求包含于同一个候选码)。 BCNFcβαAR
  • 3 N F 分 解 3NF分解 3NF
    步 骤 : 利 用 B C N F 分 解 或 者 正 则 覆 盖 将 R 分 解 为 R 1 , R 2 , . . . , R i 后 , 如 果 R 1 , R 2 , . . . , R i 都 不 包 含 R 的 候 选 码 , 那 么 新 增 一 个 模 式 R i + 1 , R i + 1 由 R 的 候 选 码 组 成 。 步骤:利用BCNF分解或者正则覆盖将R分解为R_1,R_2,...,R_i后,如果R_1,R_2,...,R_i都不包含R的候选码,\\ 那么新增一个模式R_{i+1},R_{i+1}由R的候选码组成。 BCNFRR1,R2,...,RiR1,R2,...,RiRRi+1Ri+1R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值