powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Насколько действительно полезна нормализация?
18 сообщений из 68, страница 3 из 3
Насколько действительно полезна нормализация?
    #33044150
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
vadiminfo
Такая постановка вопроса означет необходимость нормализации
Так я об этом и писал выше. Сначала нормлизуем, а потом, при нужде, денормлизуем. Но очень акуратно.
============
прошу прощения сечас нет времени подробно ответить на все
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044272
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo2 Urri
То что Вы сказали про решение не совсем понял.

когда O становится частью первичного ключа П и, далее, появляется в Д как часть FK.

В этой фразе не понял в каком смысле О является частью первичного ключа П? П - это атрибут. Я выделенные ключи обозначал взятием в фигурные скобки. Т.е. {O,П} - это выделенный ключ (не важно первичный или альтернативный) - декларативно объявляется уникальность и запрет на пустые значения. Если П это ключ, в который входит О, то под ним вы понимаете, то что я под {O,П}?Да, видимо, так.
vadiminfoИ в какм смысле О появляется в Д? Д - пока обозначет единичный атрибут, а не множество атрибутов.

Уточните Вы про первую схему или вторую говорите.
В схеме 1 ограничения навязать можно - избыток остается (ненорамлизованность по НФБК).
Во второй может быть только один FK, состоящий из единственного атрибута П.
Т.е. О в FK никак не войдет.Значит, скорее, про первую.
Я в своем посте обозначил буквами сущности, а не их атрибуты. И имел в виду такую схему.
ОтделыPK{О}О - PK
ПодразделенияPK{О+П}О - PK и FK Cсылаемся на ОтделыП - PK Подразделение внутри отдела
ДоговорыPK{Д}Д - PK
Как я понял, у Договоров с подразделениями связь многие-ко-многим (иначе бизнес-правило "только одно подразделение отдела может принимать участие в договоре" теряет смысл).
Договоры - Подразделения PK{Д+О+П}Д - PK и FK Cсылаемся на ДоговорыО - PK и FK Cсылаемся на Подразделения; но через них - и на отделыП - PK и FK Cсылаемся на Подразделения.
Ну и, для реализации озвученного бизнес-правила, накладываем ограничения в виде дополнительного уникального индекса {Д, О} на "Договоры - Подразделения".
Это не будет соответствовать НФБК? Ну а третьей-то, хотя бы, будет?
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044322
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Urri
Так у Вас 4 отношения?
Среди которых R1(Д,О,П) и R2(О,П)?
Если так, то R1(Д,О,П) не удовлетворяет НФБК => схема не удовлетворяет НФБК.
(Есть конечно и третья схема из одного отношения R1(Д,О,П) - она и не в НФБК и нельзя навязать зависимость П->О, и очевидны аномалии ввода и удаления. Но одно отношение.)
У Вас же 4. Чем больше отншений при прочих равных условиях, тем очевидно менее оптимальна схема. А она равна по условиям схеме из двух отношений R1(Д,О,П) и R2(О,П). Не в НФБК и можно реализовать ограничение целостности S1 (просто объявить уникальной пару {Д,О}). В R2 ключем объявить П. В принципе все фукциональные зависимости навязаны с точки зрения теории. Для того, чтобы все-таки обеспечить ограничения целостности и не допустить в R1 ввода подразделений, которых нет в R2 или не приписать чужих подразделенй отделению в R3 можно объявить сверх того суперключ в R2 - пару {О,П} ограничение ссылочной целостности с внешним ключем {О,П} в R1. Но это детали - просто этой пары достаточно, чтобы получить то же, что Вы получили с 4 отношениями.

Главное с точки зрения темы, что нормализация выше 3 формы (НФБК) имеет проблемы с ограничениями целостности. Т.е. чтобы показать, что этот пример не говорит об этом, надо чтобы схема была и в НФБК, и обеспечивались все ограничения целостности из примера, включая S1, но только они (например, никаких Д->П не должно быть).

Поскольку R1(Д,О,П) нарушает НФБК, то его быть не должно. А если его нет, то нельзя навязать ДО -> П с помощью декларативных ограничений целостности.



На практике и с триггерными схема R1(Д,О,П), R2(О,П) может оказаться предпочтительней. Так как О в R1 - просто в этом случае вычислимое поле, а пользователь вводит тока Д и П. Потому что скорей всего в схеме R1(Д,П), R2(О,П) - триггер обеспечивающий S1 может иметь сложности в зависимости от СУБД. Например в Оракле - с мутейтинг тэйбл придется столкнуться. Да и просматривать он должен гораздо больше, чем триггер первой схемы. Но так или иначе сложнее прояснять моменты с целостностью данных

А было утверждение

