繁体   English   中英

我应该创建另一个表吗?

[英]Should I create another table?

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

在此处输入图片说明

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列放在那里,因为它们是重复的。 像这样:

在此处输入图片说明

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

提前致谢。

是的,您应该将它们分成单独的表-这是对Second Normal Form进行规范化的示例。

您现在可以确定,但是一年后何时扩展您的应用程序呢? 拆分表

只能使用一个带有ID的表,两个VARCHAR列作为名称和缩写,而一个NUMBER作为价格。

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

在实际的项目中,有时我们进行归一化,然后意识到我们一团糟。 在重复数据与易于理解模型和查询之间取得平衡始终是一件好事。 更不用说在使用数据仓库数据库时...

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

  1. 如果您有一个表,那么错误地有人可以输入产品名称为“ 1”并缩写产品名称为“ 2”的新行。阻止此操作的唯一方法是添加规则和约束-比拆分表要复杂得多首先。

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

  3. 如果您以外的任何人查看或开发此数据库,则可能会因偏离此类基本设计规则而感到困惑和误解。 或更糟糕的是,如果他们认为窗口设计不周密,则可能会导致破碎的窗口综合症,因此请不要理会自己的工作。

该原理称为“规范化”,它是将某事物变成关系数据库,而不只是一堆数据的核心:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM