powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Никак не могу однозначно разобраться с нормальными формами.
51 сообщений из 51, показаны все 3 страниц
Никак не могу однозначно разобраться с нормальными формами.
    #40049542
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Подскажите пожалуйста! Как правильно определять 2NF и 3NF? Совсем запутался.

Например есть таблица "Изготовители" с атрибутами: ID, Название, Страна, Сайт. Я думаю, что эта таблица в 3NF т.к. здесь нет транзитивной зависимости между атрибутами. Я прав? Или нет?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049545
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тривиальные определения:

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

Поэтому если в твоей таблице "Страна" - название страны, то она нарушает третью НФ (в
нескольких записях одно и то же значение). Если это поле ссылка на справочник стран -
третья НФ удовлетворена, поскольку ссылки на внешние данные не в счёт.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049548
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, благодарю за ответ! Я в принципе так и представлял себе, когда первый раз изучил нормальные формы. Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться. Подскажите еще, пожалуйста, а в какой нормальной форме на Ваш взгляд находится данная таблица?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049553
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться.

Обычно путаться начинаешь когда общаешься с людьми, которые с этим НЕ работают. В
академической среде принято использовать зубодробительные формулировки чтобы выбивать
гранты. Для практического применения таки нужна морда попроще.

Нарушение (или не нарушение) нормальных форм зависит от задачи, поэтому в отрыве от неё
определить нормальность таблицы можно не всегда.

Для некоторых задач осознанно применяется денормализация (обычно как средство улучшения
производительности системы).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049554
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Дмитрий, ты где таким сивым бредом кормишься?
Тебя еще и за ответы благодарят...


2)Pavel_124
во обоих случаях не выше, чем во второй - в первом случае страна тразитивно зависит от названия через id изготовителя,
во втором случае транзитивна должность.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049555
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, Подскажите еще, пожалуйста, а вот такая таблица "Преподаватели" в какой NF ?: ID, фио, категория (где категория фактически заполнена в таблице названием)
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049563
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124,

BCNF
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049566
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Pavel_124,

BCNF

зачеркнуть, тоже во второй
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049578
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, благодарю! Я в принципе так и понимал( как уже писал), когда первоначально изучил. Но потом меня, видимо, запутали.

И еще вопрос тогда напоследок :) А если эта таблица, на прикрепленной картинке, будет состоять только из трех строк с теми значениями, которые там сейчас представлены. Она будет оставаться 2NF ?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049579
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Первая нормальная форма запрещает пихать два значения в одно поле.

Да.

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

Нет.

Dimitry Sibiryakov
Третья нормальная форма запрещает пихать одно и то же значение в поле нескольких записей.

Нет.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049582
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, у меня мозги вскипели)
Пойду искать дальше инф. т.к. хочу разбираться однозначно.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049584
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
booby, благодарю! Я в принципе так и понимал( как уже писал), когда первоначально изучил. Но потом меня, видимо, запутали.

И еще вопрос тогда напоследок :) А если эта таблица, на прикрепленной картинке, будет состоять только из трех строк с теми значениями, которые там сейчас представлены. Она будет оставаться 2NF ?

как-то я даже затрудняюсь понять, что именно вы спрашиваете...

сейчас, с тремя строками, она в 2NF в любом смысле слова.

Про "будет оставаться" - вероятно речь идет об изменении ее состава строк.
При любом добавлении/удалении строк значение отношения становится другим.

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

С другой стороны, если, например, при добавлении, какая-то из строк таблицы физически задвоится, то представляемое таблицей отношение автоматически перестанет находится в 1 НФ.
"реляционная" таблица этого просто не позволит, поскольку существование второго экземпляра строки противоречит понятию множества и, если таблица не в 1й нормальной форме - она автотически нереляционная, то есть, не представляет реляционного отношения.
А sql-таблица, в зависимости от использованных способов поддержки поддержки целостности данных, может позволить или не позволить все что угодно - в том числе и не представлять реляционного отношения.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049585
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
хочу разбираться однозначно.

