我有一个具有这种结构的表:
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 列放在那里,因为它们会被重复。像这样:
但是我确定它不会重复超过15次,所以......值得吗?
先谢谢。
答案 0 :(得分:4)
是的,您应该将它们拆分为单独的表格 - 这是Second Normal Form规范化的示例。
答案 1 :(得分:2)
您现在确定,但是您何时在一年内延长申请时间呢?拆分表
答案 2 :(得分:0)
只使用一个包含ID的表,使用两个VARCHAR
列作为名称和缩写,并使用NUMBER
作为价格。
答案 3 :(得分:0)
规范化有利于避免重复数据。你的模型很小,数据很小,你不必担心并留下一个实体(表)。
在实际项目中,有时我们会正常化,然后意识到我们弄得一团糟。在重复数据和易于理解模型和查询之间取得平衡总是好的。更不用说使用数据仓库数据库......
答案 4 :(得分:0)
这是数据库设计中一个非常基本的问题,答案是响亮的“两桌”! 以下是一些原因:
如果您有一个表,那么有人可能会输入一个产品名称为“1”且缩写产品名称为“2”的新行。阻止此操作的唯一方法是添加规则和约束 - 更多这不仅仅是首先拆分表格。
查看数据库架构应该有意义地告诉您它代表什么。如果您不能拥有产品名称为“1”且缩写产品名称为“2”的产品,那么从表格结构中可以看出这一点。单个表告诉您相反的情况,即UNTRUE。数据库应该说实话 - 否则会产生误导。
如果您以外的任何人在查看或开发此数据库时,可能会因为偏离此类基本设计规则而感到困惑和误导。或者更糟糕的是,如果他们认为它没有经过精心设计,因此可能导致窗户综合症破裂,因此不会照顾自己的工作。
这个原则被称为“规范化”,它是成为关系数据库的意义的核心,而不仅仅是一堆数据:)