我应该正常化吗?如果有,怎么样?

时间:2015-06-22 03:27:48

标签: mysql database-design database-optimization table-structure

目前我有一个包含CSV列的表格。我不确定是否要将整张桌子标准化。问题是此列configuration最多可包含50个或更多不同类型的值。例如,在下面显示的表格中18, 20,但对于同一列中的其他数据,它可能是0, 20, 21, 22, 23, 25, 26, 27, 40, 52, 54, 55,依此类推,但这些值是唯一的。他们永远不会重复。

我不知道它的最大数量是多少(可能会有所不同),这就是我将其保存为CSV的原因。我目前无法正常化它,或者我不确定我是否应该将其正常化。这里有什么帮助吗?

id    tester_type    device_id      board_id        configuration
75946   UFLEX           997           220   
44570   UFLEX           450           220               18,20
44569   UFLEX           449           220               18,20
44568   UFLEX           448           220               18,20
44567   UFLEX           447           220               18

注意:Configuration列也包含空值或空格。

2 个答案:

答案 0 :(得分:0)

  

我必须查询它,所以我想我必须将它标准化。

是的,你这样做:)

  

如果创建表,这是否意味着我必须为每个可能的配置值创建?

标准化结构的一个例子是:

$.ajax({
    url: "functions.php",
    dataType: "JSON",
    data: {id: id},
    type: 'POST',
    success: function(json){    
        for(var i=0;i<json.length;i++){                 
            alert(json[i].fname);
        }
    }
});

如果您正在使用InnoDB,则连接表的每一列也是其各自父表的外键。

答案 1 :(得分:0)

我不同意“必须”和“必须”标准化立场。我的2美分:

  • 规范化“连续”值,例如价格,数字,日期,花车等。
  • 规范化唯一或近似的值。
  • 规范化狭窄的字段。例如,不要用4字节country_id替换2个字母的国家/地区代码。

  • “规范化以简化”:执行规范化多个表中使用的内容可能会发生变化。有时名称,地址,公司名称等属于此类别。这样你就可以在一个地方改变价值,而不是很多地方。

  • “规范空间”:执行规范化可为数据集节省大量整体空间的事物。 (这比千兆字节表更适用于千兆字节表。)

  • 规范化,但不要“过度规范化”。当你过度规范化并且无法优化讨厌的JOIN时,你会弄明白我的意思。

如果您想了解更多具体建议,请查看SHOW CREATE TABLE并为任何不明显的列示例值。