Надо просто выучить что такое функциональные зависимости и основные определения и правила связанные с ними (тривиальность, приводимость, транзитивность и т.п.)
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049586
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Dimitry Sibiryakov
Первая нормальная форма запрещает пихать два значения в одно поле.

Да.

Нет

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

На последнем настаивал Кодд в целях запрета вложенных отношений.

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

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

1НФ - это аналог 1го закона Ньютона, в данном случае она определяет что может разглядываться как реляционное отношение, а что нет.
Уникальность представленных в отношении кортежей - безусловно, а вопрос о том, "атомарно" значение, или нет - отдается на интерпретацию (известного системе) типа данных атрибута в кортеже.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049587
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby,

понимаете, я просто эту таблицу на картинке взял с другого сайта из учебной статьи. И там она представлена в качестве примера 3NF (после приведения из 2NF).

Также как пример с таблицей "Преподаватели" - по этому примеру мне один человек, который достаточно давно работает с БД, однозначно сказал, что это 3NF и точка!

Я же, в свою очередь, больше склоняюсь к Вашей версии, тогда мне становится понятно.


Но,как я вижу, есть разные мнения относительно четкого определения что может являться 3NF.

И мне еще не до конца понятно ((
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049588
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
Dimitry Sibiryakov, благодарю за ответ! Я в принципе так и представлял себе, когда первый раз изучил нормальные формы. Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться. Подскажите еще, пожалуйста, а в какой нормальной форме на Ваш взгляд находится данная таблица?


Павел, вообще, это -- сложный вопрос. Все НФ строятся на понятии фунциональной зависимости, которая тобой НЕ описывается.
Она должна быть описана в твоём техзадании, а мы его не видим. Поэтому такие вопросы часто бессмысленны.
Мы не можем на них ответить. Иногда исходя из общих знаний предметной области можно что-то подсказать, но формально это некорректно.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049589
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
сейчас взгляд на этот вопрос сместился так:
атомарен с точки зрения типа данных , связанных с атрибутом.

Ну это конечно. В одной БД может не быть нужды детализировать телефон на код страны, оператора и сам номер (т.е. полный телефон атомарен), а в другой БД такая необходимость может быть.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049590
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
Dimitry Sibiryakov, благодарю за ответ! Я в принципе так и представлял себе, когда первый раз изучил нормальные формы. Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться. Подскажите еще, пожалуйста, а в какой нормальной форме на Ваш взгляд находится данная таблица?


Вот гляди. У тебя есть у каждого человека в таблице должность и подразделение.
Вроде бы всё ок, должность и подразделение зависят от человека (PK этой таблицы).

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

Пример немного натянутый, но я натянул специально, чтобы ты понял.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049593
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
по этому примеру мне один человек, который достаточно давно работает с БД, однозначно сказал, что это 3NF и точка!

Этот человек баран не блещет разумом. Как уже выше сказали НФ отношения полностью зависит от его ФЗ. А ФЗ является не свойством самого отношения, а определяется только предметной областью, поэтому по одному только отношению определить его НФ вообще нельзя.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049597
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
НО в фирме могут дела быть организованы так, что в каждом подразделении работают люди одной специальности,

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

А все начальники - в подразделении начальников началивают друг друга. Идиллия.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049605
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
Dimitry Sibiryakov, благодарю за ответ! Я в принципе так и представлял себе, когда первый раз изучил нормальные формы. Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться. Подскажите еще, пожалуйста, а в какой нормальной форме на Ваш взгляд находится данная таблица?


Если нормализовать эту таблицу, то будет так:
Основная таблица:
Табельный номер
Фамилия
Код_Имени (ссылка на таблицу имен)
Код_Отчества (ссылка на таблицу Отчеств)
Код_Подразделения (ссылка на таблицу Подразделений)
Код_Должности (ссылка на таблицу Должностей)
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049606
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Pavel_124
по этому примеру мне один человек, который достаточно давно работает с БД, однозначно сказал, что это 3NF и точка!

Этот человек баран не блещет разумом. Как уже выше сказали НФ отношения полностью зависит от его ФЗ. А ФЗ является не свойством самого отношения, а определяется только предметной областью, поэтому по одному только отношению определить его НФ вообще нельзя.


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

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

"предметная область" может что-то навязывать своими знаниями о том, какие, и могут ли быть в её области функциональные зависимости.
Но проверяющее факт наличия ФЗ в конкретном составе данных определение не имеет никакого способа опереться на те знания.
Оно имеет дело только с тем, что ему фактически дали - и работает как простое логическое выражение с тремя значениями ( ) (вижу - есть ФЗ, вижу - нет ФЗ, не вижу - нет данных).
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049607
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11будет так:

А почему это "Фамилия" не ссылка на справочник фамилий?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049610
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если рассмотреть такой пример с таблицей преподаватели (исключительно для понимания):

Проводится олимпиада в школе, которая продлится 2 дня и в состав комиссии входят преподаватели.

Необходимо составить базу данных о членах комиссии (преподавателях): ID, ФИО, категория. И мы знаем, что за эти два дня олимпиады категория преподавателя 100% не изменится. То в какой NF будет данная таблица в данном конкретном случае?


Или тогда уже еще один пример. Есть база данных людей: ID, имя, цвет глаз. То это какая NF?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049611
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

zeon11будет так:

А почему это "Фамилия" не ссылка на справочник фамилий?..


Да, упустил, вместо Фамилия читать Код_Фамилии (ссылка на справочник фамилий)
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049614
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
выражается только через состав данных.

Нет.

СотрудникОтделДолжностьВасяОтдел ИТЭникейщикМаняБухгалтерияГлавбухГошаОхранаСтоит у входа
Допустим, что каждый работник может работать только в одном отделе и занимать только одну должность, но в каждом отделе только свои уникальные для него должности. Тогда текущие данные этого отношения не нарушают 3НФ, но само отношение её нарушает (есть ФЗ Должность -> Отдел, поэтому ФЗ Сотрудник -> Отдел будет транзитивной).
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049616
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
А все начальники - в подразделении начальников началивают друг друга. Идиллия.

А где-то существует такая должность как "просто начальник"?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049619
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11

Да, упустил, вместо Фамилия читать Код_Фамилии (ссылка на справочник фамилий)


Жесть какая.

Увидев такое (справочник имен, фамилий и отчеств) в информационной системе - я бы тут же заявление об увольнении написал бы.

Только нужно не забыть, что бывают еще и двойные фамилии, а так же титулы и звания )))

