[英]Should I create another table column or is there another way I can go about doing this?
[英]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
我可以做另一个表,并将col1和col2列放在那里,因为它们是重复的。 像这样:
但是我敢肯定它不会重复超过15次,所以...值得吗?
提前致谢。
是的,您应该将它们分成单独的表-这是对Second Normal Form进行规范化的示例。
您现在可以确定,但是一年后何时扩展您的应用程序呢? 拆分表
只能使用一个带有ID的表,两个VARCHAR
列作为名称和缩写,而一个NUMBER
作为价格。
规范化有助于避免重复数据。 您的模型很小,数据很小,您不必担心并留下一个实体(表)。
在实际的项目中,有时我们进行归一化,然后意识到我们一团糟。 在重复数据与易于理解模型和查询之间取得平衡始终是一件好事。 更不用说在使用数据仓库数据库时...
这是数据库设计中非常基本的问题,答案是响亮的“两个表”! 以下是一些原因:
如果您有一个表,那么错误地有人可以输入产品名称为“ 1”并缩写产品名称为“ 2”的新行。阻止此操作的唯一方法是添加规则和约束-比拆分表要复杂得多首先。
查看数据库模式应该有意义地告诉您它代表什么。 如果事实是您不能拥有产品名称为“ 1”且产品名称缩写为“ 2”的产品,那么从表结构中应该可以清楚地看出这一点。 单个表告诉您相反的情况,即UNTRUE。 数据库应该说出真相-否则会产生误导。
如果您以外的任何人查看或开发此数据库,则可能会因偏离此类基本设计规则而感到困惑和误解。 或更糟糕的是,如果他们认为窗口设计不周密,则可能会导致破碎的窗口综合症,因此请不要理会自己的工作。
该原理称为“规范化”,它是将某事物变成关系数据库,而不只是一堆数据的核心:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.