2013-02-20 136 views
0

我有一个表,这个结构:我应该创建另一个表吗?

enter image description here

COL1将是 “PRODUCT_NAME” 和COL2 “product_name_abbreviated”。

忽略ID科拉姆我有这样的数据:

1 1 43 
1 1 5 
1 1 6 
1 1 7 
1 1 8 
2 2 9 
2 2 10 
2 2 34 
2 2 37 
2 2 38 
2 2 39 
2 2 50 

我可以做的另一个表,并把有COL1COL2列becouse它们是重复的。事情是这样的:

enter image description here

我敢肯定,它会不会被重复超过15次,那么......是否值得?

谢谢先进。

+1

的心脏是什么'col1'和' col2'应该代表? – 2013-02-20 17:03:33

+1

很难说 - 但我强烈建议不要命名您的列“col1”和“col2”。 – 2013-02-20 17:04:49

+1

如果不知道“col1”和“col2”的含义以及它们与价格的关系,很难告诉你应该做什么。 – Danny 2013-02-20 17:05:03

回答

4

是的,你应该将它们分成不同的表格 - 这是一个标准化为Second Normal Form的例子。

+0

如果只重复两次呢?例如想象我有另一个包含genere(男性或女性)的列。 – harrison4 2013-02-20 20:43:37

+0

性别(男性/女性)会如何与产品和/或价格相关? (功能依赖性决定哪些列应该放在哪些表上。) – 2013-02-20 21:46:55

0

只能使用一张ID和ID,两个VARCHAR列的名称和缩写以及一个NUMBER的价格。

2

你确定现在,但是你什么时候会在一年内扩展你的应用程序?拆分表格

0

规范化对避免重复数据很有帮助。您的模型很小,数据很小,您不必担心并留下一个实体(表格)。

在实际项目中,有时我们会正常化,然后意识到我们弄得一团糟。在重复数据和容易理解模型和查询之间保持平衡总是很好的。更不用说使用数据仓库数据库时...

0

这是数据库设计中一个非常基本的问题,答案是一个响亮的“两个表”! 下面就介绍几种原因:

  1. 如果你有一个表,然后错误地有人可以有产品名称进入一个新行的“1”和缩写产品名称“2”只有这样,才能阻止这种将会增加规则和约束条件 - 远远比仅仅分割表格更复杂。

  2. 查看数据库模式应该能够有效地告诉你它代表什么。如果事实证明,您不能拥有产品名称为“1”和缩写产品名称为“2”的产品,那么通过查看表格结构应该清楚这一点。单个表格告诉你相反的,这是UNTRUE。数据库应该说实话 - 否则这是误导。

  3. 如果除了你自己以外的任何人查看或开发这个数据库,他们可能会被这种基本的设计规则的偏差所迷惑和误导。或者更糟糕的是,如果他们认为它没有经过精心设计,并且因此不关心自己的工作,就可能导致窗户综合症破裂。

原则被称为“归化”,是在意味着什么东西是关系数据库,而不是仅仅是一些数据在一堆:)

相关问题