powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вопросы о нормальных формах.
16 сообщений из 16, страница 1 из 1
Вопросы о нормальных формах.
    #38475577
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не уверен, что я правильно понял нормальные формы. Поэтому хотел бы задать несколько вопросов, на простом своем примере.
Кажое утверждение ниже, это вопрос, в чем я не прав?
Имеется таблица: имя пользователя, дата регистрации, количество комментариев .
Первичный ключ - имя пользователя.
Как я понял, он находится как минимум в 3нф. Так как поля, не входящие в первичный ключ не связаны функциональной зависимостью, а также есть полная функциональная зависимость от первичного ключа ( имя пользователя => дата регистрации , имя пользователя => количество комментариев ).

Если добавить ее одно поле ( идентификатор, имя пользователя, дата регистрации, количество комментариев ) и ключевым идентификатором сделать идентификатор (значения в "имя пользователя" по прежнему уникальные), то таблица будет находится во 2нф, так как есть функциональные зависимости между неключевыми полями (об этом я написал выше). Разбить ее нужно так, для получения 3нф:
идентификатор, имя пользователя .
идентификатор, дата регистрации, количество комментариев .
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475578
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<<ключевым идентификатором сделать идентификатор>> - опечатался, ключевым полем сделать "идентификатор".
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475622
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenРазбить ее нужно так, для получения 3нф:
идентификатор, имя пользователя .
идентификатор, дата регистрации, количество комментариев .
Т.е. предполагается, что один пользователь никогда не меняет "имя" но может регистрироваться несколько раз для написания коментариев?
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475627
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
riden,

