我发现了休·达文( Hugh )为避免我的数据库中的空值而写的这篇文章:链接,它描述了如何以第6种范式实现数据库,以避免出现空值。该逻辑在语言教程D中进行了描述。我理解如何将所有这些逻辑转换为Server。但是在最后,他展示了如何在当前的数据库管理系统中很好地实现这一点,然后我看到这一部分我需要实现:
它建议将PERS_INFO存储为封面下的单个表,但这到底意味着什么?我将如何在Server中实现这一点?
发布于 2011-12-09 16:13:54
最好将PERS_INFO存储在封面下的单个表中,这样分解产生的表就可以作为映射来实现。但是目前的技术并没有将物理存储与逻辑设计分离开来。
他说的是dbms将其存储为单个表,而不是将其存储为单个表。
关系模型本身并不涉及物理存储。它只要求“数据库被用户视为表……事实上,在物理层面上,系统可以任意存储数据……”。(数据库系统简介,第7版,CJ Date,第61页)
所以Darwen说,如果数据库设计器声明了一组6NF表,以及它们的
那么dbms就可以自由地
尽管如此,您可以通过在封面上创建一个表来解决dbms支持不足的问题(可以这么说),并创建一组与您的6NF设计无法区分的可更新视图。撤消对单个表的权限,并要求所有用户只使用可更新的视图。您不能做的是让dbms完全基于一系列逻辑正确的6NF创建表语句来处理所有这些细节。
发布于 2011-12-09 13:20:22
下载休·达文博士的免费PDF书籍,关系数据库理论概论。具体来说,第7章和WIFE_OF_HENRY_VIII示例。总之,6NF总是可以实现的,但如果它使约束更难编写,那么在实践中可能并不总是可取的。
在数据库、类型和关系模型中也简要地提到了这一点。
要回答您的问题,建议是基于基表创建视图,可能使用替代触发器,然后从基表中删除权限,以便用户只针对视图,但这些实现细节超出了他的论文的范围。
也见第三份宣言主页。
https://dba.stackexchange.com/questions/8994
复制相似问题