我知道什么是无损分解和有损分解。在有损分解中,我们得到了一些错误的信息。但什么是治疗方法呢?我想如果我们加入主键,它不会有损耗吗?
我说的对吗?如果我是,它也会是无损的吗?
发布于 2014-05-10 12:46:27
要回答您的问题:要实现无损分解,您必须对函数依赖关系进行拆分。您似乎已经知道了(正式的) 背后的理论,所以我将尝试让您了解一下为什么这是正确的。
假设你有关系R
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)因为post_id决定了post_date和post_title,因此成为了关键。因为post_id是r2中的一个键,所以r2中的每一行都是不同的行,我们可以安全地加入。注意,原始关系上的主键是(author_id, post_id),这比我们实际需要的要多。
另一方面,一个坏的分解
(author_id, author_name, post_id, post_date) (post_date, post_title)因为没有FD post_date -> post_title,因此post_date不是r2中的键,因此post_date可能具有重复的值。从直觉的角度来看,显而易见的是,加入一个潜在的复制值将给我们带来大量的幻象行。
https://stackoverflow.com/questions/23580373
复制相似问题