我使用两个在线资源来了解 5NF,没有任何严格的数学和证明。
- 关系数据库理论中五种范式的简单指南(由 Kent 撰写。这本书似乎在他的一篇著作中得到了 CJ Date 本人的审查和认可)
- 第五范式(维基百科文章)
但是,我无法理解这些参考文献中的任何一个!
让我们首先检查参考文献#1(Kent's)。
它说:“但是假设某条规则生效:如果代理商销售某种产品,并且他代表一家生产该产品的公司,那么他为该公司销售该产品。”
然后,继续分解原始表(所有表名都由我给出)......
acp(agent, company, product)
-----------------------------
| AGENT | COMPANY | PRODUCT |
|-------+---------+---------|
| Smith | Ford | car |
| Smith | Ford | truck |
| Smith | GM | car |
| Smith | GM | truck |
| Jones | Ford | car |
-----------------------------
...分成3个表:
ac(agent, company)
cp(company, product)
ap(agent, product)
------------------- --------------------- -------------------
| AGENT | COMPANY | | COMPANY | PRODUCT | | AGENT | PRODUCT |
|-------+---------| |---------+---------| |-------+---------|
| Smith | Ford | | Ford | car | | Smith | car |
| Smith | GM | | Ford | truck | | Smith | truck |
| Jones | Ford | | GM | car | | Jones | car |
------------------- | GM | truck | -------------------
---------------------
但我什至不确定我是否理解上述规则的英语含义。我对上述规则的理解是它的“then”子句是完全多余的!为了,
如果代理商正在销售产品
和
如果该代理代表生产该产品的公司,
那么,很明显,这个代理正在为该公司销售该产品。
那么,这个声明中的“规则”在哪里?事实上,这对我来说似乎是一个非陈述!
从三个表(ac、cp 和 ap)向后推算,规则似乎真的是:“一家公司可能生产 1 种或多种产品,代理可能代表 1 家或更多公司,当代表一家公司时,他可能或可能不会出售其所有产品。”
但是原始表 acp 已经捕获了这个规则。所以,我不确定 5NF 的解释是怎么回事。
现在让我们检查参考文献#2(维基百科)。
它说:但是,假设以下规则适用:“一个旅行推销员在他的曲目中具有某些品牌和某些产品类型。如果品牌 B1 和品牌 B2 在他的曲目中,并且产品类型 P 在他的曲目中,那么 (假设品牌 B1 和品牌 B2 都生产产品类型 P),旅行推销员必须提供产品类型 P 的产品,即品牌 B1 生产的产品和品牌 B2 生产的产品。”
再一次,仅按照这条规则的英语含义,仅此而已,
如果一个推销员有品牌 B1 和 B2,以及他的产品 P,
和
如果产品 P 由品牌 B1 和 B2 制造,
那么,为什么他不能像原来的 3 列表“sbp(销售员、品牌、产品)”一样提供品牌 B1 和 B2 的产品 P,该表甚至在这个新的 '规则”生效了吗?
有人可以澄清一下吗?