对于学校的作业,我们要为我们提供的表格画出UNL,1NF,2NF,3NF关系。我认为我能够完成UNL,1NF,2NF,但我不确定3NF如何做到这一点。
这是一张表格的图片:

以下是我缺少3NF的可能解决方案。
UNF关系
ProductReport[ProductC, Classif, Markup(ProductID, Desc, Cost)]1NF关系
ProductReport[ProductC, Classif, Markup]
ProductDetails [ProductC, ProductID, Desc, Cost]2NF关系
ProductReport[ProductC, Classif, Markup]
Product [ProductID, Desc]
ProductDetails [ProductC, ProductID, Cost]3NF关系
所以我的问题是,我的UNF,1NF,2NF是否正确?如果是,3NF会是什么样子?
发布于 2016-12-02 07:54:44
我可以帮助前两个表格,我不是百分之百确定3NF在你的情况下。
这是我的解释。
1NF
您的表已经在1NF中,因为每个字段只包含单个值(即使它们是多个单词字符串),并且没有重复的组,因为每个字段存储不同的属性;例如,如果产品在同一行上针对一个分类重复
2NF
正如您已经确定的,我们需要将分类和标记从产品中分离出来,将产品描述从成本中分离出来;最终的charge将是最终报告查询中的一个计算字段。
3NF
3NF的定义是:
没有可传递的函数依赖
传递函数依赖被描述为:A在函数上依赖于B,而B在函数上依赖于C。因此,A通过B传递依赖于C。
因此,我们正在寻找同一个表中字段之间的依赖关系,而不是像我之前说的那样跨表(感谢reaanb指出了这一点)。
我在您的表中看不到传递依赖,我很想知道是否有人能发现一个。我在想,如果你已经被分配了这个任务,那么他们肯定在寻找第三种范式,或者可能没有!:)
发布于 2018-11-30 01:08:33
标记和收费之间存在传递依赖关系。这两个字段必须放在单独的表中才能传递3NF。
3NF的一个更常见的例子是邮政编码和城市。如果用户更改了城市值,则会直接影响邮政编码的值。
我个人会把它放在2NF中,并在服务器端代码(c#或java)中处理它。
https://stackoverflow.com/questions/40922009
复制相似问题