Вторая сентенция неверна.
Второй вариант также находиться в 3 нф, и никаких декомпозиций не нужно.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475645
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, я даже не знаю важно это или нет. Хосты, ип-адреса пользователей не учитываются при регистрации. Главное чтобы ники были разные.
MasterZiv, а разве функциональная зависимость между именем пользователя и датой регистрации не осталась?
Разве в первой таблице ее нет?
И что, в таком случае, для второй нормальной формы не нужна функциональная зависимость от первичного ключа (в первой таблице - это имя пользователя")?
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivriden,
Вторая сентенция неверна.
Второй вариант также находиться в 3 нф, и никаких декомпозиций не нужно.

Объясняю, почему.

Когда ты вводишь новый сурогатный ключ, то ты им заменяешь естественный ключ (в данном случае -- имя пользователя), и
все зависимости от старого ключа становятся зависимостями от нового ключа. Также сам старый ключ становится зависимым от нового ключа. При этом о старых ФЗ от старого ключа можно вообще забыть (напомню, что ФЗ находится целиком в ведении предметной области, поэтому ты имеещь право так делать, главное это делать обдуманно и аккуратно). Но если даже о них вспомнить, то ни к каким проблемам (аномалиям), с которыми борется нормализация, это не приведёт -- ни к дублированию данных, ни к аномалиям при изменениях. Поэтому тут всё нормально с точки зрения НФ и ФЗ.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475721
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenkrvsa, я даже не знаю важно это или нет. Хосты, ип-адреса пользователей не учитываются при регистрации. Главное чтобы ники были разные.
Отталкнемся от термина "ник"... Сделаем его неизменным...
Тогда, что есть "дата регистрации"? Это дата, когда этот ник зарегистрировали первый раз? Или это дата очередной регистрации/захода на некий ресурс для написания тех же коментарий?
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475790
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,
авторТогда, что есть "дата регистрации"? Это дата, когда этот ник зарегистрировали первый раз? Или это дата очередной регистрации/захода на некий ресурс для написания тех же коментарий?
Это дата, когда ник зарегистрирован первый раз. Это дата создания пользователя в базе данных сервера. Но повторные ники не регистрируются.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475817
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenЯ не уверен, что я правильно понял нормальные формы. Поэтому хотел бы задать несколько вопросов, на простом своем примере.
Кажое утверждение ниже, это вопрос, в чем я не прав?
Имеется таблица: имя пользователя, дата регистрации, количество комментариев .
Первичный ключ - имя пользователя.
Как я понял, он находится как минимум в 3нф. Так как поля, не входящие в первичный ключ не связаны функциональной зависимостью, а также есть полная функциональная зависимость от первичного ключа ( имя пользователя => дата регистрации , имя пользователя => количество комментариев ).

Если добавить ее одно поле ( идентификатор, имя пользователя, дата регистрации, количество комментариев ) и ключевым идентификатором сделать идентификатор (значения в "имя пользователя" по прежнему уникальные), то таблица будет находится во 2нф, так как есть функциональные зависимости между неключевыми полями (об этом я написал выше). Разбить ее нужно так, для получения 3нф:
идентификатор, имя пользователя .
идентификатор, дата регистрации, количество комментариев .
Раз в исходной есть ФЗ: ( имя пользователя => дата регистрации , имя пользователя => количество комментариев , то имя пользователя уникально, т.е. ключ . Добавление еще одного уникального: идентификатор , не отменяет уникальность имя пользователя . Стало быть появится не только идентификатор => имя пользователя , но и имя пользователя => идентификатор . Из-за этого не может появится транзитивных зависимостей. А без них отношение находится в 3НФ.

Ваше декомпозиция могла нормализовать, если бы не было ФЗ: идентификатор => имя пользователя , Но были бы:
имя пользователя => идентификатор , идентификатор => дата регистрации , идентификатор => количество комментариев ) и кроме того дата регистрации и количество комментариев не входили бы ни в какой ключ. Тогда бы
были транзитивные зависимости, нарушающие 3НФ, устранить коея можно было бы Вашей декомпозицией.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38475820
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenЭто дата, когда ник зарегистрирован первый раз. Это дата создания пользователя в базе данных сервера. Но повторные ники не регистрируются.
Тогда все уже сказано выше... Я только присоединюсь к MasterZiv и vadiminfo .
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38477296
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfo, не понял.
Таблица:
id, name, date, count.
Первичный ключ - id . name - не является ни первичным ключем ни частью первичного ключа, это поле перестало быть ключем. Оно по прежнему уникально.
Есть зависимости id--> name, id-->date, id-->count, name-->id, name-->date, name-->count.
Не должно быть транзитивных зависимостей полей не относящихся к первичному ключу, от первичного ключа для 3нф.
Мы имеем.
id-->date
id-->name, name-->date. Зависимость транзитивна.

id-->count
id-->name, name-->count. Зависимость транзитивна.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38477592
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenvadiminfo, не понял.
Таблица:
id, name, date, count.
Первичный ключ - id . name - не является ни первичным ключем ни частью первичного ключа, это поле перестало быть ключем. Оно по прежнему уникально.
Есть зависимости id--> name, id-->date, id-->count, name-->id, name-->date, name-->count.
Не должно быть транзитивных зависимостей полей не относящихся к первичному ключу, от первичного ключа для 3нф.
Мы имеем.
id-->date
id-->name, name-->date. Зависимость транзитивна.

id-->count
id-->name, name-->count. Зависимость транзитивна.
Для того, чтобы было "id-->name, name-->date. Зависимость транзитивна" не должно быть "name-->id". Действительно, в этом случае избыточности нет. У Вас просто нет возможности несколько разных date присвоить одному name, так как оное уникально.

Кроме того, уникальное поле - ключ, по определеню ключа. Понятие "Первичный ключ" не имеет значения в плане нормальных форм. Имеет значение просто ключ.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38477765
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfo,
Непонятно как тогда такое можно писать:
Из книги Дейта:
<<Переменная отношения находится в 3нф тогда, когда ее неключевые атрибуты являются:
-взаимно-независимыми;
...
Неключевой атрибут - атрибут, который не входит в состав первичного ключа>>

<<Неключевой атрибут — любой атрибут отношения, не входящий в состав первичного ключа.>>
http://gos-asu.narod.ru/peis/4.html
http://do.gendocs.ru/docs/index-12372.html?page=6
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38477769
riden
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... и еще, я иногда видел в определении 3нф, вместо "потенциальный ключ", - "первичный ключ".
Все это конечно сбивает столку.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38477845
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ridenvadiminfo,
Непонятно как тогда такое можно писать:
Из книги Дейта:
<<Переменная отношения находится в 3нф тогда, когда ее неключевые атрибуты являются:
-взаимно-независимыми;
...
Неключевой атрибут - атрибут, который не входит в состав первичного ключа>>

<<Неключевой атрибут — любой атрибут отношения, не входящий в состав первичного ключа.>>
http://gos-asu.narod.ru/peis/4.html
http://do.gendocs.ru/docs/index-12372.html?page=6
Выбросте прилагательное "Первичный": и получится "Неключевой атрибут - атрибут, который не входит в состав никакого ключа".
Транзитвные зависмости в любом случае приводят к избыточности. Но если речь идет о "неключивых атрибутах", то нарушается 3НФ. Если любых, то нарушается НФБК. Это имеет значение в плане того, что в 3НФ с помощью объявления ключей всегда можно навязать схеме все ФЗ, а в случае НФБК нет. Ведь в последнем случае после декомпозиции ключевые атрибуты окажутся в разных отношениях (таблицах).

riden... и еще, я иногда видел в определении 3нф, вместо "потенциальный ключ", - "первичный ключ".
Все это конечно сбивает столку.

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

Для нормальных форм имеют значение только ФЗ.
А от ключа в ФЗ находятся все атрибуты отношения, собственно только поэтому он и имеет значение для нормализации.
...
Рейтинг: 0 / 0
Вопросы о нормальных формах.
    #38479084
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка
vadiminfo... нет возможности несколько разных date присвоить одному name, так как оное уникально.


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


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