我的数据库中有两个表,一个命名为文件夹,第二个命名为用户。现在用户对这些文件夹几乎没有权限,即用户可以看到哪个文件夹,而他看不到哪个文件夹。通过使用第三种规范化形式,我规范化了我的表格。我对您的问题是,我希望您的建议是否正确规范了表格,其次,我能否对其进行更多规范化?我下面的这张附加图片将帮助您了解我所做的规范化。 谢谢!
问问题
226 次
2 回答
2
是的!您成功实现了 3NF,因为每个非键属性(在您的情况下folder right
)都依赖于整个键(user_id, folder_id)
并且没有传递依赖。
实际上,您的表格也属于 6NF,因为您无法在不丢失信息的情况下将表格进一步分解为其投影。:)
由于我不知道 6NF 之外的任何正常形式,我会说你不能进一步规范化它。
于 2013-08-28T09:30:54.037 回答
1
假设您已将中间的那张桌子替换为底部的那张桌子,是的,您已经达到了 3NF (a)。
您可以对其进行更多规范化(有第 4 和第 5 范式),但很少需要走那么远。
这并不意味着无法进行更多优化。如果您仅有的两种状态是可见的和不可见的,您可以完全摆脱这些状态,并将多对多表中存在的一行视为可见。这样,您的决赛桌将是:
user id folder id
======= =========
1 1
2 2
缺少条目1/2
并2/1
指示不可见。
(a)记住 3NF 的一个好方法是,每个非键列都应该依赖于键,整个键,只有键,所以帮助我,Codd,有点 DBA 幽默,这解释了为什么他们没有得到out much :-) 解释有点简单,因为真正的规范化适用于候选键,而不仅仅是(例如)主键。
这意味着您的中间表不是 3NF,因为它的键本来是userid/folderid
并且文件夹名称仅取决于该键的一部分。
于 2013-08-28T09:27:48.183 回答