Database 有损连接分解的补救措施是什么?
我知道什么是无损分解和有损分解。在有损分解中,我们得到了一些错误的信息。但补救办法是什么?我想如果我们加入主键,它不会有损吗Database 有损连接分解的补救措施是什么?,database,database-normalization,Database,Database Normalization,我知道什么是无损分解和有损分解。在有损分解中,我们得到了一些错误的信息。但补救办法是什么?我想如果我们加入主键,它不会有损吗 我说得对吗?如果我是,它也是无损的吗?回答你的问题:要实现无损分解,你必须在函数依赖项上进行拆分。 看来你已经知道了(正式的),所以我将试着让你了解一下为什么这是真的 假设你有一个亲戚 R(author_id, author_name, post_id, post_date, post_title) 使用FDs author_id -> { author_name
我说得对吗?如果我是,它也是无损的吗?回答你的问题:要实现无损分解,你必须在函数依赖项上进行拆分。 看来你已经知道了(正式的),所以我将试着让你了解一下为什么这是真的 假设你有一个亲戚
R(author_id, author_name, post_id, post_date, post_title)
使用FDs
author_id -> { author_name }
post_id -> { post_date, post_title }
现在,一个好的分解是
(author_id, author_name, post_id) (post_id, post_date, post_title)
(author_id, author_name, post_id, post_date) (post_date, post_title)
因为post\u id
决定了post\u日期
和post\u标题
,因此成为一个键。由于post\u id
是r2中的一个键,r2中的每一行都是不同的行,我们可以安全地加入。请注意,原始关系上的主键是(author\u id,post\u id)
,这超出了我们实际需要的范围
另一方面,坏的分解会
(author_id, author_name, post_id) (post_id, post_date, post_title)
(author_id, author_name, post_id, post_date) (post_date, post_title)
因为没有FDpost\u date->post\u title
,因此post\u date
不是r2中的键,因此post\u date
可能有重复的值。从直观的角度来看,加入一个潜在的重复值会让我们得到大量的幻影行