Задался размышлением. С одной стороны нормальные формы баз данных весьма логичны.
Но с другой точки зрения они же, по сути, завтавляют использовать более сложные запросы, с множеством joinов или выборки из предварительно выбранных таблиц, что делает сложнее и разработку и увеличивает время выборки.
Где середина? До какой нормальной формы лучше доводитьть свою бд? Или вообще это не принципиально?
1. Alho - 27 Июня, 2012 - 10:44:22 - перейти к сообщению
2. Zuldek - 27 Июня, 2012 - 10:58:18 - перейти к сообщению
Alho пишет:
Где середина? До какой нормальной формы лучше доводитьть свою бд? Или вообще это не принципиально?
Где середина? До какой нормальной формы лучше доводитьть свою бд? Или вообще это не принципиально?
Середина между чем и чем?
Использование joinов и выборка из нескольких таблиц, это, как я понял, - один берег, второй какой?
3. Мелкий - 27 Июня, 2012 - 11:30:38 - перейти к сообщению
Как не так давно написали на хабре и мне понравилась формулировка:
Нормализация делает работу с базой быстрее и удобнее. Когда это внезапно становится не так - вводят избыточность некоторых данных.
Ведь за избыточными, ненормализованными данными надо отдельно следить и не забывать, что надо будет поменять ещё тут, тут и тут - что опять же лишние усилия и код. А главное - резко вырастает вероятность что-то забыть и схлопотать баг, за которым потом не один час бегать.
http://habrahabr.ru/qa/20599/ пишет:
"джойны — зло" - говорят те, кто не знает, что такое индексы и как ими пользоваться.
Нормализация делает работу с базой быстрее и удобнее. Когда это внезапно становится не так - вводят избыточность некоторых данных.
Ведь за избыточными, ненормализованными данными надо отдельно следить и не забывать, что надо будет поменять ещё тут, тут и тут - что опять же лишние усилия и код. А главное - резко вырастает вероятность что-то забыть и схлопотать баг, за которым потом не один час бегать.
4. EuGen - 27 Июня, 2012 - 11:34:17 - перейти к сообщению
На практике, золотая середина - 3 НФ. Иногда, для большего контроля - форма Бойса-Кодда.
Как уже сказали выше - контроль целостности данных - это, при правильной организации БД, не будет в ущерб производительности (разве что на константное время, которым можно пренебречь)
Тот же MySQL, в случае использования индексов при JOIN'ах, исполняет запрос с хорошим планом и хорошим временем.
Как уже сказали выше - контроль целостности данных - это, при правильной организации БД, не будет в ущерб производительности (разве что на константное время, которым можно пренебречь)
Тот же MySQL, в случае использования индексов при JOIN'ах, исполняет запрос с хорошим планом и хорошим временем.