например:
Кузьма (Козьма) Сергеевич Петров-Водкин, Ольга Людвиговна Делла-Вос-Кардовская
Анри Луи Огюст Рикар де Монферран
и так далее.....
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049620
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat
booby
выражается только через состав данных.

Нет.

СотрудникОтделДолжностьВасяОтдел ИТЭникейщикМаняБухгалтерияГлавбухГошаОхранаСтоит у входа

Допустим, что каждый работник может работать только в одном отделе и занимать только одну должность, но в каждом отделе только свои уникальные для него должности. Тогда текущие данные этого отношения не нарушают 3НФ, но само отношение её нарушает (есть ФЗ Должность -> Отдел, поэтому ФЗ Сотрудник -> Отдел будет транзитивной).


вот, наверное, мне и пытались это раньше объяснит те самые мои знакомые люди :) дело, если я правильно понял, в предмете области, для которой составляем БД и допущения о возможных изменениях данных. Или я неправ?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049622
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11
Код_Имени (ссылка на таблицу имен)
Код_Отчества (ссылка на таблицу Отчеств)

Это-то на кой леший? И не имеет это никакого отношения к нормализации и НФ.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049626
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat

Допустим, что каждый работник может работать только в одном отделе и занимать только одну должность, но в каждом отделе только свои уникальные для него должности. Тогда текущие данные этого отношения не нарушают 3НФ, но само отношение её нарушает (есть ФЗ Должность -> Отдел, поэтому ФЗ Сотрудник -> Отдел будет транзитивной).

Может по правильному оно и так, но должность скорее всего для краткости будут просто называть "начальник отдела", "начальник департамента", "инженер-программист", "уборщица".

А вот в каком отделе, эта уборщица работает, из ее должности уже "не так очевидно"

