powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация
20 сообщений из 20, страница 1 из 1
Нормализация
    #33239187
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предположим, что есть таблица деталей

Код: plaintext
Детали(Шифр (varchar( 10 ), Название (varchar( 20 )))

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


Все возможные названия нормализовать в отдельную таблицу нужно в том случае, если на одно наименование таблицы приходится более 1-го дополнительного наименования, и кол-во этих дополнительных наименований изначально неизвестно.
...
Рейтинг: 0 / 0
Нормализация
    #33239214
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Если попытаться приводить одновременно ко 2-й и 3-й форме нормализации, то получится противоречие.

какое именно противоречие ?
...
Рейтинг: 0 / 0
Нормализация
    #33239221
Shr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 StalkerS:
Если названий заметно меньше, чем деталей (т.е. они повторяются), то это - отдельная сущность. А раз так, то ей не место в таблице деталей - 1 НФ.
Хотя с чего бы у разных деталей были одинаковые названия, я не знаю...

Валентин КЕсли попытаться приводить одновременно ко 2-й и 3-й форме нормализации, то получится противоречие.Чего?! http://www.citforum.ru/database/dblearn/dblearn06.shtml#21Отношение Image находится в третьей нормальной форме (3НФ) тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы.
...
Рейтинг: 0 / 0
Нормализация
    #33239247
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shr
Если названий заметно меньше, чем деталей (т.е. они повторяются), то это - отдельная сущность. А раз так, то ей не место в таблице деталей - 1 НФ.
Хотя с чего бы у разных деталей были одинаковые названия, я не знаю...

Названий может быть меньше, и значительно (какие-нибудь шайбы имеют разный шифр - но название все-равно шайба). А в чем проблема с повторениями, ну будут повторяться указатели, а не названия, разве это что-то изменит ?
...
Рейтинг: 0 / 0
Нормализация
    #33239333
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSНо ведь если все оставить как есть, ни одна нормальная форма не нарушается ?
В такой постановке вопроса нельзя ответить однозначно. Рассмотрите очень похожую структуру данных: таблицу (ид_сотрудника, зарплата). И интуицию, которая требует вынести повторяющиеся зарплаты в отдельную таблицу. В этом случае четко видны оба варианта: может быть понятие "ставка" (и это и будут вынесенные повторяющиеся зарплаты), а может его и не быть, всем назначается индивидуально, и выносить - значит, вводить бессмысленную, лишнюю сущность.

Если неформально, то нормальная форма будет нарушена, если в данной конкретной БД имеет смысл операция "переименовать шайбу в клюшку", и она должна будет заменить "Шайба" на "Клюшка" во всех названиях сразу. Если же переименовывается конкретная шайба, нарушения НФ нет.
...
Рейтинг: 0 / 0
Нормализация
    #33239334
stasishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Процесс нормализации нельзя рассматривать отдельно от предметной области. В каких-то случаях данная таблица будет нормализованной, в каких-то - нет. К тому же ещё стоит определить перевес между нормализацией базы и сложностью кодирования интерфеса к такой базе.
...
Рейтинг: 0 / 0
Нормализация
    #33239409
YBW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
YBW
Гость
softwarer[quot StalkerS]Рассмотрите очень похожую структуру данных: таблицу (ид_сотрудника, зарплата).

ничего себе похожая структура раз в 15 посложнее будет... сложно придумать задачу более запутаную чем расчет ЗП... разве что транспортная логистика и таможня

вообще - выносить название в отдельную сущность или нет станет понятно если решить является ли "название" отдельной сущностью а не атрибутом сущности "деталь"

в принципе у любой сущности есть только одно нэйтив свойство - есть она или нет - существует она в природе (в базе как объект учета) или нет Yes/No, все остальное может быть разложено по отдельным таблицам как описывающие атрибуты размер, цвет, вес, название


только смысл в этом какой

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

ИМХО нужно понять предметную область - если изделия идут по ГОСТу или другим стандартам описаным во внешних источниках (являющихся так или иначе директивными) то выносить названия отдельно ИМХО смысла нет

есть код детали и название

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

ИМХ - нужно решать по месту, в общем случае - ИМХО выностить название в отдельную таблицу смысла нет
...
Рейтинг: 0 / 0
Нормализация
    #33239413
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это у тебя типы деталей и место им в другой таблице
...
Рейтинг: 0 / 0
Нормализация
    #33239447
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа теоретики, когда начнете разрабатывать реальные системы учета, тогда подобные вопросы не будут возникать, и цитирование отпадет :)
...
Рейтинг: 0 / 0
Нормализация
    #33239457
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С чего-то же надо начинать.

Интересно какой же процент таких вот начинающих программистов, которые учатся не у старших товарищей, а на собственных ошибках?
И каков процент таким образом написанных систем?

--------------------
Не учи отца и баста!
...
Рейтинг: 0 / 0
Нормализация
    #33239689
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Если неформально, то нормальная форма будет нарушена, если в данной конкретной БД имеет смысл операция "переименовать шайбу в клюшку", и она должна будет заменить "Шайба" на "Клюшка" во всех названиях сразу.

