正规化这个mysql DATE列是否过度杀伤?

时间:2015-01-26 21:05:15

标签: mysql normalization denormalization

我正在考虑忽略规范化规则以使表格更易于使用,我想知道这是否会导致任何重大问题或违反此类事情的最佳做法。

我正在存储月份范围的数据,我会为month列提供大量重复值。它将存储当天垃圾值为1的月份和年份,因此下个月我将获得大量'2015-03-01'然后很多'2015-04-01'等等。

以下是我正在考虑的两个选项:

table `data`
------------
`id` INT
`data` VARCHAR
`month` DATE

或规范化,这可以防止那些重复,但感觉乏味,并且它实际上并没有帮助我

table `data`
-------------
`id` INT
`data` VARCHAR
`month_id` INT

table `month`
-----------
`id` INT
`month` DATE

在考虑这样的非规范化时,是否有任何好的指导原则?

编辑:这是我的第一个场景的一些示例数据:

INSERT INTO data
(data, month)
VALUES
('sample1', '2014-11-01'),
('sample2', '2014-11-01'),
('sample3', '2014-11-01'),
('sample4', '2014-11-01'),
('sample5', '2014-12-01'),
('sample6', '2014-12-01'),
('sample7', '2014-12-01'),
('sample8', '2014-12-01'),
('sample9', '2014-12-01');

1 个答案:

答案 0 :(得分:0)

如果在您的第​​二个选项中,表月仅包含ID和月份,我将不得不说"那是什么意思?"。如果它包含有关月份的额外信息(例如,当月的工作日数),则值得将其标准化。