最佳数据库结构 - 具有空字段或更多表的“更宽”表?
我需要将其他数据放入数据库中,我可以选择修改现有表(table_existing)还是创建新表。
这就是table_existing现在的样子:
table_existing
-------------------------
| ID | SP | SV | Field1 |
| .. | WW | 1 | ...... |
| .. | WW | 1 | ...... |
-------------------------
选项(A)
table_existing
----------------------------------------------------------------------
| ID | SP | SV | Field1 | Field2 | Field3 | Field4 | Field5 | Field6 |
| .. | XX | 1 | ...... | ...... | ...... | ...... | ...... | ...... |
| .. | YY | 2 | ...... | ...... | ...... | ...... | ...... | ...... |
----------------------------------------------------------------------
选项(B)
table_existing would be converted into table_WW_1_data
---------------
| ID | Field1 |
| .. | ...... |
| .. | ...... |
---------------
table_XX_1_data
------------------------
| ID | Field1 | Field2 |
| .. | ...... | ...... |
| .. | ...... | ...... |
------------------------
table_YY_2_data
---------------------------------
| ID | Field1 | Field2 | Field3 |
| .. | ...... | ...... | ...... |
| .. | ...... | ...... | ...... |
---------------------------------
上下文:SP,SV的组合确定将填充的字段的“数量”。例如,(XX,1)有2个字段。 (YY,2)有3个字段。
如果我使用选项(A),我会在“更宽”的表中有许多空/ NULL值。
如果我选择选项(B),我基本上创建更多的表格......一个用于SP,SV的“每个”组合 - 总共可能有4-5个。但每个都将填充正确数量的字段。 table_existing也会被更改。
从速度的角度来看,更优化的数据库结构是什么?我认为从可维护性的角度来看,选项(B)可能会更好。
EDIT1
这两个选项都不是我应用程序中最关键/最常用的表。
在选项(B)中,在分割数据之后,根本不需要加入它们。如果我知道我需要XX_1的字段,我会去那张桌子。
我试图了解是否有一个包含许多未使用值的大型表与在更多表中分配相同数据的优缺点。大量的表是否导致数据库中的性能损失(我们已经有~80个表)?
没有找到相关结果
已邀请:
5 个回复
痰降锭骂奸
篮肥炼皖
田眯衅
拟蓬
坊岔埠绵
表拆分为
,
等来强制执行NOT NULL约束的原因,具体取决于用户的角色。 通常,由于索引问题,在表中包含大量NULL值会对性能造成影响。 根据经验,只要联接中涉及的表数量为4或更少,您就不必担心性能损失。 编辑:如果你担心数据库中的表数,我建议你看看这里。