我应该创建另一张桌子吗?

时间:2013-02-20 17:01:37

标签: mysql database database-design

我有一个具有这种结构的表:

enter image description here

col1 将是“product_name”, col2 “product_name_abbreviated”。

忽略 id colum我有这些数据:

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

我可以做另一张表并将 col1 col2 列放在那里,因为它们会被重复。像这样:

enter image description here

但是我确定它不会重复超过15次,所以......值得吗?

先谢谢。

5 个答案:

答案 0 :(得分:4)

是的,您应该将它们拆分为单独的表格 - 这是Second Normal Form规范化的示例。

答案 1 :(得分:2)

您现在确定,但是您何时在一年内延长申请时间呢?拆分表

答案 2 :(得分:0)

只使用一个包含ID的表,使用两个VARCHAR列作为名称和缩写,并使用NUMBER作为价格。

答案 3 :(得分:0)

规范化有利于避免重复数据。你的模型很小,数据很小,你不必担心并留下一个实体(表)。

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

答案 4 :(得分:0)

这是数据库设计中一个非常基本的问题,答案是响亮的“两桌”! 以下是一些原因:

  1. 如果您有一个表,那么有人可能会输入一个产品名称为“1”且缩写产品名称为“2”的新行。阻止此操作的唯一方法是添加规则和约束 - 更多这不仅仅是首先拆分表格。

  2. 查看数据库架构应该有意义地告诉您它代表什么。如果您不能拥有产品名称为“1”且缩写产品名称为“2”的产品,那么从表格结构中可以看出这一点。单个表告诉您相反的情况,即UNTRUE。数据库应该说实话 - 否则会产生误导。

  3. 如果您以外的任何人在查看或开发此数据库时,可能会因为偏离此类基本设计规则而感到困惑和误导。或者更糟糕的是,如果他们认为它没有经过精心设计,因此可能导致窗户综合症破裂,因此不会照顾自己的工作。

  4. 这个原则被称为“规范化”,它是成为关系数据库的意义的核心,而不仅仅是一堆数据:)