powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Насколько действительно полезна нормализация?
25 сообщений из 68, страница 2 из 3
Насколько действительно полезна нормализация?
    #33042521
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюсы нормализации:
1)Относительно меньший объем данных (соответственно БД)
2)Проще прояснить моменты с целостностью данных
3)Модель более близка к реляционной теории
4)Более логически -понятная БД (хотя могут написать такое что даже в нормализованной БД без 05 литры не разберешьси)
5)Возможно при репликациях будет нужно пересылать меньшие объемы данных - если например сидите на трафике... (возможно денормализованные участки не будут нуждаться в реплицировании конечно)
6)Возможно удастся избежать некоторых JOINов

Плюсы денормализации
Трудно сказать = тобишь на вскидку особо не вспомню моментов когда это было необходимо... Но был случай, относился к CD дискам исполнителей, для какойто выборки надо было производить конкатенацию строк - было предложено сделать дополнительно столбец который будет собержать результат конкатенации этих двух строк - соответственно скорость выборок была увеличена....
В учебниках грится что к денормализации надо прибегать только тогда когда это необходимо - а это значит на Ваше усмотрение...
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33042635
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SanyLПлюсы нормализации:
1)Относительно меньший объем данных (соответственно БД)
Не факт. Если поля из "detail" таблицы сложить в одно поле "master" таблицы, то объем может быть меньше (на размер FK detail таблицы).

SanyL2)Проще прояснить моменты с целостностью данных
Что понимается под этим термином: "целостность данных"?

SanyL3)Модель более близка к реляционной теории
Ничуть...

Остальное не более убедительно.

Единственное (но несомненное!) преимущество нормализации состоит в исключении АНОМАЛИЙ (об этом написано в любом приличном учебнике).
Нормализация - это набор правил, основанных не на какой-то строгой математической теории, а на... здравом смысле. Соответственно, призывы к денормализации - это призыву к отходу от здравого смысла (не более, но и не менее, того). И опасность денормализации состоит только в возможности появления аномалий при "сборке" данных (что, как правило, проявляется не в момент разработки базы данных, а в момент ее эксплуатации).
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33042757
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SemaphoreЕдинственное (но несомненное!) преимущество нормализации состоит в исключении АНОМАЛИЙ
Не такая уж и плохая формулировка.

SemaphoreНормализация - это набор правил, основанных не на какой-то строгой математической теории, а на... здравом смысле.
Факт.

SemaphoreСоответственно, призывы к денормализации - это призыву к отходу от здравого смысла
Бред.

Денормализация - это набор правил, основанных на том же самом здравом смысле.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33042776
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
softwarer SemaphoreЕдинственное (но несомненное!) преимущество нормализации состоит в исключении АНОМАЛИЙ
Не такая уж и плохая формулировка.

SemaphoreНормализация - это набор правил, основанных не на какой-то строгой математической теории, а на... здравом смысле.
Факт.

SemaphoreСоответственно, призывы к денормализации - это призыву к отходу от здравого смысла
Бред.

Денормализация - это набор правил, основанных на том же самом здравом смысле.

5!

вообще-то любопытно, по такой теме и уже вторая страница... все вроде как ясно, но споры не стихают...

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

И нормализация тоже.

P.S. платон мне друг, но истина дороже.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043204
DarkBoatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, народ, вы спасли мое душевное здоровье :), когда долго варишься в собственном соку, начинаются странные вещи...
В результате была проломлена нормализованная структура именно этого участка на основании того, что если одни запросы писать проще, то другие сложнее... Хотя, местные автоматизаторы мне это еще припомнят :)
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043674
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Заранее прошу прощения у всех за резкость - Пятница.

Хрен. А JScript не пользовали? Уверяю, гораздо проще, чем на Перле. Не вижу связи. Или у

Вас любой новый запрос вызывает икоту?

gardenman. Никто не будет разбиратся в Вашем примере. Решение о денормализации принимается

не на основе структуры, а на основе реальной скорости обработки, которая является функцией

от общего объема информации.

SanyL. Вы бы матчасть поучили, что ли. Особенно меня убили сведения, что нормализованые данные близки к реляционной теории. Реляционной теории это пофиг. Нормализация - это способ без дополнительных затрат получить целостность и непротиворечивость данных.

Денормализация предполагает, что для этого нужно задействовать дополнительные механизмы поддержки целостности и непротиворечивости. Реализовать их можно по разному: тригерами, хранимыми процедурами, тразакциями с клиента (хотя я и ярый пртивник этого метода)
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043774
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanyL
3)Модель более близка к реляционной теории