Но тут конечно на вкус и цвет все фломастеры разные. От задачи и ситуации зависит.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049627
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
если я правильно понял, в предмете области, для которой составляем БД и допущения о возможных изменениях данных. Или я неправ?

Ты понял абсолютно правильно. Главная цель нормализации - избежать аномалий при изменении данных. Т.е. нормализация она не про текущие данные отношения, а про данные которые допустимы в нем вообще, что определить можно только из предметной области.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049628
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,

подскажите, пжлста, так а мои примеры с БД для олимпиады могут являться 3NF в описанных мною случаях?
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049631
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
zeon11
Код_Имени (ссылка на таблицу имен)
Код_Отчества (ссылка на таблицу Отчеств)

Это-то на кой леший? И не имеет это никакого отношения к нормализации и НФ.


Хе-хе. Это-то и есть нормализация. На полном серьёзе.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049640
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Может по правильному оно и так, но должность скорее всего для краткости будут просто называть "начальник отдела", "начальник департамента", "инженер-программист", "уборщица".

Ну, во первых, я написал "допустим". Во вторых, у себя в отделе мы можем друг друга называть хоть "чувак", "старик", или "братан", но в ОК есть официальный утвержденный список должностей, где, например, моя должность называется как-то типа "ведущий программист отдела разработки " (совсем точно не помню - можно в договоре посмотреть).
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049647
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat

есть официальный утвержденный список должностей, где, например, моя должность называется как-то типа "ведущий программист отдела разработки "

как-то само написание наводит на мысль, что там должность + отдел

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

3НФ
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049652
Pavel_124
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat,
благодарю! теперь мне, думаю, понятно!
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049655
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
booby
выражается только через состав данных.
Нет.
В некотором смысле, он прав. По определению, ФЗ это просто однозначная зависимость атрибутов, в простейшем случае двух. Проблема в другом, что на практике этого определения недостаточно для утверждения о наличии ФЗ. Возьмём пару произвольных кортежа, где, допустим, некоторые пары атрибутов совпадают. Только по этим данным можно решить, что ФЗ есть, но добавили ещё кортеж и в нём этой ФЗ уже нет. По большому счёту, если мы ничего не знаем о ПО, то сугубо по данным мы можем предполагать, что ФЗ нет, если в заданном наборе атрибутов нет повторений, что, кстати, тоже не факт, так как ФЗ могут оказаться и многозначными. Если есть повторение, то мы не можем утверждать что обнаружили ФЗ, так как, например, уже в третьем или тысячном новом кортеже эта связь внезапно может быть нарушена, что опять же не факт, учитывая предыдущий случай с многозначными ФЗ. Таким образом, проектирование БД на основе чистой РМД без учёта ПО попросту бессмысленно, так как даже необходимость сохранять данные в табличном виде уже выходит за рамки абстракции, структура таблицы обычно уже описывает осмысленные данные, а не результат работы генератора случайных значений, который в свою очередь тоже выходит за рамки абстракции. И эти данные уже представляют собой проекцию реальности с присущими ей зависимостями. Теория, вообще говоря, не рассматривает причины возникновения ФЗ, а просто описывает её признаки. Кодд разрабатывал теорию РМД с целью практического применения, чтобы поставить проектирование БД на научную основу. Не помню дословно, но кто-то даже сказал, что "нормализация - попытка придания здравому смыслу строгости математической теории".
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049656
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124
...
Также как пример с таблицей "Преподаватели" - по этому примеру мне один человек, который достаточно давно работает с БД, однозначно сказал, что это 3NF и точка!
...

Вероятно, тот человек прав.
у меня нормализация в целом - на задворках сознания, зачетов я по ней никогда не сдавал и оставляю за собой право ошибаться.
Вы попросили выразить мнение - я выразил его два раза: "сразу сказал", что это BCNF (3.5), а потом понизил до 2.

В данном случае ответ зависит от того, подразумевается ли годность фио как самостоятельного ключа.
Если не подразумевается, то и 3НФ и 3.5 сразу.


