第6章(4)模式分解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1) 求F的最小依赖集F’ (2) 作出函数依赖图FDG (3) 从FDG图中找出无入边的属性集X (4) 察看FDG图中有无回路,若无,则输出X并结 束,否则进行下一步 (5) 从各独立回路 独立回路中各取一个结点的属性与X组成一个候选码,重复 独立回路 取得所有可能的组合,即R的全部候选码
已知 R( IBOQSD), F = {I → B, B → O, I → Q, S → D},
分解
关系模式分解的标准
三种模式分解的等价定义 ⒈ 分解具有无损连接性 ⒉ 分解要保持函数依赖 ⒊ 分解既要保持函数依赖,又要具有无损连接性
模式的分解(续)
定义6.16 定义6.16 关系模式R<U,F>的一个分解:
ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}
U=U1∪U2∪…∪Un,且不存在 Ui ⊆ Uj,Fi 为 F在 F 上的投影。 Ui 上的投影。
模式的分解(续)
ND NL ──────────────── Sno Sdept Sloc ──────────────── 95001 CS A 95002 IS B 95003 MA C 95004 CS A 95005 PH B ──────────────── 与SL关系一样,因此没有丢失信息。
习题讲解
最小依赖集
(1) F中任一函数依赖的右部仅含一个属性 (2) F中不存在这样的函数依赖X → A, 使得 F与F − { X → A}等价 (3) F中不存在这样的函数依赖X → A, X有 真子集Z使得F − { X → A} ∪ {Z → A}与F等价
求F = { A → B, B → A, B → C , A → C , C → A}的最小函数依赖集
F '1 = { A → B , B → C , C → A } F '2 = { A → B , B → A , B → C , C → A }
求解关系模式的候选码
• 属性分类 – L类:只出现在函数依赖的左边的属性 – R类:只出现在函数依赖的右边的属性 – N类:在函数依赖的两边均未出现的属性 – LR类:出现在函数依赖的两边的属性
例 子 R(A,B,C), F={A→B, C → B}
– 分解1=({A,B},{A→B}), ({A,C}) – 分解2=({A,B}, {A→B}), ({B,C}, {C → B})
分析两种分解的 依赖保持性? 依赖保持性?
计算分解1,2中3个模式的闭包F+
– AB:A+=AB,B+=B,AB+=AB, 则对AB的分解有函数依赖A→B – AC:A+=A,C+=C,AC+=AC, 则对AC的分解没有函数依赖 – BC:B+=B,C+=CB,BC+=BC, 则对BC的分解只有函数依赖 C→B 分解1:只有A→B,显然,分解1不具有依赖保持性 分解2:保留了所有函数依赖,具有依赖保持性
具有无损连接性的模式分解
关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>, …, Rn<Un,Fn>},若R与R1、R2、…、Rn自然连接的结果相等,则 称关系,模式R的这个分解ρ具有无损连接性 无损连接性(Lossless join) 无损连接性 具有无损连接性的分解保证不丢失信息 无损连接性不一定能解决插入异常、删除异常、修改复杂、数 不一定能解决插入异常、删除异常、修改复杂、 不一定能解决插入异常 据冗余等问题
求F ' 和所有的候选码
F '= F , 候选码为 IS
I
B Q
O S D
已知 R ( XYWZ ), F = {W → Y , Y → W , X → WY , Z → WY , XZ → W }, 求 F ' 和所有的候选码 F ' = {W → Y , Y → W , X → Y , Z → W }, 唯一的候选码为 ZX
保持函数依赖的模式分解
设关系模式R<U,F>被分解为若干个关系模式 R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn> (其中U=U1∪U2∪…∪Un,且不存在Ui ⊆ Uj,Fi为F在Ui上的 投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某 个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的 这个分解是保持函数依赖的 保持函数依赖的(Preserve dependency)。 保持函数依赖的
保持函数依赖的模式分解
设 < U, F >的 个 解 R 一 分 为 ρ = R <U1, F >, R2 <U2 , F >,..., RK <UK , FK >), ( 1 1 2 分 求 F 和 ∪F )+ , 若 者 等 则 示 解 别 解 ( 两 相 , 表 分 i
i= 1 + k
前 的 数 赖 是 价 , ρ具 保 函 后 函 依 集 等 的 即 有 持 数 依 性 赖
解: L、N类属性为HS,LR属性为CTR HS+=HS RCTG,包含全部属性,所以为唯一候选码
函数依赖图FDG – 用有向图表示的函数依赖,如
X
Y
即X
Y
已知R( ABCDE ), F ={A→D, E →D, D→B, BC→D, DC→A}
求F所有的候选码
LR类属性ADB, 类属性ADB =U,EC为 L或N类属性有E和C, LR类属性ADB,令X=EC,(EC)+=U,EC为R 类属性有E 的唯一候选码。 的唯一候选码。 左边为单属性的函数依赖集求所有候选码 对左边为单属性的函数依赖集求所有候选码
若 R = R1 >< R 2 >< ... >< R K , (自然连接即可还原 为无损连接分解 )
则分解 ρ = R1 < U 1 , F1 > , R 2 < U 2 , F2 > ,..., R K < U K , FK > ) (
模式的分解(续)
第三种分解方法具有无损连接性 问题: 这种分解方法没有保持原关系中的函数依赖 SL中的函数依赖Sdept→Sloc, 没有投影到关系模式ND、 NL上
定义6.17 定义6.17 函数依赖集合{X→Y | X→Y ∈ F+∧XY ⊆Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影
模式的分解(续)
定义6.16 定义6.16 关系模式R<U,F>的一个分解:
ρ={ R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}
Baidu Nhomakorabea
U=U1∪U2∪…∪Un,且不存在 Ui ⊆ Uj,Fi 为 F在 F 上的投影。 Ui 上的投影。
分解后的关系为:
SN Sno ────── 95001 95002 95003 95004 95005 ──────
SD Sdept ────── CS IS MA PH ──────
SO Sloc ────── A B C ─────
模式的分解(续)
分解后的数据库丢失了许多信息 丢失了许多信息 例如无法查询95001学生所在系或所在宿舍。 如果分解后的关系可以通过自然连接恢复为原来的 关系,那么这种分解就没有丢失信息 丢失信息
ND ────────── Sno Sdept ──────────── 95001 CS 95002 IS 95003 MA 95004 IS 95005 PH ──────────── NL ────────── Sno Sloc ────────── 95001 A 95002 B 95003 C 95004 B 95005 B ───────────
模式的分解(续)
2. SL分解为下面二个关系模式: NL(Sno, Sloc) DL(Sdept, Sloc) 分解后的关系为:
NL
────────────
DL
────────────
Sno
Sloc
Sdept
Sloc
────────────
────────────
95001 A 95002 B 95003 C 95004 B 95005 B ──────────
CS A IS B MA C PH B ───────────
模式的分解(续)
NL DL
───────────────── Sno Sloc Sdept ───────────────── 95001 A CS 95002 B IS 95002 B PH 95003 C MA 95004 B IS 95004 B PH 95005 B IS 95005 B PH
Z X W Y
已知 R ( SDBIOQ ), F = {S → D , I → B , B → O , O → Q , Q → I }, 求 F ' 和所有的候选码
F'= F, 候选码为 SI , SB , SO , SQ
S I D B O Q
算法:对左边为多属性的函数依赖集求所有候选码
属于N-P完全问题 (一类直观上难解可又找不出方法来证 明它们的确难解的计算问题) 多属性下求解候选码的充分条件
求解关系模式的候选码
• 对于给定的关系模式R及其函数依赖集F – 如果X是L或N类属性,则X必为R的任一候选码的成员 – 如果X是R类属性,则X必不在任何候选码中 – 如果X是L和N类组成的属性组,且X+包含了全部属性, 则X是R的唯一候选码
前例
例:关系模式CTHRSG, 若最小依赖集为F’={C →T, HR →C,CS →G,HS →R,HT →R}, 候选关键字为HS?
定义6.17 定义6.17 函数依赖集合{X→Y | X→Y ∈ F+∧XY ⊆Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影
模式的分解(续)
例: SL(Sno, Sdept, Sloc) F={ Sno→Sdept,Sdept→Sloc,Sno→Sloc} SL∈2NF 存在插入异常、删除异常、冗余度大和修改复杂等问题 分解方法可以有多种 。
模式的分解(续)
NL∞DL比原来的SL关系多了3个元组 无法知道95002、95004、95005 究竟是哪个系的学生 元组增加了, 元组增加了,信息丢失了
第三种分解方法
3. 将SL分解为下面二个关系模式: ND(Sno, Sdept) NL(Sno, Sloc) 分解后的关系为:
模式的分解(续)
第四种分解方法 SL(Sno, Sdept, Sloc) F={ Sno→Sdept,Sdept→Sloc,Sno→Sloc} 将SL分解为下面二个关系模式: ND(Sno, Sdept) DL(Sdept, Sloc) 这种分解方法就保持了函数依赖。
1 2× 3 4× 5
1)考查A→B,去掉它,计算A+=A∪C,不包含B,不能去掉 2)考查 B → A,去掉它,计算B+=B ∪ C ∪ A,包含A,可去掉它 3)考查 B → C,去掉它,计算B+=B,不包含C,不能去掉 4)考查A → C,去掉它,计算A+=A ∪B ∪ C,包含C,可去掉它 5)考查 C → A,去掉它,计算C+=C,不包含A,不能去掉
模式的分解(续) SL
──────────────────
Sno
Sdept
Sloc
────────────────── 95001 CS A 95002 IS B 95003 MA C 95004 IS B 95005 PH B ──────────────────
模式的分解(续)
1. SL分解为下面三个关系模式: SN(Sno) SD(Sdept) SO(Sloc)
第六章 关系数据理论
6.1 数据依赖 6.2 规范化 6.3 数据依赖的公理系统 6.4 模式的分解
6.4 模式的分解
把低一级的关系模式分解为若干个高一级的关系模式的 方法并不是唯一 并不是唯一的。 并不是唯一 只有能够保证分解后的关系模式与原关系模式等价,分 解方法才有意义。
R (U ) ⇒ ρ ( R1 (U 1 ), R 2 (U 2 ),..., R K (U K )),其中: U 1 ,..., U K 都是 U 的子集,分别是 R1 ,..., R K 的属性集合, U 1 ∪ U 2 ∪ ... ∪ U K = U
(1) 将R所有属性分为L,R,N,LR四类,并令X代表L,N两类,令Y代表LR 类。 (2) 求X+,若X+包含R全部属性,则X即为R的唯一候选码,结束,否则 转下一步。 (3) 在Y中取一属性A,求(XA)+,若它包含R的全部属性,则转下一步,否 则换一个属性重试,直至试完所有Y中的属性。 (4) 若已找出所有候选码,则结束,否则在Y中依次取两个、三个、…, 求它们的属性闭包,直至其闭包包含R的全部属性。
相关文档
最新文档