Гость
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация базы данных. / 18 сообщений из 18, страница 1 из 1
22.05.2019, 08:51
    #39816170
Monolag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Здравствуйте. Очень прошу помочь мне с нормализацией таблицы, нужно для курсового проекта. Я совершенно запутался в формах нормализации и не уверен: правильно ли применил к БД. Дело в том, что мне сказали, что не может пройти первая и третья нормализация, но при этом не быть второй (как в моем случае). В целом, мне кажется, что я описал шаги нормализации неправильно. Прошу помочь, очень нужно правильно написать эту главу. Финальную модель мне подтвердили, мне просто нужно описать переход от модели до нормализации к модели после нормализации.

Модель до нормализации.


Мое описание:

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

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

Третья нормальная форма
В третьей нормальной форме нам необходимо вынести значения, которые не зависят от ключа. В данной ситуации у нас в таблице "Сотрудник" имеется атрибут "Должность". Должность в данной ситуации определяется номером сотрудника. Для решения данной ситуации мы создаем таблицу, в которой будут отдельно содержаться должности.

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

Модель после нормализации.
...
Рейтинг: 0 / 0
22.05.2019, 09:04
    #39816178
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Тебе все правильно сказали. По определению 3НФ требует 2НФ, а та, в свою очередь требует 1НФ. НФБК формально не требует какой-то другой НФ, но, поскольку можно доказать, что любая НФБК это, в то же время, 3НФ, то все точно так же. Оценивать нормализацию без знания предметки невозможно, т.к. сами по себе ФЗ (функциональные зависимости) это свойство предметной области, а не той или иной модели БД. В общем, найди где-нибудь учебник Дж.Дейта и прочитай соответствующую главу - там, по-моему, очень доступно все изложено.
...
Рейтинг: 0 / 0
22.05.2019, 09:07
    #39816180
Monolag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
fkthatТебе все правильно сказали. По определению 3НФ требует 2НФ, а та, в свою очередь требует 1НФ. НФБК формально не требует какой-то другой НФ, но, поскольку можно доказать, что любая НФБК это, в то же время, 3НФ, то все точно так же. Оценивать нормализацию без знания предметки невозможно, т.к. сами по себе ФЗ (функциональные зависимости) это свойство предметной области, а не той или иной модели БД. В общем, найди где-нибудь учебник Дж.Дейта и прочитай соответствующую главу - там, по-моему, очень доступно все изложено.

Спасибо за ответ, предметная область - информационная система больницы.
Я понял про вторую нормальную форму, постараюсь ее описать. Но скажите пожалуйста, как вы считаете, правильно ли я описал остальные формы?
...
Рейтинг: 0 / 0
22.05.2019, 09:12
    #39816182
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
2НФ это вовсе не композитные ключи, а зависимости между неключевым аттрибутом и другим неключевым аттрибутом. Пример нарушения:

(Человек, Город_Проживания, Страна_Проживания), где первичный ключ это "Человек". Тут есть ФЗ Город_Проживания -> Страна_Проживания, поэтому 2НФ нарушена, исправляем декомпозицией: (Человек, Город_Проживания) + (Город, Страна)
...
Рейтинг: 0 / 0
22.05.2019, 09:15
    #39816185
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
На самом деле я тут херню написал - все что выше это про 3НФ. Давно уже просто эту формалистику не повторял, т.к. на практике оно редко нужно.
...
Рейтинг: 0 / 0
23.05.2019, 21:30
    #39817369
ИВП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Где такую терминологию применяют?

2НФ - отсутствуют частичные ФЗ от составного ключа. Если таких зависимостей нет, отношение уже в 2НФ.
3НФ - отсутствуют транзитивные зависимости. Если таких нет, отношение уже в 3НФ.

Чтобы правильно спроектировать, надо выписать все функциональные зависимости.
...
Рейтинг: 0 / 0
26.05.2019, 18:13
    #39818425
Monolag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
ИВПГде такую терминологию применяют?

2НФ - отсутствуют частичные ФЗ от составного ключа. Если таких зависимостей нет, отношение уже в 2НФ.
3НФ - отсутствуют транзитивные зависимости. Если таких нет, отношение уже в 3НФ.

Чтобы правильно спроектировать, надо выписать все функциональные зависимости.

Спасибо за ответы. Видимо, мне нужно узнать что такое функциональные и транзитивные зависимости...
Я немного переделал свое описание подобным образом:

Первая нормальная форма


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

Вторая нормальная форма

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

Третья нормальная форма

Нормализация не нужна.

