SQL规范化UNL 1NF 2NF 3NF
对于学校作业,我们要为提供的表格绘制UNL、1NF、2NF、3NF关系。我想我能够完成UNL,1NF,2NF,但我不知道如何完成3NF 这是一张桌子的照片: 以下是我可能的解决方案,缺少3NF UNF关系 1NF关系 2NF关系 3NF关系SQL规范化UNL 1NF 2NF 3NF,sql,database-normalization,Sql,Database Normalization,对于学校作业,我们要为提供的表格绘制UNL、1NF、2NF、3NF关系。我想我能够完成UNL,1NF,2NF,但我不知道如何完成3NF 这是一张桌子的照片: 以下是我可能的解决方案,缺少3NF UNF关系 1NF关系 2NF关系 3NF关系 所以我的问题是,我的UNF,1NF,2NF正确吗?如果是,3NF会是什么样子?我可以帮助您处理前两种表单,但对于您的情况,我不能100%确定3NF 这是我的解释 1NF 表的字段必须包含原子值 不能有重复组 您的表已经在1NF中,因为每个字段只包含单个
所以我的问题是,我的UNF,1NF,2NF正确吗?如果是,3NF会是什么样子?我可以帮助您处理前两种表单,但对于您的情况,我不能100%确定3NF 这是我的解释 1NF
- 表的字段必须包含原子值
- 不能有重复组
- 该表是第一个标准形式
- 所有非键属性都完全依赖于主键
费用
将是最终报表查询中的计算字段
3NF
3NF的定义是:
- 它是第二范式
- 不存在可传递的函数依赖关系
我在您的表中没有看到可传递的依赖项,我很想知道是否有其他人可以发现一个。我在想,如果你被分配了这个任务,那么他们一定在寻找第三种范式,或者可能没有!) 我可以帮助您填写前两张表格,但对于您的情况,我不能100%确定是否使用3NF 这是我的解释 1NF
- 表的字段必须包含原子值
- 不能有重复组
- 该表是第一个标准形式
- 所有非键属性都完全依赖于主键
费用
将是最终报表查询中的计算字段
3NF
3NF的定义是:
- 它是第二范式
- 不存在可传递的函数依赖关系
我在您的表中没有看到可传递的依赖项,我很想知道是否有其他人可以发现一个。我在想,如果你被分配了这个任务,那么他们一定在寻找第三种范式,或者可能没有!) 在加价和收费之间存在可传递的依赖关系。这两个字段必须放在单独的表中才能通过3NF 3NF的一个更常见的例子是邮政编码和城市。如果用户更改城市值,则会直接影响邮政编码值
我个人会将它保存在2NF中,并在服务器端代码(c#或java)中处理它。在标记和收费之间存在一种可传递的依赖关系。这两个字段必须放在单独的表中才能通过3NF 3NF的一个更常见的例子是邮政编码和城市。如果用户更改城市值,则会直接影响邮政编码值
我个人会将它保存在2NF中,并在服务器端代码(c#或java)中处理它。您注意到标记依赖于产品类吗?也就是说,园艺工具(GT)都有30%的标记,灌木(SB)有50%,肥料(FT)有25%,洒水器(SP)有40%。虽然目前的表格数据没有任何重复行,但我对1NF的理解是,必须明确定义表格,以防将来添加重复行。在SQL中,这可以通过声明
唯一
或主键
约束来实现。在本例中,产品ID似乎是实现此目的的理想选择。是的,OP已将标记移动到带有产品类的表中。我不确定你的评论是什么意思,你是说存在3NF依赖关系吗?我认为1NF中没有任何防止重复行的要求。以下是Wikipedia的定义:“当且仅当每个属性的域仅包含原子(不可分割)值,并且每个属性的值仅包含该域中的单个值时,关系才是第一范式。”在3NF描述中,您描述了表之间的依赖关系。关系理论中没有这样的东西。可传递依赖项(通常是功能依赖项)指的是关系中各列之间的依赖项。您注意到标记依赖于产品类吗?也就是说,园艺工具(GT)都有30%的标记,灌木(SB)有50%,肥料(FT)有25%,洒水器(SP)有40%。虽然目前的表格数据没有任何重复行,但我对1NF的理解是,必须明确定义表格,以防将来添加重复行。在SQL中,thi
ProductReport[ProductC, Classif, Markup(ProductID, Desc, Cost)]
ProductReport[ProductC, Classif, Markup]
ProductDetails [ProductC, ProductID, Desc, Cost]
ProductReport[ProductC, Classif, Markup]
Product [ProductID, Desc]
ProductDetails [ProductC, ProductID, Cost]