Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfo Такая постановка вопроса означет необходимость нормализации Так я об этом и писал выше. Сначала нормлизуем, а потом, при нужде, денормлизуем. Но очень акуратно. ============ прошу прощения сечас нет времени подробно ответить на все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2005, 20:06 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
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сылаемся на Подразделения. Ну и, для реализации озвученного бизнес-правила, накладываем ограничения в виде дополнительного уникального индекса {Д, О} на "Договоры - Подразделения". Это не будет соответствовать НФБК? Ну а третьей-то, хотя бы, будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 00:29 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
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НФ приводили не только большой избыточности, но и усложняли написание запросов, да и к противоречиям в данных - т.е там и ограничения целостности трудновато было обеспечить, да и не утруждали себя их обеспечением разработчики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 02:32 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfoОднако, считается, что опытный пректировщик может спроектировать и без нормализации. Я бы сказал чуть иначе - без явно выделенного этапа нормализации. Поскольку эта работа идет в фоне, в подкорке. Что до денормализации - наверное, ее можно опять же делать сразу, но с моей точки зрения, целесообразно делать позже. Хотя бы потому, что сначала хочется посмотреть, обдумать, проверить "чистую" логическую схему, и уже когда нет сомнений в логике, спускаться к реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 16:50 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
softwarer Я бы сказал чуть иначе - без явно выделенного этапа нормализации. Поскольку эта работа идет в фоне, в подкорке. Я имел в виду более радикальное: опытный проектировщик не знает ничего про нормальные формы, функциональные зависмости (ну может слышал сами термины). Нутром типа чувствует избыток или аномалии - чисто эвристический подход. Мне, кажется, что автор темы именно про это спрашивал. Что касается явного выделения этапа нормализации (иногда этот этап называют этапом логического проектирования БД), то его, наверное, не присутствует в большинстве случаев. Возможно, в планах вообще есть этап проектирование БД, в который каждый уже включает что сочтет нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 17:43 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfo. Опытный проектировщик знает про нормальные формы, и они получваются у него на автомате. Глубокие раздумия у него вызывает обдумывание того, что что-то , возможно, нужно денормализовать. Этапа нормализации у опытного проектировщика нет. Разве что в случаях, когда переписыватся другая база, написанная человеком, который не утруждал себя нормализацией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 20:24 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
2 Cat2 В моей фразе под "опытный проектировщик" имелось в виду некоторые "опытные проектировщики", но не обязательно все. Т.е. нельзя сказать, что опытный проектировщик, не знающий нормальных форм всегда спроектирует хуже, чем тот который знает. Причем это не мое мнение, а я где-то вычитал. Этапа нормализации у опытного проектировщика нет. Я пытался сказать, что такого этапа, скорей всего, нет у многих: и опытных, и, что хуже, у не опытных проектировщиков. Однако, он рекомендуется в толстых книгах. И в общем случае он может быть и у опытного проектировщика. Наверное, во многих случаях сами функциональные зависимости довольно простые, и потому можно обойтись без явного выделения этого этапа. Но, например, если было где-то явно написано, что схема нормализована по 3НФ, например, а потом денормализована так-то и так-то, то врядли в этом был вред для другого проектировщика, который бы сопровождал БД в будующем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2005, 21:44 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfoТ.е. Ваша схема не допускает состояние БД Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Прошу прощения за то, что недопонял Вашу задачу. Но должен заметить, что рассматриваемая Вами задача выходит за пределы понятия ФЗ (функциональной зависимости), а, следовательно, не может рассматриваться через "призму" нормализации.ФЗ - это качественное понятие, основанное на том, что один атрибут (или набор атрибутов) определяет другой набор атрибутов. Вот, например, определение Озкарахана: "атрибут (или сущность), являющийся областью определения, однозначно определяет атрибут (или сущность) области значений" (см. Э. Озкарахан "Машины баз данных", М.Мир, 1989). Но Вы в своей задаче вводите количественную характеристику "только одно подразделение данного отделения", считая ее частью ФЗ. Давайте слегка модифицируем это требование: "только два (три, ..., N) подразделения отделения могут участвовать в выполнении договора". Требование "только одно подразделение" ввело Вас в заблуждение, сподвигнув на поиски дополнительных ФЗ там, где их нет. Если мне не изменяет память, то что-то подобное рассматривалось Фейгиным (Fagin R. Multivaled dependencies and new normal form for relation databases, ACMTrans. on Database Systems, 1977 или других работах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 12:33 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
softwarer SemaphoreВо-первых, хотелось бы заметить, что создатели СУБД стремятся удовлетворить пожелания разработчиков программного обеспечения,.....предназначены (в том числе) для получения прибыли (иногда потворствуя популизму) В-последних, хотелось бы ответить, что лично мне малоинтересен вопрос, какой бы красивой была сферическая СУБД в вакууме, если бы ей не требовалось решать прикладные задачи. Один умный человек сказал, что "нет ничего практичнее хорошей теории". Правда, чтобы понять это надо хотя бы знать теорию... softwarerЛет десять назад я как и Вы полагал, что serializable - единственный нормальный режим работы БД. Потом я смягчил свою позицию - и не вижу причин возвращаться в те времена. Ваши догадки обо мне не очень уместны. Вы очевидно хотите аппелировать к своему десятилетнему опыту... мой опыт работы с БД примерно в два раза больше. А Ваше смягчение позиции может свидетельствовать как о раздумиях, так и о неумении размышлять. PS. Будем все же говорить по теме или продолжим обсуждать друг друга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 12:40 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
2 Semaphore Как же выходит за пределы ФЗ? Пожалуста все то же формально: есть две ФЗ вытекающие из ПО: П->О и ДО->П. Они порождают остальные с помощью аксим вывода Амстронга. Все остальное в моем примере просто интерпритация этих формальностей для наглядности. Потому что моей целью было ответить на вопроос и тем кто не изучал теорию рел БД про нормальные формы и огр целостности. Что касается "только один", то это входит в определение ФЗ. Это и есть обеспечение однозначного определения атрибута в моем примере: пара ДО однозначно благодаря этому опрделяет П. Или Вы думаете нет? PS Хочу обратить Ваше внимание на то что книга Э. Озкарахан "Машины баз данных", М.Мир, 1989 (а она сейчас передо мной) не претендует на изложение теории рел баз данных - у нее другая цель: машины БД. От этого определения которые там есть недостаточно формально строги, и допучскают видимо Вам истолковать их как-то по своему. Я, однако, ввел "количественную характеристику" именно ради однозначного определения атрибута. Так чтобы у меня была именно функцианальная зависмость, т.е. чтобы, выражаясь Вашим языком, попасть в пределы ФЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2005, 14:40 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
SemaphoreОдин умный человек сказал, что "нет ничего практичнее хорошей теории". Правда, чтобы понять это надо хотя бы знать теорию... Отрадно, что хотя бы в чужих словах Вы не ошибаетесь. Semaphore softwarerЛет десять назад я как и Вы полагал, что serializable - единственный нормальный режим работы БД. Потом я смягчил свою позицию - и не вижу причин возвращаться в те времена. Ваши догадки обо мне не очень уместны. Вы очевидно хотите аппелировать к своему десятилетнему опыту... Отнюдь. Я апеллирую к возрасту, когда придерживался столь категоричного подхода. Апеллировать к опыту - совершенно бессмысленно во флеймовой дискуссии. Помимо прочего, существует одна из любимых мной фраз: - Мудрость не всегда приходит с возрастом. Бывает, что возраст приходит один. SemaphorePS. Будем все же говорить по теме или продолжим обсуждать друг друга? Простите, и что Вы теперь называете темой? Мне так казалось, что оной является флейм на тему "Нормализация forever и никаких гвоздей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 12:51 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfoТ.е. S1 это не Д -> П, а именно ДO -> П. На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется. Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа : П(П#, O#) , O(O#). После упразднения ФЗ задачка естественно вырождается, остается только Д->ПО на что видимо Urri и намекал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:14 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
ModelR На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется. Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа : П(П#, O#) , O(O#). Не ER - метологию, а теорию рел БД. И не первичного ключа а просто ключа О станивтся частью. И потому становится первичным атрибутом. Это имеет значение: отношение находится в 3НФ, но не НФБК. Там для обозначение отношений (а не сущностей и даже не типов сущностей - это из модели сущность-связь, а мы в реляционной) использовались R1 и R2. Обозначения для РМД - ясные. ModelR После упразднения ФЗ задачка естественно вырождается, остается только Д->ПО на что видимо Urri и намекал. К срожалению, ФЗ не склонны к упраздению. Склонны к пораждению новых. Задачка вроде не вырождалась ни естественно, ни противоестественно. Я не уверен Вы про ту задачку говорите: есть три атрибута Д, О, П Есть две ФЗ: ДО->П и П->О. Построить схему в НФБК, чтобы она полностью характеризовала эти ФЗ, т.е. их можно было навязать с поммощью объявления ключей (не важно первичных альтернативных). Я утверждаю, что этого нельзя сделать. Потому что если есть в схеме отношение R(Д,О,П) - то схема не в НФБК, а если этого отношения нет, то нельзя навязать ДО->П, (не навязывая ФЗ, которых нет типа Д->П). Вы утверждаете обратное? Приведите схему. Вывод: нормализация выше 3НФ имеет проблемы с ограничениями целостности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 15:45 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
vadiminfo ModelR На самом деле, когда говорят ( используя ER методологию) "O становится частью первичного ключа П " , то это означает, что ФЗ П->О упраздняется. Здесь конечно следовало бы оговорить где П сущность, а где атрибут типа : П(П#, O#) , O(O#). Не ER - метологию, а теорию рел БД. И не первичного ключа а просто ключа О станивтся частью. И потому становится первичным атрибутом. Это имеет значение: отношение находится в 3НФ, но не НФБК. Там для обозначение отношений (а не сущностей и даже не типов сущностей - это из модели сущность-связь, а мы в реляционной) использовались R1 и R2. Обозначения для РМД - ясные. Ну, единственно просил бы пояснить термин "первичный атрибут". vadiminfo ModelR После упразднения ФЗ задачка естественно вырождается, остается только Д->ПО на что видимо Urri и намекал. К срожалению, ФЗ не склонны к упраздению. Склонны к пораждению новых. Задачка вроде не вырождалась ни естественно, ни противоестественно. Иногда вместо того чтобы решать задачу полезно подумать над ее переформулировкой. Такова была мысль. vadiminfo Вывод: нормализация выше 3НФ имеет проблемы с ограничениями целостности. Ни с этим утверждением, ни с Дейтом (см.седьмое издание, стр.447: " попытка достижения двух целей , а именно - декомпозиции исходной переменной-отношения на переменные-отношения, находящиеся в НФБК, и декомпозиции исходной переменной-отношения на независимые переменные-отношения, в некоторых случаях может привести к конфликтной ситуации" ) никто спорить и не собирался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 17:13 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
ModelR Ну, единственно просил бы пояснить термин "первичный атрибут". В ряде источников первичным называют атрибут, который входит хоть в один ключ. ModelR Ни с этим утверждением, ни с Дейтом (см.седьмое издание, стр.447: " попытка достижения двух целей , а именно - декомпозиции исходной переменной-отношения на переменные-отношения, находящиеся в НФБК, и декомпозиции исходной переменной-отношения на независимые переменные-отношения, в некоторых случаях может привести к конфликтной ситуации" ) никто спорить и не собирался. Однако, ранее , когда высказывались плюсы нормализации в теме было сделано предположение, которое я хотел уточнить этим примером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2005, 19:02 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
Cat2SanyL. Вы бы матчасть поучили, что ли. Особенно меня убили сведения, что нормализованые данные близки к реляционной теории. Реляционной теории это пофиг. Нормализация - это способ без дополнительных затрат получить целостность и непротиворечивость данных. Денормализация предполагает, что для этого нужно задействовать дополнительные механизмы поддержки целостности и непротиворечивости. Реализовать их можно по разному: тригерами, хранимыми процедурами, тразакциями с клиента (хотя я и ярый пртивник этого метода) Ну раз вы отправляете меня учить мат часть - то пожалуй стоит вам напомнить про нормальные формы БД... Я думаю что вы человек взрослый и в состоянии сами найти (например на yandex) что такое: Первая нормальная форма базы данных Вторая нормальная форма базы данных Третья нормальная форма базы данных Отсюда и вытекло мое, несколько кривое высказывание - за которое многие постарались зацепиться = хотя смысл его наверное поняли тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 14:01 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
SanyL Отсюда и вытекло мое, несколько кривое высказывание - за которое многие постарались зацепиться = хотя смысл его наверное поняли тоже... практикующие разработчики, уверенно могу сказать, сейчас ржут над фразой ...хотя смысл его наверное поняли тоже... не хотите попробовать нормализовать собственные высказывания? по крайней мере до 1НФ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2005, 16:00 |
|
||
|
Насколько действительно полезна нормализация?
|
|||
|---|---|---|---|
|
#18+
werwerer практикующие разработчики, уверенно могу сказать, сейчас ржут над фразой ...хотя смысл его наверное поняли тоже... Над чем? У вас в речи ляпов не бывает? Причем ляп не связанный со знаниями - а именно речевой! У вас видимо несколько больное чувство юмора... Я кстати тоже практикующий разработчик........ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2005, 10:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33048105&tid=1545900]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
217ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 284ms |
| total: | 638ms |

| 0 / 0 |