Вопрос: Может быть ситуация, когда первой и второй не соответствует, но после нормализации до второй формы - для достижения третьей формы ничего делать не нужно?
...
Рейтинг: 0 / 0
26.05.2019, 18:37
    #39818439
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
MonolagВидимо, мне нужно узнать что такое функциональные и транзитивные зависимости

Прогулял лекции?
...
Рейтинг: 0 / 0
26.05.2019, 18:42
    #39818440
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
MonolagМожет быть ситуация, когда первой и второй не соответствует, но после нормализации до
второй формы - для достижения третьей формы ничего делать не нужно?

Нормальные формы независимы и нарушаться могут независимо.

Первая форма запрещает пихать два значения в одно поле.
Вторая форма запрещает иметь поле, которое однозначно вычисляется из других полей этой же
записи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2019, 18:52
    #39818444
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Dimitry Sibiryakov,

Нет. Само формальное определение любой НФ до 3НФ включительно требует нахождения в "более младшей" НФ. Я выше писал уже об этом.
...
Рейтинг: 0 / 0
26.05.2019, 18:58
    #39818445
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Dimitry SibiryakovВторая форма запрещает иметь поле, которое однозначно вычисляется из других полей этой же
записи.
Снова нет.
Вторая нормальная форма

Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от каждого её потенциального ключа
...
Рейтинг: 0 / 0
26.05.2019, 20:19
    #39818466
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
fkthatСамо формальное определение любой НФ до 3НФ включительно требует нахождения в "более
младшей" НФ.

Не совсем. Просто если нарушается "младшая" НФ, становится невозможно строго доказать
соответствие "старшей".

PS: Хитровыподвёрнутые определения из вики это, конечно, хорошо, но они не приблизят ТСа к
пониманию сути вещей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2019, 20:37
    #39818472
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Dimitry SibiryakovPS: Хитровыподвёрнутые определения из вики это, конечно, хорошо, но они не приблизят ТСа к
пониманию сути вещей.


Вообще-то это "хитровыподвёрнутое определение" из учебника Дейта. Поскольку ТСа волнует именно формальная сторона вопроса (как я понял), то стоит именно формальным определениям и следовать. На практике, конечно, так никто не делает - обычно и так понятно, есть косяки с нормализацией или нет.
...
Рейтинг: 0 / 0
26.05.2019, 20:51
    #39818475
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Тут и Patient и Employee являются персонами. Я-бы на этом сыграл.

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

Информации в диаграмме может не хватать.
...
Рейтинг: 0 / 0
26.05.2019, 21:02
    #39818476
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
fkthatобычно и так понятно, есть косяки с нормализацией или нет.

Да нет, как раз на практике-то всё не так просто и нормальность сильно определяется
предметной областью.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.05.2019, 21:51
    #39818487
Monolag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
fkthatMonolagВидимо, мне нужно узнать что такое функциональные и транзитивные зависимости

Прогулял лекции?

Нормализацию, к сожалению, точно прогулял :)
Собственно, конспект лекций не прояснил ситуацию.
Всем большое спасибо за ответы!
В общем-то, я хотел проверить свою работу по нормализации на правильность, страшно сдавать неправильную работу.
Прочитал подробнее про связи и формы, не стал исправлять последнюю версию, надеюсь, я не ошибся :)
...
Рейтинг: 0 / 0
28.05.2019, 22:56
    #39819527
vadiminfo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Monolag Вопрос: Может быть ситуация, когда первой и второй не соответствует, но после нормализации до второй формы - для достижения третьей формы ничего делать не нужно?
Может быть ситуация когда первой и второй соответствует, а третьей не соответствует. Но если соответствует третьей, то соответствует второй: третья более сильная, чем вторая.

НФБК более сильная, чем третья. Соответственно, может быть в третьей, но не быть в НФБК. И так дальше: 4 сильнее НФБК, 5 сильнее 4. А ведь есть и 6 как бы, выше которой нет.

Т.е., например НФБК соответствует, но может быть избыточность: не соответствует 4. Правда, все же это уже как бы выглядит как теоретическое изучение всех теоритически возможных избыточностей.

Но на самом деле, есть еще понятие полноты схемы. В частности, там можно навязать схеме все ФЗ с помощью выделения ключей. Вот все в 3НФ могут быть полными. А в НФБК уже нет. Поэтому теория в этом случае не имеет критерия оптимальности: проектировщик стоит перед альтернативой.
...
Рейтинг: 0 / 0
29.05.2019, 00:10
    #39819546
Alex_496
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нормализация базы данных.
Monolag,

Пациент сменит фамилию или адрес или имеет несколько адресов и телефонов, то это у Вас будут разные пациенты? А тело, которое лечат, одно и то же.

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

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

Должность сотрудника без орг.структуры? Сотрудник может переходить на другие должности и меняться окончание WorkTime

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


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