SanyL
2)Проще прояснить моменты с целостностью данных


До 3НФ включительно - это скорей всего так, а вот с НФБК - это, наверное, не так.

Кроме того, нормализация и по 3НФ (и вообще) может приводить к появлению отношений, которые не соответсвуют сущностям ПО. Т.е. может приводить к неадекватному представлению сущностей реального мира. Плюс дополнительные соединения.

С другой стороны преимущества нормализации очевидны - устранение избыточности и аномалий ввода и удаления.

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

Однако, считается, что опытный пректировщик может спроектировать и без нормализации. В любом случае вопрос проектирования БД - вопрос искусства проектировщика в сложных случаях, поскольку теория не дает критериев оптимальной схемы на все случаи.

Наши парни не заморачиваются нормализацией, и опыт у них есть.

Однако, я наблюдал БД, где явные нарушения 3НФ приводили не только большой избыточности, но и усложняли написание запросов, да и к противоречиям в данных - т.е там и ограничения целостности трудновато было обеспечить, да и не утруждали себя их обеспечением разработчики.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044502
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoОднако, считается, что опытный пректировщик может спроектировать и без нормализации.
Я бы сказал чуть иначе - без явно выделенного этапа нормализации. Поскольку эта работа идет в фоне, в подкорке.

Что до денормализации - наверное, ее можно опять же делать сразу, но с моей точки зрения, целесообразно делать позже. Хотя бы потому, что сначала хочется посмотреть, обдумать, проверить "чистую" логическую схему, и уже когда нет сомнений в логике, спускаться к реализации.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044515
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Я бы сказал чуть иначе - без явно выделенного этапа нормализации. Поскольку эта работа идет в фоне, в подкорке.

Я имел в виду более радикальное: опытный проектировщик не знает ничего про нормальные формы, функциональные зависмости (ну может слышал сами термины). Нутром типа чувствует избыток или аномалии - чисто эвристический подход. Мне, кажется, что автор темы именно про это спрашивал.


Что касается явного выделения этапа нормализации (иногда этот этап называют этапом логического проектирования БД), то его, наверное, не присутствует в большинстве случаев. Возможно, в планах вообще есть этап проектирование БД, в который каждый уже включает что сочтет нужным.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044565
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
vadiminfo. Опытный проектировщик знает про нормальные формы, и они получваются у него на автомате. Глубокие раздумия у него вызывает обдумывание того, что что-то , возможно, нужно денормализовать.
Этапа нормализации у опытного проектировщика нет. Разве что в случаях, когда переписыватся другая база, написанная человеком, который не утруждал себя нормализацией.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044597
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2
В моей фразе под "опытный проектировщик" имелось в виду некоторые "опытные проектировщики", но не обязательно все. Т.е. нельзя сказать, что опытный проектировщик, не знающий нормальных форм всегда спроектирует хуже, чем тот который знает. Причем это не мое мнение, а я где-то вычитал.

Этапа нормализации у опытного проектировщика нет.

