MySQL规范化 - 1个表有3列或2个表有2列?

时间:2014-02-13 12:00:48

标签: database-normalization

我正在构建一个包含数百万条记录的数据库,而且我有一个关于其中一个关系表的问题,这些关系表将用于存储两个可搜索的参考号。我是新手,所以我向前道歉,我道歉。

id          digit1      digit2

varchar(9)  varchar(9)  varchar(9)
  1. 最好是a)在一个表中保留2个单独的可选列,或者b)为digit1和digit2保留两个单独的表?

  2. 如果digit1总是包含6到9个数字而且digit2总是由相同的3个字母和6个数字组成,我应该使用什么样的mysql字符类型?如何通过一组此类规则限制输入?

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

实际上,如果您要存储数字,并且如果您不想同时通过digit1和digit2进行查询,最好将它们分开放在不同的表中。否则,最好将它们保存在同一个表中,否则您将会遇到痛苦的加入。它还取决于你的矩阵稀疏程度(我的意思是,如果第2列中的项目太多而第3列中只有少数项目,那么最好还是将它们分开)

现在,如果你想存储数字,那么在这里会产生更大差异的是使用数字字段来存储值(而不是varchar),这将更小更快地搜索和索引(等等,检索)