我应该使用多列还是多表?

时间:2017-12-23 11:17:40

标签: mysql

我的表格目前有13列:

    name, gender, age, color, country, a_qps, a_throughput, b_qps, b_throughput, c_qps, c_throughput, d_qps, d_throughput

(名称,性别,年龄,颜色,国家/地区)用作查询的关键字。 a,b,c,d是模式。 x_qps的数据类型相同,x_throughput的类型相同。

当模式类型增加时,我应该将它们保留在此表中吗?例如,如果出现另一种新模式,我应该将e_qps,e_throughput添加到同一个表中吗? 或者我应该对表格进行垂直拆分并将其转换为4个表格

    name, gender, age, color, country, a_qps, a_throughput
    name, gender, age, color, country, b_qps, b_throughput
    name, gender, age, color, country, c_qps, c_throughput
    name, gender, age, color, country, d_qps, d_throughput

2 个答案:

答案 0 :(得分:0)

这取决于数据设计。如果列中的所有数据都像 b_qps, b_throughput, c_qps, c_throughput, d_qps, d_throughput严格绑定到name, gender, age, color, country, a_qps, a_throughput,并且它们之间存在唯一的1-1关系,请将其保存在单个表中。如果存在可能发生某些不同关系(1-N)的情况,则分成2个或更多表。

一般来说,只要表中标准化了多列,就没有错误 - 没有数据重复。

答案 1 :(得分:0)

通常,您应该避免使用动态列或表,动态信息应该在单元格数据中。所以我会选择第三个选项,一个以模式作为值的表:

name, gender, age, color, country, mode, qps, throughput

mode将为abc等。

您还应该向主表添加自动增量主键,因此您不必在每个其他表中重复所有5个键列。该主键可以用作其他表中的外键。