Нормальные формы в реальной жизни
От: Аноним  
Дата: 07.10.04 21:13
Оценка:
Здравствуйте.

Собственно, такой вопрос: насколько оправдан отход от канонических нормальных форм при проектировании БД?
У нас сейчас в конторе идет живое обсуждение нового проекта и есть два лагеря: считающие, что все таблицы должны быть в 3NF, и те, кто говорит, что с введением дублирования будет получен существенный выигрыш в скорости работы, поэтому можно отойти от классики.

Каковы ваши соображения?

Особенно интересует мнение людей с большим опытом работы в области БД.

ЗЫ. Проект связан с веб.
Re: Нормальные формы в реальной жизни
От: GarryIV  
Дата: 07.10.04 21:29
Оценка:
Hello, !

> Здравствуйте.


> Собственно, такой вопрос: насколько оправдан отход от канонических

> нормальных форм при проектировании БД? У нас сейчас в конторе идет живое
> обсуждение нового проекта и есть два лагеря: считающие, что все таблицы
> должны быть в 3NF, и те, кто говорит, что с введением дублирования будет
> получен существенный выигрыш в скорости работы, поэтому можно отойти от
> классики.

> Каковы ваши соображения?


ИМХО однозначного ответа на этот вопрос не существует. С одной стороны скорость с другой семантическая раздробленность — надо искать баланс.

WBR, Igor Evgrafov.
Posted via RSDN NNTP Server 1.9 gamma
WBR, Igor Evgrafov
Re[2]: Нормальные формы в реальной жизни
От: Аноним  
Дата: 07.10.04 21:36
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>ИМХО однозначного ответа на этот вопрос не существует. С одной стороны скорость с другой семантическая раздробленность — надо искать баланс.


То, что однозначного ответа нет, я уже понял
Меня интересуют именно мнения, основывающиеся на большом практическом опыте.
Re[3]: Нормальные формы в реальной жизни
От: GarryIV  
Дата: 07.10.04 21:57
Оценка:
Hello, !

GIV>> ИМХО однозначного ответа на этот вопрос не существует. С одной

GIV>> стороны скорость с другой семантическая раздробленность — надо искать
GIV>> баланс.

> То, что однозначного ответа нет, я уже понял

> Меня интересуют именно мнения, основывающиеся на большом практическом
> опыте.

Я и говорю — можно но осторожно. Исходя из опыта и конкретных требований к БД. Так же как у вас — спорим, ругаемся, чешем репу

WBR, Igor Evgrafov.
Posted via RSDN NNTP Server 1.9 gamma
WBR, Igor Evgrafov
Re: Нормальные формы в реальной жизни
От: Aquary Россия https://wmspanel.com/
Дата: 08.10.04 00:30
Оценка: 6 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Собственно, такой вопрос: насколько оправдан отход от канонических нормальных форм при проектировании БД?

А>У нас сейчас в конторе идет живое обсуждение нового проекта и есть два лагеря: считающие, что все таблицы должны быть в 3NF, и те, кто говорит, что с введением дублирования будет получен существенный выигрыш в скорости работы, поэтому можно отойти от классики.
...
А>ЗЫ. Проект связан с веб.

Насчет выигрыша — правильно говорят... если при небольшом расхождении с теорией получается большой выигрыш в производительности — думаю, это оправдано. НО! При этом особое внимание разработчиков должно быть направлено на сохранение целостности данных, ибо сам понимаешь — скорость скоростью, а потеря данных или их неактуальности — это во много раз хуже...

Самому иногда приходится отходить от теории именно из-за скоростных характеристик... причем проекты — именно вебовские. Но расхождение происходит это только после того, как готова "классическая" схема данных с нормализованными таблицами — каждая демормализация предварительно обдумывается.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re: Нормальные формы в реальной жизни
От: Worobjoff  
Дата: 08.10.04 02:32
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте.


А>Собственно, такой вопрос: насколько оправдан отход от канонических нормальных форм при проектировании БД?

А>У нас сейчас в конторе идет живое обсуждение нового проекта и есть два лагеря: считающие, что все таблицы должны быть в 3NF, и те, кто говорит, что с введением дублирования будет получен существенный выигрыш в скорости работы, поэтому можно отойти от классики.

А>Каковы ваши соображения?


А>Особенно интересует мнение людей с большим опытом работы в области БД.


А>ЗЫ. Проект связан с веб.


