Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 有损连接分解的补救措施是什么?_Database_Database Normalization - Fatal编程技术网

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)
因为没有FD
post\u date->post\u title
,因此
post\u date
不是r2中的键,因此
post\u date
可能有重复的值。从直观的角度来看,加入一个潜在的重复值会让我们得到大量的幻影行