Я пытался сказать, что такого этапа, скорей всего, нет у многих: и опытных, и, что хуже, у не опытных проектировщиков. Однако, он рекомендуется в толстых книгах.
И в общем случае он может быть и у опытного проектировщика. Наверное, во многих случаях сами функциональные зависимости довольно простые, и потому можно обойтись без явного выделения этого этапа.
Но, например, если было где-то явно написано, что схема нормализована по 3НФ, например, а потом денормализована так-то и так-то, то врядли в этом был вред для другого проектировщика, который бы сопровождал БД в будующем.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044751
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoТ.е. Ваша схема не допускает состояние БД
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
R1(#П, О)
---------
п1 о1
п2 о2

R2(#Д, П). 
----------
д1 п1
д1 п2   
А такое состояние допустимо. На одном договоре может быть много подразделений. Но не допустимо
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
R1(#П, О)
---------
п1 о1
п2 о1

R2(#Д, П). 
----------
д1 п1
д1 п2   
Не может быть двух из одного отделения.
Прошу прощения за то, что недопонял Вашу задачу.
Но должен заметить, что рассматриваемая Вами задача выходит за пределы понятия ФЗ (функциональной зависимости), а, следовательно, не может рассматриваться через "призму" нормализации.ФЗ - это качественное понятие, основанное на том, что один атрибут (или набор атрибутов) определяет другой набор атрибутов. Вот, например, определение Озкарахана: "атрибут (или сущность), являющийся областью определения, однозначно определяет атрибут (или сущность) области значений" (см. Э. Озкарахан "Машины баз данных", М.Мир, 1989). Но Вы в своей задаче вводите количественную характеристику "только одно подразделение данного отделения", считая ее частью ФЗ. Давайте слегка модифицируем это требование: "только два (три, ..., N) подразделения отделения могут участвовать в выполнении договора". Требование "только одно подразделение" ввело Вас в заблуждение, сподвигнув на поиски дополнительных ФЗ там, где их нет. Если мне не изменяет память, то что-то подобное рассматривалось Фейгиным (Fagin R. Multivaled dependencies and new normal form for relation databases, ACMTrans. on Database Systems, 1977 или других работах).
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044754
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer SemaphoreВо-первых, хотелось бы заметить, что создатели СУБД стремятся удовлетворить пожелания разработчиков программного обеспечения,.....предназначены (в том числе) для получения прибыли (иногда потворствуя популизму)
В-последних, хотелось бы ответить, что лично мне малоинтересен вопрос, какой бы красивой была сферическая СУБД в вакууме, если бы ей не требовалось решать прикладные задачи.
Один умный человек сказал, что "нет ничего практичнее хорошей теории". Правда, чтобы понять это надо хотя бы знать теорию...
softwarerЛет десять назад я как и Вы полагал, что serializable - единственный нормальный режим работы БД. Потом я смягчил свою позицию - и не вижу причин возвращаться в те времена.
Ваши догадки обо мне не очень уместны. Вы очевидно хотите аппелировать к своему десятилетнему опыту... мой опыт работы с БД примерно в два раза больше. А Ваше смягчение позиции может свидетельствовать как о раздумиях, так и о неумении размышлять.

PS. Будем все же говорить по теме или продолжим обсуждать друг друга?
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044850
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Semaphore
Как же выходит за пределы ФЗ? Пожалуста все то же формально: есть две ФЗ вытекающие из ПО: П->О и ДО->П. Они порождают остальные с помощью аксим вывода Амстронга. Все остальное в моем примере просто интерпритация этих формальностей для наглядности. Потому что моей целью было ответить на вопроос и тем кто не изучал теорию рел БД про нормальные формы и огр целостности.

Что касается "только один", то это входит в определение ФЗ. Это и есть обеспечение однозначного определения атрибута в моем примере: пара ДО однозначно благодаря этому опрделяет П. Или Вы думаете нет?

PS
Хочу обратить Ваше внимание на то что книга Э. Озкарахан "Машины баз данных", М.Мир, 1989 (а она сейчас передо мной) не претендует на изложение теории рел баз данных - у нее другая цель: машины БД. От этого определения которые там есть недостаточно формально строги, и допучскают видимо Вам истолковать их как-то по своему. Я, однако, ввел "количественную характеристику" именно ради однозначного определения атрибута. Так чтобы у меня была именно функцианальная зависмость, т.е. чтобы, выражаясь Вашим языком, попасть в пределы ФЗ.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33045923
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SemaphoreОдин умный человек сказал, что "нет ничего практичнее хорошей теории". Правда, чтобы понять это надо хотя бы знать теорию...
Отрадно, что хотя бы в чужих словах Вы не ошибаетесь.

Semaphore softwarerЛет десять назад я как и Вы полагал, что serializable - единственный нормальный режим работы БД. Потом я смягчил свою позицию - и не вижу причин возвращаться в те времена.
Ваши догадки обо мне не очень уместны. Вы очевидно хотите аппелировать к своему десятилетнему опыту...
Отнюдь. Я апеллирую к возрасту, когда придерживался столь категоричного подхода. Апеллировать к опыту - совершенно бессмысленно во флеймовой дискуссии. Помимо прочего, существует одна из любимых мной фраз:

- Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один.

SemaphorePS. Будем все же говорить по теме или продолжим обсуждать друг друга?
Простите, и что Вы теперь называете темой? Мне так казалось, что оной является флейм на тему "Нормализация forever и никаких гвоздей".
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33046336
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoТ.е. S1 это не Д -> П, а именно ДO -> П.

На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется.
Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа :
П(П#, O#) , O(O#).

После упразднения ФЗ задачка естественно вырождается, остается только
Д->ПО на что видимо Urri и намекал.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33046409
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется.
Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа :
П(П#, O#) , O(O#).

Не ER - метологию, а теорию рел БД. И не первичного ключа а просто ключа О станивтся частью. И потому становится первичным атрибутом. Это имеет значение: отношение находится в 3НФ, но не НФБК. Там для обозначение отношений (а не сущностей и даже не типов сущностей - это из модели сущность-связь, а мы в реляционной) использовались R1 и R2.
Обозначения для РМД - ясные.


ModelR
После упразднения ФЗ задачка естественно вырождается, остается только
Д->ПО на что видимо Urri и намекал.

К срожалению, ФЗ не склонны к упраздению. Склонны к пораждению новых. Задачка вроде не вырождалась ни естественно, ни противоестественно.

Я не уверен Вы про ту задачку говорите: есть три атрибута Д, О, П
Есть две ФЗ: ДО->П и П->О.

Построить схему в НФБК, чтобы она полностью характеризовала эти ФЗ, т.е. их можно было навязать с поммощью объявления ключей (не важно первичных альтернативных).

Я утверждаю, что этого нельзя сделать. Потому что если есть в схеме отношение R(Д,О,П) - то схема не в НФБК, а если этого отношения нет, то нельзя навязать ДО->П, (не навязывая ФЗ, которых нет типа Д->П).

Вы утверждаете обратное? Приведите схему.

Вывод: нормализация выше 3НФ имеет проблемы с ограничениями целостности.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33046677
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo ModelR
На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется.
Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа :
П(П#, O#) , O(O#).

Не ER - метологию, а теорию рел БД. И не первичного ключа а просто ключа О станивтся частью. И потому становится первичным атрибутом. Это имеет значение: отношение находится в 3НФ, но не НФБК. Там для обозначение отношений (а не сущностей и даже не типов сущностей - это из модели сущность-связь, а мы в реляционной) использовались R1 и R2.
Обозначения для РМД - ясные.

Ну, единственно просил бы пояснить термин "первичный атрибут".
vadiminfo ModelR
После упразднения ФЗ задачка естественно вырождается, остается только
Д->ПО на что видимо Urri и намекал.

К срожалению, ФЗ не склонны к упраздению. Склонны к пораждению новых. Задачка вроде не вырождалась ни естественно, ни противоестественно.

Иногда вместо того чтобы решать задачу полезно подумать над ее переформулировкой. Такова была мысль.
vadiminfo
Вывод: нормализация выше 3НФ имеет проблемы с ограничениями целостности.
Ни с этим утверждением, ни с Дейтом (см.седьмое издание, стр.447: " попытка достижения двух целей , а именно - декомпозиции исходной переменной-отношения на переменные-отношения, находящиеся в НФБК, и декомпозиции исходной переменной-отношения на независимые переменные-отношения, в некоторых случаях может привести к конфликтной ситуации" ) никто спорить и не собирался.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33046887
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Ну, единственно просил бы пояснить термин "первичный атрибут".

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

ModelR
Ни с этим утверждением, ни с Дейтом (см.седьмое издание, стр.447: " попытка достижения двух целей , а именно - декомпозиции исходной переменной-отношения на переменные-отношения, находящиеся в НФБК, и декомпозиции исходной переменной-отношения на независимые переменные-отношения, в некоторых случаях может привести к конфликтной ситуации" ) никто спорить и не собирался.


Однако, ранее , когда высказывались плюсы нормализации в теме было сделано предположение, которое я хотел уточнить этим примером.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33048105
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2SanyL. Вы бы матчасть поучили, что ли. Особенно меня убили сведения, что нормализованые данные близки к реляционной теории. Реляционной теории это пофиг. Нормализация - это способ без дополнительных затрат получить целостность и непротиворечивость данных.

Денормализация предполагает, что для этого нужно задействовать дополнительные механизмы поддержки целостности и непротиворечивости. Реализовать их можно по разному: тригерами, хранимыми процедурами, тразакциями с клиента (хотя я и ярый пртивник этого метода)

Ну раз вы отправляете меня учить мат часть - то пожалуй стоит вам напомнить про нормальные формы БД... Я думаю что вы человек взрослый и в состоянии сами найти (например на yandex) что такое:
Первая нормальная форма базы данных
Вторая нормальная форма базы данных
Третья нормальная форма базы данных

Отсюда и вытекло мое, несколько кривое высказывание - за которое многие постарались зацепиться = хотя смысл его наверное поняли тоже...
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33048478
werwerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanyL
Отсюда и вытекло мое, несколько кривое высказывание - за которое многие постарались зацепиться = хотя смысл его наверное поняли тоже...

практикующие разработчики, уверенно могу сказать, сейчас ржут над фразой ...хотя смысл его наверное поняли тоже...

не хотите попробовать нормализовать собственные высказывания? по крайней мере до 1НФ...
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33049793
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
werwerer
практикующие разработчики, уверенно могу сказать, сейчас ржут над фразой ...хотя смысл его наверное поняли тоже...


Над чем? У вас в речи ляпов не бывает? Причем ляп не связанный со знаниями - а именно речевой! У вас видимо несколько больное чувство юмора...

Я кстати тоже практикующий разработчик........
...
Рейтинг: 0 / 0
18 сообщений из 68, страница 3 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Насколько действительно полезна нормализация?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]