Это как? Неормализованная далека от теории? В каком смысле? Она (теория) их всех как бы рассматривает, и грит о последствиях не нормализованных. Она же (теория) говорит и проблемах нормализации выше третьей нормальной формы.


Semaphore
Что понимается под этим термином: "целостность данных"?

Удовлетворение данных некоторым логическим правила во всех состояниях БД.
Вот пример, про сложности нормализации по 3НФБК:
Пусть есть Договоры (Д), отделения (О) и подразделения (П) этих отделений. И пусть есть логическое правило: Только одно подразделение отдела может участвовать в конкретном договоре (Назовем правило S1). Очевидно есть фукциональная зависимость П->O, поскольку подразделение может принадлежать только одному подразделению (тоже логическое правило). Тогда есть функциональная зависмость ДП->О => ДП - ключ (потенциальный). Если нет правила S1, то отношение R(Д,О,П) - не удовлетворяет 3НФ, и схема может быть нормализована декомпозицией на отношения Q(Д,П), T(П,О).
Но поскольку есть S1, и означает по сути ДО->П => атрибут О - первичный (входит в ключ). Отношение R(Д,О,П) - удовлетворяет 3НФ, но не удовлетворяет 3НФБК. Очевидно, там есть избыток: если подр п1 отделения о1 уже участвоало хоть в одном договре, то любое его участие в другом приведет к повторной записи о том что п1 принадлежит о1, хотя эта информация уже есть в БД п1. Однако, если нормализовать по 3НФБК декомпозицей как и раньше, то навязать схеме зависмосить ДО->П с помощью выделения ключей не удастся. Как следствие могут занести данные так, что в одном договоре будет участвовать несколько подразделений одного отделения - нарушение ограничения целостности S1.
Чтобы схема находилась в 3НФ, и в схеме были прописаны ограничения целостности с помощью выделения ключей, ее придется привести к виду:
R(Д,О,П), T(П,О) (и, например, объявить ключами в первом отношении пары {Д,О}, {Д,П}, а во втором {П}).
Вот проектировщик стоит перед выбором:

1) схема R(Д,О,П), T(П,О) - ограничения целостности навязаны с помощью выделение ключей, но она не удовлетворяет 3НФБК и есть соответсвующая этому избыточность

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

Что лучше? Правда, в некоторых случаях на помощь 2 могут прийти триггера.
Но в общем случае есть проблема выбора.
Т.е. теория не может дать точных критериев оптимальной схемы во всех случаях, и потому пректирование может представлять из себя тскусство, наверное.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043784
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, vadiminfo!

Проблема проектирования, описанная в Вашем примере, вызвана тем, что существует бизнес-правило, накладывающее ограничения на связь Д-П, вытекающие из связи П-О. И в жизни таких, а то и похуже, ограничений полным-полно. Проблема нормализации в этом примере может быть решена вводом идентифицирующего отношения П-О, когда O становится частью первичного ключа П и, далее, появляется в Д как часть FK. Рассмотренный случай демонстрирует, что ключом к каждой табличке проектируемой БД не всегда стоит делать суррогатный автоинкремент. Иногда нужно использовать составные ключи.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043795
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Urri
Как раз я пытался сказать, что она не может быть решена в схеме 2 никак кроме, может быть, триггеров. Но мы их не рассматриваем. Т.е. ни превичными, ни альтернативными, ни внешними.
То что Вы сказали про решение не совсем понял.

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

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

Уточните Вы про первую схему или вторую говорите.
В схеме 1 ограничения навязать можно - избыток остается (ненорамлизованность по НФБК).
Во второй может быть только один FK, состоящий из единственного атрибута П.
Т.е. О в FK никак не войдет.

Суррогатный ключ ничего не меняет в это раскладе: не мешает и не помогает.
Ключей то может быть много в схеме.
Т.е. можно суррогаты добавить никак не повляияв на проблему.

Я хотел продемонстрировать, что ограничения целостности могут вызывать проблемы при нормализации выше третьей нормальной формы. Есть выбор - либо то потеряем, либо это.

Я там опечатку дал не 3НФБК, НФБК.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043885
ap99ap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkBoatmanКурсор не причем. Выборка из таблицы с фильтрацией, которая заставляет сервер прочесть ее всю подряд иногда называется scanning.

Индекс по фильтруемому полю создать не судьба?

Насколько я вник, это такая типичная база, в которой количество селектов во мнорго раз превышает количество апдейтов. Для таких случаев чем больше индексированных полей - тем лучше.