Надо подумать о том, хотите ли вы расширять свою БД в будущем. Если серьезных добавлений в структуру не предвидется, то денормализованная сэкономит время на разработке. Но нормализованная БД существенно легче переносит расширение, особенно когда она уже эксплуатируется.
Re: Нормальные формы в реальной жизни
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.10.04 02:52
Оценка: 25 (6)
Здравствуйте, <Аноним>, Вы писали:
А>Каковы ваши соображения?
Соображения — очень простые. Premature optimization is the root of all evil. В переводе на SQL это означает — проектируйте все как минимум в 3NF. Денормализацию добавляйте по мере обнаружения проблем с быстродействием. При этом четко следите за тем, чтобы денормализация не затронула семантику. В идеале, ее вообще не должно быть видно из клиентского приложения.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Нормальные формы в реальной жизни
От: Аноним  
Дата: 08.10.04 05:48
Оценка: 5 (1)
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте.


А>Собственно, такой вопрос: насколько оправдан отход от канонических нормальных форм при проектировании БД?

А>У нас сейчас в конторе идет живое обсуждение нового проекта и есть два лагеря: считающие, что все таблицы должны быть в 3NF, и те, кто говорит, что с введением дублирования будет получен существенный выигрыш в скорости работы, поэтому можно отойти от классики.

А>Каковы ваши соображения?


А>Особенно интересует мнение людей с большим опытом работы в области БД.


А>ЗЫ. Проект связан с веб.


Как показала практика: пока не тормозит — не денормализуй. У нас проект на Оракле, денормализовать пришлось когда количество документов в небольших базах стало более 200тыс и пользователи начали слишком интенсивно делать отчеты. Если у тебя в базе таблиц более чем на 100000 строк нету, то о денормализации даже и не думай — заколебешься синхронизовать таблички. Впрочем, если разработку ведешь ты один и можешь гарантировать что все всегда совпадает — мой совет силы не имеет
Re: Нормальные формы в реальной жизни
От: Voblin Россия http://maslyaew.narod.ru/
Дата: 08.10.04 06:29
Оценка: 10 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Собственно, такой вопрос: насколько оправдан отход от канонических нормальных форм при проектировании БД?

Оправдан, но в очень редких экзотических случаях. Чаще всего отход от NF происходит вследствии лени либо оргбардака.
Кстати, существенного выигрыша в скорости отход от 3NF не даёт.

ИМХО, оптимальной будет такая стратегия (при которой и волки целы, и овцы сыты). База логически разбивается на две области:
1. Данные, вводимые пользователями. Здесь можно и нужно применять нормализацию. Резон — не дать пользователю даже принципиальной возможности ввести противоречивые данные.
2. Служебные данные, выжимаемые автоматикой из основных (итоги-подитоги, срезы актуальных данных,...) и служащие для снятия с ручника. Важно добиться того, чтобы служебные данные либо в принципе не могли сломаться, либо в случае чего могли быть удалены и перегенерированы на базе пользовательских данных. Кстати, именно так и именно для этих целей работают индексы, материализованные вьюхи и олаповские кубы.

В результате мы получаем денормализованную (данные задублировались в основной и служебной области) быструю базу, обладающую всеми вкусными достоинствами, присущими базе нормализованной.

Есть, конечно ещё один фактор против нормализации. Когда база состоит из множества табличек, к ней сложнее приделывать программный интерфейс. Проще всего общаться с 1NF
Re: Нормальные формы в реальной жизни
От: Softwarer http://softwarer.ru
Дата: 08.10.04 06:41
Оценка: 4 (1)
Здравствуйте, Аноним, Вы писали:

В дополнение к предыдущим правильным ответам, я бы отметил пару факторов.

Во-первых, денормализация требует большей культуры проектирования и реализации, выдвигает более высокие требования. По сути, денормализация делает ряд дополнительных, неочевидных связей в проекте, и если не быть к этому готовым — может стрельнуть очень сильно и неожиданно. Реализовать однажды спроектированную денормализованную базу не так трудно, но безошибочно развивать ее — намного труднее.

Во-вторых, денормализация может и затормозить проект. К примеру, если куча пользователей вводит данные, а для денормализации подсчитывается какая-нибудь табличка сумм — может оказаться очень высокая конкуренция за эту табличку, ожидания и тормоза. Это опять же к тому, что денормализацией лучше решать возникшие проблемы, а не предусматривать ее заранее.

В-третьих, денормализация предъявляет большие требования к возможностям сервера (в смысле фич). Нужен ответ на вопрос — а позволит ли сервер реализовать денормализацию хорошо? Так, не так давно я слышал мнение "транзакции в mysql есть, но там, где нужна скорость, лучше про это забыть". Если оно действительно так — денормализация, пожалуй, слишком опасное предприятие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.