powered by simpleCommunicator - 2.0.47     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Никак не могу однозначно разобраться с нормальными формами.
25 сообщений из 51, страница 2 из 3
Никак не могу однозначно разобраться с нормальными формами.
    #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
25 сообщений из 51, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Никак не могу однозначно разобраться с нормальными формами.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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