0

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

在此处输入图像描述

col1将是“product_name”和col2 “product_name_abbrevified”。

忽略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列,因为它们是重复的。像这样的东西:

在此处输入图像描述

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

提前致谢。

4

5 回答 5

4

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

于 2013-02-20T17:15:00.623 回答
2

你现在确定了,但是你什么时候会在一年后延长你的申请呢?拆分表

于 2013-02-20T17:17:26.340 回答
0

仅使用一个带有 ID 的表,两VARCHAR列用于名称和缩写,以及NUMBER用于价格。

于 2013-02-20T17:14:26.370 回答
0

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

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

于 2013-02-20T17:21:04.260 回答
0

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

  1. 如果您有一个表,那么有人可能会错误地输入带有产品名称“1”和缩写产品名称“2”的新行 阻止这种情况的唯一方法是添加规则和约束 - 远比拆分表复杂得多首先。

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

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

该原则被称为“规范化”,它是关系数据库的核心,而不仅仅是一堆数据:)

于 2013-02-20T17:27:33.347 回答