我有以下db-schema。
文件, GROUP 和 BLOCK 表示XML文件的对象结构。 FILE 是根。 GROUP 的FK为 FILE 。 BLOCK 有一个FK到 GROUP ,另一个FK到 UNIT 。
UNIT 在 FILE 的上下文中将来自不同 GROUPs 的“类似” BLOCK 分组。
数据库目前为3NF。但我想知道哪些 UNIT 属于 FILE .id = 1。要做到这一点,我必须创建一个连接所有4个表的查询。为了优化此架构,我可以创建新关系 UNIT n - FK - > 1 FILE 。然而,我的查询只在优化的db-schema上加入了两个表。 这里有一个问题:这个DB(有了这个新的FK)还在3 NF吗?理论说什么?
BLOCK n--FK-->1 GROUP n--FK-->1 FILE
n
|
FK
|
1
Unit
或
+--------+
+-----| File |.....+
| +--------+ .
| .
/|\ /.\
+--------+ +--------+
| Group |--+ +--| Unit |
+--------+ | | +--------+
| |
/|\ /|\
+---------+
| Block |
+---------+
答案 0 :(得分:1)
从提供的信息来看,这似乎是一个真正的并行层次结构。在此基础上,我认为拟议修正的模式仍将标准化为3NF。
答案 1 :(得分:0)
在进行更改之前,尚不清楚UNIT表如何适应模式。
显然,在进行更改之后,您只需要知道哪些单元属于某个文件即可加入FILE和UNIT表。
由于表是在3NF中,当所有功能依赖关系由键,整个键,以及除键之外的任何东西(所以帮助我Codd)确定时,你必须从那个角度看你的架构。
鉴于可获得的信息,很可能这些表都是3NF(BCNF,4NF和5NF的AFAICT)。
答案 2 :(得分:0)