2fnkat
да, только по отношению к составу.
Когда вы привлекаете знания предметной области, вы всегда делаете вот что: "на основании знаний о предметной области и
устройства констрейтов в конкретной реализации субд, я утверждаю, что смогу или буду должен дописать вот такую строку,
а вот сякой никогда не появится".
И физически демонстрируете строку, нарушающую или нет подразмеваемую форму.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049660
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Pavel_124
Dimitry Sibiryakov, благодарю за ответ! Я в принципе так и представлял себе, когда первый раз изучил нормальные формы. Но когда начал общаться с другими людьми, которые с этим работают, то начал путаться. Подскажите еще, пожалуйста, а в какой нормальной форме на Ваш взгляд находится данная таблица?


Павел, вообще, это -- сложный вопрос. Все НФ строятся на понятии фунциональной зависимости, которая тобой НЕ описывается.
Она должна быть описана в твоём техзадании, а мы его не видим. Поэтому такие вопросы часто бессмысленны.
Мы не можем на них ответить. Иногда исходя из общих знаний предметной области можно что-то подсказать, но формально это некорректно.

+1

Самое правильное замечание!

Реляционная модель - один из способов упрощенного описания сложного реального мира.

Всё зависит от семантики описываемой ситуации.
Глядя на таблички ничего нельзя сказать без знания этой ситуации.

В какой нормальной форме находится вот это отношение (из классической книги Криса Дэйта)?

S# SNAME STATUS CITYS1 СМИТ 20 ЛОНДОНS2 ДЖОНС 10 ПАРИЖS3 БЛЭЙК 10 ПАРИЖS4 КЛАРК 20 ЛОНДОНS5 АДАМС 30 АФИНЫ

Этого сказать нельзя, если неизвестен смысл (семантика) описываемой данной моделью ситуации.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049664
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
да, только по отношению к составу.

Посмотрел совсем точное определение, и, да, формально я был неправ. Но с т.з. нормализации имеет смысл говорить только о ФЗ которые выполняются всегда , а не только для определенного набора данных (как я уже на примере показывал).
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049668
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
booby
да, только по отношению к составу.

Посмотрел совсем точное определение, и, да, формально я был неправ. Но с т.з. нормализации имеет смысл говорить только о ФЗ которые выполняются всегда , а не только для определенного набора данных (как я уже на примере показывал).

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

2SQL*Plus
можно указать форму, выше которой показанное отношение уже не находится.
Это решение может оказаться потом ошибочным (когда предъявят расширенный состав),
и форму придется понизить, но выше той, что обнаружится сейчас, ей уже вряд ли суждено оказаться.

По нижней границе - 1я форма, вопрос упирается в решение о равенстве значений атрибутов.
Если, к примеру, кто-то хочет сделать "известным системе" тип,
для которого не определено сравнение на равенство, то даже про первую форму возможность судить исчезает,
за исчезновением основы для проверки - представляют ли кортежи собой множество или супермножество.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049671
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
booby
да, только по отношению к составу.

Посмотрел совсем точное определение, и, да, формально я был неправ. Но с т.з. нормализации имеет смысл говорить только о ФЗ которые выполняются всегда , а не только для определенного набора данных (как я уже на примере показывал).

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

Несколько определений (по К.Дейту)

Функциональная зависимостьЕсли задано отношение R, то мы говорим, что атрибут Y отношения R
функционально зависит от атрибута X отношения R тогда и только тогда,
когда каждое значение X в отношении R в каждый момент времени
связано точно с одним значением Y
"Инженерно" это можно изобразить так:
Y=F(X)

Полная функциональная зависимостьАтрибут Y находится в полной функциональной зависимости от атрибута X,
если он функционально зависит от X и не зависит функционально
от любого подмножества атрибута X
(X должен быть составным).
"Инженерно" это можно изобразить так:
Y=F(X)
Здесь X => (A, B) - составной атрибут. Состоит из атрибутов A и B.

1НФОтношение R находится в первой нормальной форме (1НФ) тогда и только тогда,
когда все входящие в него домены содержат только атомарные (неделимые) значения.

То есть: любое нормализованное отношение находится в первой нормальной форме

2НФОтношение R находится во второй нормальной форме (2НФ), если оно находится в 1НФ,
и каждый неключевой атрибут функционально полно зависят от первичного ключа.

