Как мне нормализовать эту таблицу:
Frequency (PK) Year (PK) Quarter (PK) Month (PK) Value
Monthly 2013 1 1 1
Quarterly 2013 1 0 2
Yearly 2013 0 0 3
Таблица не находится во 2-й нормальной форме, потому что когда частота = годовое значение зависит от подмножества первичного ключа (частота, год)
Я подумал о добавлении суррогатного ключа. Тогда столбцы «Квартал» и «Месяц» могут быть нулевыми.
Surrogate (PK) Frequency Year Quarter Month Value
1 Monthly 2013 1 1 1
2 Quarterly 2013 1 NULL 2
3 Yearly 2013 NULL NULL 3
Но это не решает проблему, потому что определение 2-й нормальной формы также применяется к ключам-кандидатам. Разделение таблицы на три таблицы на основе частоты не кажется хорошей идеей, потому что это введет операторы if в мою бизнес-логику:
if (frequency == Monthly) then select from DataMonthly