Зменшувані стовпці можуть бути від 1NF до 5NF, але не в 6NF відповідно до того, що я прочитав.
Тільки якщо ти краще знаєш, ніж Кріс Дата, "що означає перша нормальна форма насправді". Якщо x і y обидва є нульовими, і справді в якомусь рядку x і y є обома null
, то WHERE x=y
це не поступається true
. Це доводить поза розумним сумнівом, що null не є величиною (тому що будь-яка реальна цінність завжди сама собі рівна). А оскільки RM прописує, що "повинно бути значення у кожній комірці таблиці", будь-яка річ, яка, можливо, містить нулі, не є реляційною річчю, і тому питання про 1NF навіть не виникає.
Я чув, як він стверджував, що Nullable стовпчики взагалі порушують першу ступінь нормалізації.
Дивіться вище щодо обґрунтованої причини, яка лежить в основі цього аргументу.
Але на практиці це дуже практично.
Тільки якщо ви не застраховані від головних болів, які вони зазвичай викликають у всьому іншому світі. Одним із таких головних болів (і це лише незначний, порівняно з іншими null
феноменами) є той факт, що WHERE x=y
в SQL насправді означаєWHERE x is not null and y is not null and x=y
, але що більшість програмістів просто не знають цього факту і просто читають його. Іноді без жодної шкоди, інший раз ні.
Насправді, зведені стовпці порушують одне з найважливіших правил проектування бази даних: не поєднуйте в одному стовпчику окремих інформаційних елементів. Нулі роблять саме так, оскільки вони поєднують булеве значення "це поле є / насправді немає" з фактичним значенням.