Соответственно, джойны по индексированным полям будут достаточно быстрыми.
Соответственно, базу можно и нужно нормализовать до третьей формы.
О чем тут неделю спорить?
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043889
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer SemaphoreСоответственно, призывы к денормализации - это призыву к отходу от здравого смысла
Бред.
Денормализация - это набор правил, основанных на том же самом здравом смысле.
Таким образом, Вы хотите сказать, что здравый смысл лежит в основе и нормализации, и ее отрицании. Вот это действительно бред!
Денормализация - удел тех, кто не понимает очень простого правила: то как задумывалась БД, и то как она (в конечном счете) используется, разные вещи. Любая более или менее серьезная система имеет свою логику развития, которая может быть отличной от логики, заложенной разработчиком. (Дюма-отец говорил: "Не я управляю свими героями, но они водят кончик моего пера"). А, следовательно, велика вероятность того, что в денормализованной БД проявятся аномалии, и пользователи увидят информацию, которой... не существовало и не существует в реальности.
Денормализация основана не на здравом смысле, а на благих пожеланиях, которыми, как известно, "вымощена дорога в ад".
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043904
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfo Semaphore
Что понимается под этим термином: "целостность данных"?
Удовлетворение данных некоторым логическим правила во всех состояниях БД.
Вот пример, про сложности нормализации по 3НФБК:
Пусть есть Договоры (Д), отделения (О) и подразделения (П) этих отделений. И пусть есть логическое правило: Только одно подразделение отдела может участвовать в конкретном договоре (Назовем правило S1). Очевидно есть фукциональная зависимость П->O, поскольку подразделение может принадлежать только одному подразделению (тоже логическое правило). Тогда есть функциональная зависмость ДП->О => ДП - ключ (потенциальный). Если нет правила S1, то отношение R(Д,О,П) - не удовлетворяет 3НФ, и схема может быть нормализована декомпозицией на отношения Q(Д,П), T(П,О).
Но поскольку есть S1, и означает по сути ДО->П => атрибут О - первичный (входит в ключ). Отношение R(Д,О,П) - удовлетворяет 3НФ, но не удовлетворяет 3НФБК. Очевидно, там есть избыток: если подр п1 отделения о1 уже участвоало хоть в одном договре, то любое его участие в другом приведет к повторной записи о том что п1 принадлежит о1, хотя эта информация уже есть в БД п1. Однако, если нормализовать по 3НФБК декомпозицей как и раньше, то навязать схеме зависмосить ДО->П с помощью выделения ключей не удастся. Как следствие могут занести данные так, что в одном договоре будет участвовать несколько подразделений одного отделения - нарушение ограничения целостности S1.
Чтобы схема находилась в 3НФ, и в схеме были прописаны ограничения целостности с помощью выделения ключей, ее придется привести к виду:
R(Д,О,П), T(П,О) (и, например, объявить ключами в первом отношении пары {Д,О}, {Д,П}, а во втором {П}).
Вот проектировщик стоит перед выбором:

1) схема R(Д,О,П), T(П,О) - ограничения целостности навязаны с помощью выделение ключей, но она не удовлетворяет 3НФБК и есть соответсвующая этому избыточность

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

