【发布时间】:2016-10-20 21:40:09
【问题描述】:
我有一张大约有 20 列的表格。它工作得很好,它与其他表有很多关系,但它工作得很好,到目前为止设计也很好。
现在我需要存储另一种类型的数据,它具有几乎相同的列,它有 15 列基本相同,但 5 列完全不同 这两种类型之间。那我该怎么做 1.我是否将它存储在一个表中(通过在第一个表中添加新列->这样一些5列将是空的,具体取决于我们保存的数据类型),或者 2. 将其拆分为 2 个表,并且每个表在其他表中重复相同的列 3. 其他方式?
列案例 1 - 存储在同一个表中
ID INTEGER
Description NVARCHAR(max)
Value FLOAT
ValueEUR FLOAT
ValueUSD FLOAT
YearOfBuilt SMALLINT
New BIT
Requirements NVARCHAR(max)
FIELD A1
FIELD A2
FIELD A3
FIELD A4
FIELD A5
FK_TypeID INT
我是否在上表中为其他文档类型添加 5 个新字段:
FIELD B1 FLOAT
FIELD B2 FLOAT
FIELD B3 FLOAT
FIELD B4 FLOAT
FIELD B5 FLOAT
在这种情况下,如果我保存类型 1 的数据
对于列 FIELD B1, ... FIELD B5,保存的字段值将是 null。
好吧,它会起作用,但有些字段会是空的,具体取决于类型。
还是按照下面的案例 2 进行表格设计
列案例 2 - 存储在两个表中
表 1
ID INTEGER
Description NVARCHAR(max)
Value FLOAT
ValueEUR FLOAT
ValueUSD FLOAT
YearOfBuilt SMALLINT
New BIT
Requirements NVARCHAR(max)
FIELD A1
FIELD A2
FIELD A3
FIELD A4
FIELD A5
FK_TypeID INT
表 2 - 重复相同的列,但不包括该表不需要的列
ID INTEGER
Description NVARCHAR(max)
Value FLOAT
ValueEUR FLOAT
ValueUSD FLOAT
YearOfBuilt SMALLINT
New BIT
Requirements NVARCHAR(max)
FIELD B1 FLOAT
FIELD B2 FLOAT
FIELD B3 FLOAT
FIELD B4 FLOAT
FIELD B5 FLOAT
FK_TypeID INT
现在在这种情况下 2,我将重复相同的列,但排除不需要的列。这意味着相同的列名,但是存储数据是为了节省空间(没有空值)。
哪种方法更好? 还是有其他方法可以做到这一点?我不是数据库设计的初学者。
【问题讨论】: