Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Помог: 11 раз(а)
Задался размышлением. С одной стороны нормальные формы баз данных весьма логичны.
Но с другой точки зрения они же, по сути, завтавляют использовать более сложные запросы, с множеством joinов или выборки из предварительно выбранных таблиц, что делает сложнее и разработку и увеличивает время выборки.
Где середина? До какой нормальной формы лучше доводитьть свою бд? Или вообще это не принципиально?
Zuldek
Отправлено: 27 Июня, 2012 - 10:58:18
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Alho пишет:
Где середина? До какой нормальной формы лучше доводитьть свою бд? Или вообще это не принципиально?
Середина между чем и чем?
Использование joinов и выборка из нескольких таблиц, это, как я понял, - один берег, второй какой?
Мелкий
Отправлено: 27 Июня, 2012 - 11:30:38
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Как не так давно написали на хабре и мне понравилась формулировка:
http://habrahabr.ru/qa/20599/ пишет:
"джойны — зло" - говорят те, кто не знает, что такое индексы и как ими пользоваться.
Нормализация делает работу с базой быстрее и удобнее. Когда это внезапно становится не так - вводят избыточность некоторых данных.
Ведь за избыточными, ненормализованными данными надо отдельно следить и не забывать, что надо будет поменять ещё тут, тут и тут - что опять же лишние усилия и код. А главное - резко вырастает вероятность что-то забыть и схлопотать баг, за которым потом не один час бегать.
----- PostgreSQL DBA
EuGen
Отправлено: 27 Июня, 2012 - 11:34:17
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
На практике, золотая середина - 3 НФ. Иногда, для большего контроля - форма Бойса-Кодда.
Как уже сказали выше - контроль целостности данных - это, при правильной организации БД, не будет в ущерб производительности (разве что на константное время, которым можно пренебречь)
Тот же MySQL, в случае использования индексов при JOIN'ах, исполняет запрос с хорошим планом и хорошим временем.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.