Атрибут называется неключевым, если он не является составной частью первичного ключа
3НФОтношение R находится в третьей нормальной форме (3НФ), если оно находится во 2НФ
и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049673
Сотрудник Главного Управления
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel_124,

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

А иначе получится, как в диалоге:
- Что такое непрерывная функция ?
- А это такая функция, график которой можно начертить не отрывая карандаша от бумаги.

P.S.
Вроде как бы интуитивно понятно, но математики сильно не одобряют подобный подход.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049678
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Да, поскольку функциональная зависимость - это ограничение (свойство) описываемой ситуации , а не набора данных.
SQL*Plus
Функциональная зависимостьЕсли задано отношение R, то мы говорим, что атрибут Y отношения R
функционально зависит от атрибута X отношения R тогда и только тогда,
когда каждое значение X в отношении R в каждый момент времени
связано точно с одним значением Y
Тут одно другому противоречит. В том издании (#8) Дейта, которое у меня под рукой, даже особо оговорено: авторКак уже было указано, эти функциональные зависимости относятся к варианту а, т.е.
к отдельным значениям переменных отношения. Однако при рассмотрении самих пере-
менных отношения, в частности базовых переменных отношения, интерес представляют
не столько функциональные зависимости в их существующих на некоторый момент кон-
кретных значениях, сколько функциональные зависимости, выполняющиеся для всех
возможных значений данной переменной отношения.

Впредь термин функциональная зависимость будет использоваться в последнем толко-
вании, более ограничительном и безотносительном ко времени.

Впрочем, мне сейчас кажется, что в более старом (по-моему #6) он писал как раз наоборот (точнее, изначально говорил только о втором варианте) - я сейчас проверить точно не могу, оно у меня только в бумажном виде на другой квартире лежит.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049687
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
SQL*Plus
Да, поскольку функциональная зависимость - это ограничение (свойство) описываемой ситуации , а не набора данных.
SQL*Plus
пропущено...
Тут одно другому противоречит. В том издании (#8) Дейта, которое у меня под рукой, даже особо оговорено: авторКак уже было указано, эти функциональные зависимости относятся к варианту а, т.е.
к отдельным значениям переменных отношения. Однако при рассмотрении самих пере-
менных отношения, в частности базовых переменных отношения, интерес представляют
не столько функциональные зависимости в их существующих на некоторый момент кон-
кретных значениях, сколько функциональные зависимости, выполняющиеся для всех
возможных значений данной переменной отношения.

Впредь термин функциональная зависимость будет использоваться в последнем толко-
вании, более ограничительном и безотносительном ко времени.

Впрочем, мне сейчас кажется, что в более старом (по-моему #6) он писал как раз наоборот (точнее, изначально говорил только о втором варианте) - я сейчас проверить точно не могу, оно у меня только в бумажном виде на другой квартире лежит.
Я приводил определения по изданию 1980 г.
Это был отличный профессиональный перевод.
http://padabum.com/d.php?id=35210
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049691
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Я приводил определения по изданию 1980 г.
Это был отличный профессиональный перевод.
http://padabum.com/d.php?id=35210

У меня более позднее (зеленое в мягкой обложке, как я писал, по-моему, шестое). И, надо сказать, что оно мне нравилось больше, чем самое крайнее восьмое.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049692
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
SQL*Plus
Я приводил определения по изданию 1980 г.
Это был отличный профессиональный перевод.
http://padabum.com/d.php?id=35210

У меня более позднее (зеленое в мягкой обложке, как я писал, по-моему, шестое).
И, надо сказать, что оно мне нравилось больше, чем самое крайнее восьмое.

По-моему, как раз в нём я встретил понятие "Картезианский продукт".
Очень сильно хохотался с него. :-)

Ну вы же сразу поняли, что это такое?

После перевода 1980 г. этот перевод был ужасен.

Сравните сами.
...
Рейтинг: 0 / 0
Никак не могу однозначно разобраться с нормальными формами.
    #40049694
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
По-моему, как раз в нём я встретил понятие "Картезианский продукт".
Очень сильно хохотался с него. :-)

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


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