我有以下DB-Schema。

文件, 团体堵塞 表示XML文件的对象结构。文件 是根。团体 有FK 文件. 堵塞 有一个fk 团体 还有另一个fk 单元.

单元 小组“相似” 来自不同的 小组文件.

数据库目前为3NF。但是我想知道哪个 单位 属于 文件.id = 1。为此,我必须进行一个查询,以加入所有4个表。为了优化该模式,我可以创建新的关系 单元 n--fk-> 1 文件. 。然而,我的查询仅在优化的DB-Schema上加入了两个表。这是一个问题:这个DB(带有这个新FK)仍处于3 nf中吗?理论说什么?

BLOCK  n--FK-->1  GROUP  n--FK-->1  FILE
 n 
 |
 FK    
 |    
 1  
Unit

或者

            +--------+
      +-----|  File  |.....+
      |     +--------+     .
      |                    .
     /|\                  /.\
 +--------+           +--------+
 | Group  |--+     +--|  Unit  |
 +--------+  |     |  +--------+
             |     |
            /|\   /|\
           +---------+
           |  Block  |
           +---------+
有帮助吗?

解决方案

从提供的信息中,看来这是一个真正的并行层次结构。在此基础上,我相信拟议的修订模式仍将标准化为3NF。

其他提示

在进行更改之前,尚不清楚单元表如何适合模式。

显然,进行更改后,要知道属于文件的单元所需要做的就是加入文件和单位表。

由于当所有功能依赖性都由键,整个键确定,而除了键(SO帮助我CODD)时,因此表格为3NF,因此您必须以这种方式查看您的模式。

鉴于可用的信息,很可能表格全部在3NF中(和BCNF,以及4NF和5NF的AFAICT)。

我认为您的“乌鸦脚”图不支持您的问题中概述的其他依赖项。您是如何提出文件和单位之间的许多关系的?

这些是您描述的功能依赖性...

  • 团体 -> 文件
  • 堵塞 -> 团体
  • 堵塞 -> 单元

另外,我假设上述每个属性在功能上确定了一些其他功能依赖性左侧的其他属性。这些是:

  • 文件 - >其他文件属性
  • 团体 - >其他组属性
  • 堵塞 - >其他障碍物
  • 单元 - >其他单位属性

从上述功能依赖项中构建一组3NF关系给出:

  • 申请:((文件, ,其他文件属性)
  • grouprelation:((团体, 文件, ,其他组属性)
  • 单位关系:((单元, ,其他单位属性)
  • 区块:((堵塞, 团体, 单元, ,其他块状)

这几乎与您所描述的内容相对应。

确定哪个 单元 实例与给定的 文件需要加入申请 文件 然后格罗普尔(GrouProlation) 团体 然后与单位相关 单元.

您想通过在模型中的某个地方插入新的关系来避免此多桌连接 单元文件. 。这种关系意味着功能依赖性:

  • 单元 -> 文件

这看起来像您添加到“乌鸦脚”图中的位。添加此引入逻辑矛盾。原始模式支持给定 单元 与多个有关 文件 实例。如:

  • 归档(F1,...)
  • 归档(F2,...)
  • grouprelation(g1,f1,...)
  • grouprelation(g2,f2,...)
  • 区块(B1,G1,U1,...)
  • 区块(B2,G2,U1,...)
  • 单位关系(U1,...)

单元实例U1与文件实例F1和F2有关。考虑到这种情况 单元 -> 文件 功能依赖性不能受到支持,或者原始功能依赖性集不完整,而模式不在3NF中。

此时,您需要解决现实世界是否支持 文件 -> 单元是否依赖。如果是这样,那么原始模型就不在3NF中,并且对模式进行了更多的重新设计。如果不支持依赖性,那么您可以说的最好的是:

  • 文件, 单元 -> 没有

以及相应的关系:

  • fileunit :(文件, 单元)

是一个脱位的,因为它的内容可以通过现有表功能依赖性得出。

=================================================================================

编辑

根据对此和其他答案的多种评论,看来:

  • 单元 -> 文件

是真正的功能依赖性,即功能依赖性:

  • 堵塞 -> 单元

虽然不正确,但必须多余。我相信现在,此模型的正确3NF关系集是:

  • 申请:((文件, ,其他文件属性)
  • grouprelation:((团体, 文件, ,其他组属性)
  • 单位关系:((单元, 文件, ,其他单位属性)
  • 区块:((堵塞, 团体, ,其他块状)

注意 单元 外键已经从区块中下降。这是因为 单元 -> 文件 FD使其多余。这 (堵塞, 单元)现在,通过将单位关系加入文件来形成关系 文件然后提出申请 文件 然后格罗普尔在 团体.

由于未说的功能依赖性,原始模式不在3NF中: 单元 -> 文件. 。上面提出的一组关系集在3NF中。

注意:将模式归一化时,每个功能依赖性都需要在前列出。缺少一个人可以改变整个图片!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top