模式分解(一)无损连接性
模式分解(一)无损连接性
定义:说人话就是 把不符合模式要求的大表分解成多个小表使符合要求
特别注意:不能相互嵌套
EG:

R3嵌套于R2
补充几种用到的连接
(一)等值连接

比较的都是B属性 但是可以B和E进行等值连接 等值连接必须要有等值条件
(二)自然连接
自然连接是特殊的等值连接,必须要有相同的属性列。
(三)在进行表连接时的两种情况
1.有相同属性列 进行自然连接
2.没有相同属性列 进行笛卡尔积连接
表连接后的情况
A大表分解出B小表和C小表 BC连接等到D表
1. BC连接后的D表 一定包含大表A 数据只可能多,不可能少
2. D表按照 A表分解的属性,分解后,得到的仍是BC两个小表
3. D表与B表或C表连接后 仍是D表
如果D表和A表完全一样(数据不多不少)才证明有无损连接性

从左向右前四个表依次是ABCD表 可带入思考一下
判断无损链接的算法
第一步:构建初始表

表的行数取决于大表U的元素个数
表的列数取决去分解出的小表个数
在一行中如果对应小表存在此元素填入ai(i为列标) 不存在此元素填入bij(i为行标,j为列标)
第二步:根据F中的函数依赖修改表的内容
以R1表为例 函数依赖 C->D 由于R1中有c元素,所以可以得到D元素,把表中b14改为a4
最终结果

第三步:算法终止
如果有一行全为a标签 算法终止 证明有无损连接性
根据F中函数依赖扫描前后 表无变化 算法终止 且没有一行全为a标签 证明没有无损连接性
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 窄门!
评论




