|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Здравствуйте. Очень прошу помочь мне с нормализацией таблицы, нужно для курсового проекта. Я совершенно запутался в формах нормализации и не уверен: правильно ли применил к БД. Дело в том, что мне сказали, что не может пройти первая и третья нормализация, но при этом не быть второй (как в моем случае). В целом, мне кажется, что я описал шаги нормализации неправильно. Прошу помочь, очень нужно правильно написать эту главу. Финальную модель мне подтвердили, мне просто нужно описать переход от модели до нормализации к модели после нормализации. Модель до нормализации. Мое описание: Первая нормальная форма В первой нормализации нам, во-первых, нужно убрать повторяющиеся столбцы в таблицах. В данном случае, повторяющихся столбцов нет. Во-вторых, в таблицах должны быть атомарные атрибуты. В таблице болезней у нас есть атрибут лекарств. Данный атрибут может содержать в себе массив значений. Для того, чтобы от этого избавиться, нам нужно создать дополнительную таблицу, Которая будет хранить в себе список лекарств. Вторая нормальная форма (?) Во второй нормализации мы решаем проблему композитных ключей. В существующей модели базы данных нет композитных ключей, а значит, вторая нормализация применена. Третья нормальная форма В третьей нормальной форме нам необходимо вынести значения, которые не зависят от ключа. В данной ситуации у нас в таблице "Сотрудник" имеется атрибут "Должность". Должность в данной ситуации определяется номером сотрудника. Для решения данной ситуации мы создаем таблицу, в которой будут отдельно содержаться должности. Нормальная форма Бойса-Кодда В форме Бойса-Кодда мы решаем проблему, которая возникает между таблицами болезнь и лекарства. Их отношение многие ко многим не соответствует данному этапу нормализации. В таком случае, мы создаем таблицу, которая будет соединять. Ключи таблицы болезней и таблицы лекарств. В таком случае, мы сможем находить соответствующие нужной болезни лекарства в этой таблице. Модель после нормализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 08:51 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Тебе все правильно сказали. По определению 3НФ требует 2НФ, а та, в свою очередь требует 1НФ. НФБК формально не требует какой-то другой НФ, но, поскольку можно доказать, что любая НФБК это, в то же время, 3НФ, то все точно так же. Оценивать нормализацию без знания предметки невозможно, т.к. сами по себе ФЗ (функциональные зависимости) это свойство предметной области, а не той или иной модели БД. В общем, найди где-нибудь учебник Дж.Дейта и прочитай соответствующую главу - там, по-моему, очень доступно все изложено. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 09:04 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
fkthatТебе все правильно сказали. По определению 3НФ требует 2НФ, а та, в свою очередь требует 1НФ. НФБК формально не требует какой-то другой НФ, но, поскольку можно доказать, что любая НФБК это, в то же время, 3НФ, то все точно так же. Оценивать нормализацию без знания предметки невозможно, т.к. сами по себе ФЗ (функциональные зависимости) это свойство предметной области, а не той или иной модели БД. В общем, найди где-нибудь учебник Дж.Дейта и прочитай соответствующую главу - там, по-моему, очень доступно все изложено. Спасибо за ответ, предметная область - информационная система больницы. Я понял про вторую нормальную форму, постараюсь ее описать. Но скажите пожалуйста, как вы считаете, правильно ли я описал остальные формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 09:07 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
2НФ это вовсе не композитные ключи, а зависимости между неключевым аттрибутом и другим неключевым аттрибутом. Пример нарушения: (Человек, Город_Проживания, Страна_Проживания), где первичный ключ это "Человек". Тут есть ФЗ Город_Проживания -> Страна_Проживания, поэтому 2НФ нарушена, исправляем декомпозицией: (Человек, Город_Проживания) + (Город, Страна) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 09:12 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
На самом деле я тут херню написал - все что выше это про 3НФ. Давно уже просто эту формалистику не повторял, т.к. на практике оно редко нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2019, 09:15 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Где такую терминологию применяют? 2НФ - отсутствуют частичные ФЗ от составного ключа. Если таких зависимостей нет, отношение уже в 2НФ. 3НФ - отсутствуют транзитивные зависимости. Если таких нет, отношение уже в 3НФ. Чтобы правильно спроектировать, надо выписать все функциональные зависимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2019, 21:30 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
ИВПГде такую терминологию применяют? 2НФ - отсутствуют частичные ФЗ от составного ключа. Если таких зависимостей нет, отношение уже в 2НФ. 3НФ - отсутствуют транзитивные зависимости. Если таких нет, отношение уже в 3НФ. Чтобы правильно спроектировать, надо выписать все функциональные зависимости. Спасибо за ответы. Видимо, мне нужно узнать что такое функциональные и транзитивные зависимости... Я немного переделал свое описание подобным образом: Первая нормальная форма В первой нормализации нам, во-первых, нужно убрать повторяющиеся столбцы в таблицах. В данном случае, повторяющихся столбцов нет. Во-вторых, в таблицах должны быть атомарные атрибуты. В таблице болезней у нас есть атрибут лекарств. Данный атрибут может содержать в себе массив значений. Для того, чтобы от этого избавиться, нам нужно создать дополнительную таблицу, Которая будет хранить в себе список лекарств. Вторая нормальная форма Во второй нормализации нам необходимо вынести значения, которые не зависят от ключа. В данной ситуации у нас в таблице "Сотрудник" имеется атрибут "Должность". Должность в данной ситуации определяется номером сотрудника. Для решения данной ситуации мы создаем таблицу, в которой будут отдельно содержаться должность Третья нормальная форма Нормализация не нужна. Вопрос: Может быть ситуация, когда первой и второй не соответствует, но после нормализации до второй формы - для достижения третьей формы ничего делать не нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 18:13 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
MonolagВидимо, мне нужно узнать что такое функциональные и транзитивные зависимости Прогулял лекции? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 18:37 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
MonolagМожет быть ситуация, когда первой и второй не соответствует, но после нормализации до второй формы - для достижения третьей формы ничего делать не нужно? Нормальные формы независимы и нарушаться могут независимо. Первая форма запрещает пихать два значения в одно поле. Вторая форма запрещает иметь поле, которое однозначно вычисляется из других полей этой же записи. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 18:42 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Нет. Само формальное определение любой НФ до 3НФ включительно требует нахождения в "более младшей" НФ. Я выше писал уже об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 18:52 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВторая форма запрещает иметь поле, которое однозначно вычисляется из других полей этой же записи. Снова нет. Вторая нормальная форма Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от каждого её потенциального ключа ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 18:58 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
fkthatСамо формальное определение любой НФ до 3НФ включительно требует нахождения в "более младшей" НФ. Не совсем. Просто если нарушается "младшая" НФ, становится невозможно строго доказать соответствие "старшей". PS: Хитровыподвёрнутые определения из вики это, конечно, хорошо, но они не приблизят ТСа к пониманию сути вещей. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 20:19 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovPS: Хитровыподвёрнутые определения из вики это, конечно, хорошо, но они не приблизят ТСа к пониманию сути вещей. Вообще-то это "хитровыподвёрнутое определение" из учебника Дейта. Поскольку ТСа волнует именно формальная сторона вопроса (как я понял), то стоит именно формальным определениям и следовать. На практике, конечно, так никто не делает - обычно и так понятно, есть косяки с нормализацией или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 20:37 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Тут и Patient и Employee являются персонами. Я-бы на этом сыграл. Вообще правильно было сказано что нужно глубже знать предметную область и задавать именно по ней вопросы. Информации в диаграмме может не хватать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 20:51 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
fkthatобычно и так понятно, есть косяки с нормализацией или нет. Да нет, как раз на практике-то всё не так просто и нормальность сильно определяется предметной областью. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 21:02 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
fkthatMonolagВидимо, мне нужно узнать что такое функциональные и транзитивные зависимости Прогулял лекции? Нормализацию, к сожалению, точно прогулял :) Собственно, конспект лекций не прояснил ситуацию. Всем большое спасибо за ответы! В общем-то, я хотел проверить свою работу по нормализации на правильность, страшно сдавать неправильную работу. Прочитал подробнее про связи и формы, не стал исправлять последнюю версию, надеюсь, я не ошибся :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 21:51 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Monolag Вопрос: Может быть ситуация, когда первой и второй не соответствует, но после нормализации до второй формы - для достижения третьей формы ничего делать не нужно? Может быть ситуация когда первой и второй соответствует, а третьей не соответствует. Но если соответствует третьей, то соответствует второй: третья более сильная, чем вторая. НФБК более сильная, чем третья. Соответственно, может быть в третьей, но не быть в НФБК. И так дальше: 4 сильнее НФБК, 5 сильнее 4. А ведь есть и 6 как бы, выше которой нет. Т.е., например НФБК соответствует, но может быть избыточность: не соответствует 4. Правда, все же это уже как бы выглядит как теоретическое изучение всех теоритически возможных избыточностей. Но на самом деле, есть еще понятие полноты схемы. В частности, там можно навязать схеме все ФЗ с помощью выделения ключей. Вот все в 3НФ могут быть полными. А в НФБК уже нет. Поэтому теория в этом случае не имеет критерия оптимальности: проектировщик стоит перед альтернативой. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2019, 22:56 |
|
Нормализация базы данных.
|
|||
---|---|---|---|
#18+
Monolag, Пациент сменит фамилию или адрес или имеет несколько адресов и телефонов, то это у Вас будут разные пациенты? А тело, которое лечат, одно и то же. По одной и той же болезни, точнее диагнозу, один врач назначит один набор лекарств, а другой врач - другие лекарства. И разным пациентам разные дозы. А лекарства могут отличаться по названиям, но иметь один и тот же базовый ингредиент, или разные упаковки с разных фабрик. Процедуры могут назначать разные врачи, процедуры как-то в отдельной ветке повисли Должность сотрудника без орг.структуры? Сотрудник может переходить на другие должности и меняться окончание WorkTime Предметная прикладная область не изучена, поэтому и модель =3П (пол, палец, потолок) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2019, 00:10 |
|
|
start [/forum/topic.php?fid=32&fpage=5&tid=1539930]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 382ms |
0 / 0 |