首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >6范式,重组查询,高效实现

6范式,重组查询,高效实现
EN

Database Administration用户
提问于 2011-12-09 11:55:44
回答 2查看 3.8K关注 0票数 4

我发现了休·达文( Hugh )为避免我的数据库中的空值而写的这篇文章:链接,它描述了如何以第6种范式实现数据库,以避免出现空值。该逻辑在语言教程D中进行了描述。我理解如何将所有这些逻辑转换为Server。但是在最后,他展示了如何在当前的数据库管理系统中很好地实现这一点,然后我看到这一部分我需要实现:

  • 重新组合查询:可以完成,但可能执行得很糟糕。最好将PERS_INFO存储在封面下的单个表中,这样分解产生的表就可以作为映射来实现。但是目前的技术并没有将物理存储与逻辑设计分离开来。也许是下一代软件工程师需要解决的问题?

它建议将PERS_INFO存储为封面下的单个表,但这到底意味着什么?我将如何在Server中实现这一点?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2011-12-09 16:13:54

最好将PERS_INFO存储在封面下的单个表中,这样分解产生的表就可以作为映射来实现。但是目前的技术并没有将物理存储与逻辑设计分离开来。

他说的是dbms将其存储为单个表,而不是将其存储为单个表。

关系模型本身并不涉及物理存储。它只要求“数据库被用户视为表……事实上,在物理层面上,系统可以任意存储数据……”。(数据库系统简介,第7版,CJ Date,第61页)

所以Darwen说,如果数据库设计器声明了一组6NF表,以及它们的

  • 候选钥匙,
  • 分发的钥匙,
  • 外键,
  • 外国分发的钥匙,
  • 诸若此类,

那么dbms就可以自由地

  • 将6NF表实现为SQL表空间中的单个表,
  • 向用户隐藏该单表实现,并且
  • 向用户公开一组可更新的视图,这些视图与数据库设计器声明的6NF表无法区分。

尽管如此,您可以通过在封面上创建一个表来解决dbms支持不足的问题(可以这么说),并创建一组与您的6NF设计无法区分的可更新视图。撤消对单个表的权限,并要求所有用户只使用可更新的视图。您不能做的是让dbms完全基于一系列逻辑正确的6NF创建表语句来处理所有这些细节。

票数 7
EN

Database Administration用户

发布于 2011-12-09 13:20:22

下载休·达文博士的免费PDF书籍,关系数据库理论概论。具体来说,第7章和WIFE_OF_HENRY_VIII示例。总之,6NF总是可以实现的,但如果它使约束更难编写,那么在实践中可能并不总是可取的。

数据库、类型和关系模型中也简要地提到了这一点。

要回答您的问题,建议是基于基表创建视图,可能使用替代触发器,然后从基表中删除权限,以便用户只针对视图,但这些实现细节超出了他的论文的范围。

也见第三份宣言主页。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/8994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档