Что лучше? Правда, в некоторых случаях на помощь 2 могут прийти триггера.
Но в общем случае есть проблема выбора.
Т.е. теория не может дать точных критериев оптимальной схемы во всех случаях, и потому пректирование может представлять из себя тскусство, наверное.
Что лучше? Давайте разберемся. Итак, подразделение однозначно определяет отделение, которому принадлежит. То есть, П -> О - первая ФЗ. Вторая ФЗ: договор определяет подразделение (правило S1), то есть, Д -> П. В результате приходим к двум отношениям: R1(#П, О) и R2(#Д, П). Отношение R2 не позволит нам иметь более более одного подразделения для данного договора, а отношение R1 поставит однозначное соответствие между подразделением и отделением, которому оно принадлежит.
Ваша ошибка вот здесь: "Тогда есть функциональная зависмость ДП->О => ДП - ключ (потенциальный)". Вы (напрасно) используете superkey, удалите из ключа договор (подразделение само однозначно определяет отделение).
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043914
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Денормализация предполагает, что для этого нужно задействовать дополнительные механизмы поддержки целостности и непротиворечивости.
Реализовать их можно по разному: тригерами, хранимыми процедурами, тразакциями с клиента (хотя я и ярый пртивник этого метода)
Этот ответ стоит чуть дополнить. Ряд возможностей денормализации сегодня поддерживаются серверами БД, то есть "без дополнительных усилий". Это materialized view, это calculated fields, это nested tables и varrays, это, наконец, классический вариант включения дополнительного поля в уникальный ключ (приводящий к поддержанию целостности в дочерней таблице FK-constraint'ом). Можно назвать пару вещей, которые хоть формально не денормализация, но очень на нее похожи - на первом месте, безусловно, bitmap join indexes (это индекс который строится для таблицы A по значениям из таблицы B, взятых по внешнему ключу A->B). Это, собственно, умение "брать значения из индекса" - в MSSQL, как мне говорили, появляется специально заточенная под это фича "класть значения некоторых полей только в листья индекса, но не в промежуточные узлы".
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043975
Semaphore
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerРяд возможностей денормализации сегодня поддерживаются серверами БД, то есть "без дополнительных усилий". Это materialized view, это calculated fields, это nested tables и varrays, это, наконец, классический вариант включения дополнительного поля в уникальный ключ (приводящий к поддержанию целостности в дочерней таблице FK-constraint'ом). Можно назвать пару вещей, которые хоть формально не денормализация, но очень на нее похожи - на первом месте, безусловно, bitmap join indexes (это индекс который строится для таблицы A по значениям из таблицы B, взятых по внешнему ключу A->B). Это, собственно, умение "брать значения из индекса" - в MSSQL, как мне говорили, появляется специально заточенная под это фича "класть значения некоторых полей только в листья индекса, но не в промежуточные узлы".
Во-первых, хотелось бы заметить, что создатели СУБД стремятся удовлетворить пожелания разработчиков программного обеспечения, далеко не всегда задумываясь о теоретических основах и последствиях своих решений. Об этом много говорилось на разных конференциях, например, посвященных вопросам стандартизации SQL (в частности, Joe Celko техническим редактором комитета стандартизации ANSI X3H2). Поэтому ссылаться на те или иные механизмы какой-то СУБД, надо с большой осторожностью, не забывая при этом, что большинство СУБД - коммерческие продукты и предназначены (в том числе) для получения прибыли (иногда потворствуя популизму). Во-вторых, опасно и то, что создатели СУБД порой весьма агрессивно пытаются "протащить" через стандарт те решения, которые приняты в данных СУБД, то есть, использовать стандарты, как средство конкурентной борьбы.
1. "materialized view" и "calculated fields" - эти два механизма не имеют никакого отношения к нормализации. Есть понятие таблицы и есть понятие представления (View) в полном соответствии со стандартом ANSI SPARC. Нормализация распространяется только на отношения (на концептуальном уровне), структуру таблиц (на физическом уровне), но не на view и не на вычисляемые поля, которые относятся к представительскому уровню. Никто и никогда не рассматривал вопросы нормализации на уровне представления информации.
2. "nested tables и varrays". Рассматривая вопрос о нарушении 1НФ посредством "сложных" структур, необходимо определиться с понятием атомарности атрибута. Например, является ли дата или строка атомарной величиной? Это относится и к вложенным структурам (таблицам) и массивам и BLOb полям. Почему строка, состоящая из символов, атомарна, а массив состоящий из элементов, неатомарен? То, что атомарно на одном уровне, может быть нетомарно на другом (более низком) уровне. Эта простая истина давно известна. Например, удобно хранить рабочий календарь на каждый месяц в массиве из 31 элемента. И если задача, стоящая перед разработчиком, не предусматривает рассмотрения отдельного элемента этого массива, то почему разработчик не может принять атомарность рабочего календаря? Какое же в этом нарушение 1НФ?
3. "классический вариант включения дополнительного поля в уникальный ключ (приводящий к поддержанию целостности в дочерней таблице FK-constraint'ом)". Что-то есть в этой "классике" от лукавого... Нет ни описания примера, ни рассмотрения альтернатив. Можно подробнее рассмотреть эту ситуацию "с поддержанием целостности"?
4. "Можно назвать пару вещей, которые хоть формально не денормализация"... Конечно, можно. Можно поговорить о погоде, например. Это тоже не имеет отношения к денормализации, но зато всегда злободневно.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043981
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Semaphore. Не согласен с Вами. Денормализация - это обычный прием проектирования. Другое дело, что для ее применения нужно сто раз отмерить. И, необходимо, что бы проектировщик в полном объеме продумал и реализовал поддержку целостности и непротивороречивости.
Немного перефразируя Вас () - денормализация - удел тех, кто четко и ясно понимает, к чему приведут ее последствия и знает как с этим боротся.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33043998
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Semaphore

Ваша ошибка вот здесь: "Тогда есть функциональная зависмость ДП->О => ДП - ключ (потенциальный)". Вы (напрасно) используете superkey, удалите из ключа договор (подразделение само однозначно определяет отделение).

К сожелению, Вы не совсем поняли смысл примера (о какой пробле речь идет). В отношении R(Д,О,П) Д не является ключем. И потому ДП - это не суперключ в этом отношении а просто ключ. Т.е. возможно
Код: plaintext
1.
2.
3.
4.
5.
Д  О П
------
д1 о1 п1
д2 о1 п1
д1 о2 п2
Т.е. ни Д, ни П в этом отношении не являются уникальными. Вы устранив мои "ошибки" получили схему 2? Ваше R1(#П, О) и R2(#Д, П) это мое схема R(Д,П), T(П,О). Так и я ее получал. Вы получили через типа синтез, я через декомпозицию универсального отношения. Одно и тоже. Но проблема в том, что нельзя навязать ограничение целостности S1 такой схеме с помощью выделения ключей зависмомсть ДО->П.
Т.е. пользователь может ввести на один договор два подразделения одного отделения. Т.е. проблема осталась, тем более, что я такую схему описывал.
Вот в схему 1 можно навязать, но она избыточна.
Тема примера выбор между нормализацией по НФБК и ограничением целостности. Точнее навязыванием схеме функциональных зависимостей ПО.

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

R2(#Д, П). 
----------
д1 п1
д1 п2   

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

R2(#Д, П). 
----------
д1 п1
д1 п2   


Не может быть двух из одного отделения.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044008
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. S1 это не Д -> П, а именно ДO -> П.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044018
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. суть проблемы, что как вы не объявляйте ключи в схеме R1(П, О) и R2(Д, П) Вы не навяжете функциональную зависмость ДO -> П. Но схема в НФБК.
Это схема 1 (в смысле структуры - ключи объявлять можно любыми).

В схеме
R1(П, О) и R2(Д, П, О) можно навязать, например, объявив составной ключ {Д,О} среди прочих. Но такая схема не удовлетворяет НФБК из-за транзитивной зависимости {Д,П}->П->О, хотя и удовлетворяет 3НФ, поскольку О входит в состав ключа {Д,О}.


Т.е. НФБК имеет проблемы с навязанностью функциональных зависмостей - не все ф зависимости ПО ей можно навязать. И стал быть с ограничениями целостности у нее проблемы.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044033
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется речь идет о том, что нельзя навязать 1 схеме ДO -> П без навязывания зависимостей, которых нет в ПО. Типа Д -> П. Потому что такое лекарство хуже болезни.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044035
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Semaphore
Добавлю от себя. Денормализация - это обычный прием проектирования основанный на отсутствии здравого смысла... :)
Наоборот. Здравый смысл подсказывает, что в некоторых случаях можно поступится выгодами нормализации, ради выгод в скорости выбоорок.

что отмерять-то будете? Аномалии?... Но появится новый разработчик, который не знает об этих "обходных" решениях
Это вопрос о том, нужна ли для БД документация? К нормализации/денормализации никакого отношения не имеет

Не сочтите за труд и объясните, как обеспечить поддержку "целостности" и непротиворечивости. Есть у Вас в "кармане" набор
Ну есть такой набор. Если в какой-то таблице есть поле, значение которого может быть однозначно получено из других данных, занесенных в базу, то при обновлении таблиц от которых это значение зависит, должен быть сделан пересчет этого поля в единой транзакции с изменением данных в соответсвующих таблицах. Кажется написал путано, но понятно.

Ну, вот и раскройте существо этого "четкого и ясного понимания". А мы посмотрим, надо ли выбирать этот удел.
А вот этого не могу . Но эмпирический критерий есть. Если новая база у Вас на автомате получается сразу по 3NF, то "четкое и ясного понимание" у Вас есть.

Отметьте, пожалуйста, что не ВО ВСЕХ базах имется данные, когорые надо нормализовать по 4 и 5 формах.

+++++
Автоподпись - Близкий друг королевы Задолбало.
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044041
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2
Денормализация - это обычный прием проектирования.

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

Cat2
Отметьте, пожалуйста, что не ВО ВСЕХ базах имется данные, когорые надо нормализовать по 4 и 5 формах

Субя по всему уже у НФБК есть проблемы с ограничениями целостности. И если проетировщик выбрал их, то чего уж думать о 4 и 5 формах?
...
Рейтинг: 0 / 0
Насколько действительно полезна нормализация?
    #33044106
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SemaphoreВо-первых, хотелось бы заметить, что создатели СУБД стремятся удовлетворить пожелания разработчиков программного обеспечения,.....предназначены (в том числе) для получения прибыли (иногда потворствуя популизму)
В-последних, хотелось бы ответить, что лично мне малоинтересен вопрос, какой бы красивой была сферическая СУБД в вакууме, если бы ей не требовалось решать прикладные задачи.

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


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