а какая именно нормальная форма будет нарушена ? Вторая и третья вроде здесь не при делах, а в первой - вроде повторяющихся групп нет, ключ есть (это шифр).
...
Рейтинг: 0 / 0
Нормализация
    #33240714
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нормализация следует после определения набора атрибутов и функиональных зависимостей между ними. Softwarer правильно отметил, что в свою чередь набор атрибутов и зависимостей определяется их прикладным смыслом. Этот набор нельзя _вычислить_ посредством нормализации.

Естественным смыслом "экономной" структуры
Код: plaintext
1.
Детали  (Шифр (varchar( 10 ), ИДНазвания(number) References Название (ИДНазвания ) )
Название (ИДНазвания(number),  ТекстНазвания (varchar( 20 )))
является возможность легким движением руки превратить все "Гайки" в "Шайбы". Тем не менее за счет некоторого дополнительного кода (instead of view, trigger) можно реализовать независимость наименований отдельных изделий при хранении их в "экономной" структуре. Тогда логически пользователь будет работать с представлением
Код: plaintext
Детали_  (Шифр (varchar( 10 ), ТекстНазвания (varchar( 20 )))
При этом изменение наименования в Детали_ будет физически приводить к добавлению строки в Название и изменению ИДНазвания в Детали.

Как представление Детали_ так и пара таблиц Детали, Название вполне нормализованы, как ни странно:).

Соотношение полезного эффекта и издержек зависит от количественных характеристик БД. Предположительно при 20 символах наименования игра свеч не стоит.
...
Рейтинг: 0 / 0
Нормализация
    #33241512
aZm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как учили меня:

справочники выделяются после окончания процесса нормализации. т.е., не закладываемся изначально на выделение справочников(но держим в уме атрибуты которые соответствуют справочникам), а когда схема нормализована - выделяем необходимые справочники.
...
Рейтинг: 0 / 0
Нормализация
    #33243006
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerS softwarerЕсли неформально, то нормальная форма будет нарушена, если в данной конкретной БД имеет смысл операция "переименовать шайбу в
а какая именно нормальная форма будет нарушена ?
Формально, возможно и никакая. Но если ближе к практике, сказанное (желание превратить все гайки в клюшки) свидетельствует о наличии некоторого явного или подразумеваемого атрибута "тип детали". И с учетом этого атрибута окажется нарушена либо третья (транзитивная зависимость пк->тип->название), либо первая форма (когда тип есть часть шифра детали).

В принципе я допускаю существование БД, где такой атрибут не потребуется в явном виде и хватит операций с текстом; поэтому я и сказал "неформально".
...
Рейтинг: 0 / 0
Нормализация
    #33250971
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще предлагаю тебе сделать справочник букв в названиях.
Тогда будет совсем полная нормальная форма.
...
Рейтинг: 0 / 0
Нормализация
    #33251141
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно общался с одним преподавателем ИТ - старым знакомым.
Глупости наслушался вдоволь. Эта ветка сильно похожа на это :)
Вывод - вместо того, чтобы забивать себе голову правилами, смотри, как делают другие в других учетных системах, ну естественно реинжиниринг - и получается весьма быстрые и жизнеспособные решения.
Не все станут архитекторами систем, но опыта будет гораздо больше, чтобы не говорили потом, показывая на голову - а еще я сюда ем.
Вобщем негативная ветка.
...
Рейтинг: 0 / 0
Нормализация
    #33253463
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечу разве что чтобы добавить в тред немного разумного.

StalkerS
Детали(Шифр (varchar(10), Название (varchar(20)))

Следуя интуиции, надо создать еще одну таблицу, куда сложить все возможные названия, а в таблице Детали заменить их на указатели (экономиться место).

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

StalkerS
Но ведь если все оставить как есть, ни одна нормальная форма не нарушается ?

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

StalkerS
Получается, такое действие нельзя назвать нормализацией... или как ?

Нельзя. Это - декомпозиция таблицы , не приводящая к устранению аномалий или функциональной зависимости. Нормализация - это декомпозиция таблицы, приводящая к устранению некоторых функциональных зависимостей атрибутов внутри таблицы.

Вот ты прочел это все, и что, тебе легче ?
...
Рейтинг: 0 / 0
Нормализация
    #33254924
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Old NickС чего-то же надо начинать.

Интересно какой же процент таких вот начинающих программистов, которые учатся не у старших товарищей, а на собственных ошибках?
И каков процент таким образом написанных систем?

--------------------
Не учи отца и баста!

Учиться нужно не у старших товарищей, а у тех кто разбирается в предмете не только теоретически, а имеет реальную практику и работал с достаточно серьезными системами учета.
...
Рейтинг: 0 / 0
Нормализация
    #33254957
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Под словом старшие я подразумевал не возраст.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нормализация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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