作者aoksc (重出江湖)
看板Database
标题[SQL ] 栏位正规化的问题
时间Sat Mar 21 22:28:37 2015
(针对
SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
资料库名称:MS-SQL
资料库版本:2000
内容/问题描述:
请问各位
假设我有一个订单的table
其中一个栏位代表是中餐、点心、饮料、晚餐
最多就只有这四个值
那麽请问我需要另开一个talbe专门纪录这四个值
有需要再join就好
还是说直接存在订单这个table底下就好呢?
因为每一笔订单只有一个订单类别
所以应该是有做到第一正规化
每笔订单的类别也都跟主key(GUID)有关
所以应该有第二正规化吧?
第三正规化的部份我就不确定了
请问像这样的情况我要怎麽分析呢?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.169.167.226
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1426948120.A.1D5.html
1F:推 GoalBased: 如果你今天 中餐 要改成 中华餐 03/21 22:56
2F:→ GoalBased: 你table不拆开要怎麽办 03/21 22:57
因为我是想说
餐点类型大概不外乎就那些
所以有必要分出来吗?
所以一般来说只要是跟种类、分类有关的栏位都必须要分出去罗?
那麽请问这算是第几正规化呢?
※ 编辑: aoksc (118.169.167.226), 03/21/2015 23:02:39
还有我之前的想法是想说要改的话直接update中餐全部改成中华餐不就好了
请问这作法会有什麽问题呢?
※ 编辑: aoksc (118.169.167.226), 03/21/2015 23:04:20
3F:推 GoalBased: 1.我不知道那是第几正规化,工作中没看过人讨论 03/21 23:29
4F:→ GoalBased: 这是"第几正规化",通常都是直觉的去做正规化 03/21 23:29
5F:→ GoalBased: 2.update可以啊,但是假如你有一万笔中餐,那不就要 03/21 23:30
6F:→ GoalBased: 更新一万笔吗,如果你拆出去是不是只要更新一笔? 03/21 23:30
谢谢的回覆
我没有考虑到如果要大量更新的情况
因为我一直预想这东西应该不会改才对
所以看来应该是跟分类有关的栏位也该考虑独立到另一个table方便控制
※ 编辑: aoksc (118.169.167.226), 03/21/2015 23:37:57
7F:→ benqm300: 反正规化通常是在某些情况下才使用,一般来说还是该分开 03/22 11:02
8F:→ benqm300: 就分开,虽然有时候SQL会很肥@@ 03/22 11:02
9F:推 rockchangnew: 可拆,会减少资料量。日後维护也方便 03/22 14:11
10F:推 LaPass: 拆也可以,不拆也可以。看状况。 03/22 21:27