Синтез-алгоритм для 3NF

Я изучаю базы данных и, очевидно, мне приходится иметь дело с обычными формами. Теперь я придумал этот очень простой пример; дано отношение R с атрибутами {A, B, C} и функциональными зависимостями {A, B -> C, A -> C}.

Ключ-кандидат K для этого отношения должен быть {A, B} (не вдаваясь в то, как найти ключи-кандидаты). Отношение не в 2NF, так как неключевой атрибут C зависит только от A, который является надлежащим подмножеством K.(Я предполагаю, что 1NF дается, хотя я не могу знать домены атрибутов).

Теперь, чтобы перейти к 3NF, мне нужно будет использовать алгоритм синтеза, поэтому я сначала найду канонический набор функциональных зависимостей, который будет {A -> C} (также не вдаваясь в то, как найти канонический набор). Теперь, чтобы получить отношения в 3NF, я формирую новое отношение R1, которое содержит атрибуты {A, C}. Поскольку K не содержится в R1, я должен создать новое отношение R2, которое содержит один из ключей-кандидатов (здесь K).

Это приводит к двум отношениям R1 (A,C) и R2 (A,B), и я готов, так как оба R1 и R2 находятся в 3NF.

Моя работа правильная? Есть ли что-то еще, что я должен знать? Большое спасибо за любые предложения!

РЕДАКТИРОВАТЬ: Как отметил комментарий, мой пример ошибочен. Это было бы правильно с немного другим отношением, а именно, R (A,B,C,D) с FD {A,B -> C, B -> D} .. Я не буду проходить остальное снова, так как я думаю, что я сделал алгоритм правильно, хотя пример был ложным.

1 ответ

Решение

дано отношение R с атрибутами {A, B, C} и функциональными зависимостями {A,B -> C, A -> C}

Укажите, что вы обращаетесь к нетривиальным FD. R также имеет FD A,B,C -> C, но это тривиально. Всегда четко указывайте, какие FD вы предоставляете. Например, каноническое / минимальное покрытие или все нетривиальные FD, или покрытие, или просто некоторые FD, которые, как вы знаете, хранятся, хотя другие нетривиальные тоже могут, в зависимости от того, что имеет место. Вы, вероятно, никогда не делаете последнее, потому что в общем случае вы не будете предоставлять достаточно информации для определения CK и дальнейшей нормализации.

Отношение не в 2NF, поскольку неключевой атрибут C зависит только от A, который является надлежащим подмножеством K.

Брось "только". Это делает утверждение неясным, и если вы имеете в виду, что C не зависит от A, B, то вы ошибаетесь.

(Я предполагаю, что 1NF дается, хотя я не могу знать домены атрибутов).

Домены не имеют значения. Я полагаю, вы обеспокоены тем, что домены могут включать "повторяющиеся группы" и / или "неатомарные значения". Это основано на полученной не мудрости. Нормализация в более высокие нормальные формы не зависит от доменов.

По определению, атрибут кортежа отношения имеет значение из домена. Re: "повторяющиеся группы": не может быть, это что-то из предреляционных баз данных. Re "неатомарная": Кодд определил отношения как способные иметь доменные отношения. Он указал, что единственный способ, которым значение можно считать (в повседневном смысле) неатомарным в реляционном контексте, - это оценивать отношения. Т.е. он определил "атомарный" в реляционном контексте, чтобы обозначить не отношение. Он определил "нормализованный", чтобы обозначить отсутствие относительных (то есть неатомарных) атрибутов. (Все это в 1970 году.) Позже он определил "1NF" как нормализованный. И разработали "2NF" и "3NF". Затем (после Кента и Бойса) "BCNF". Таким образом, его использование этих терминов не предполагало доменных отношений.

Но теория нормализации представлена ​​независимо от областей. Т.е. считается, что это просто разложение по проблемным JD. Таким образом, "1NF" также используется для того, чтобы быть просто отношением. А остальные "НФ" привыкают независимо от доменов. (Хотя, если существуют домены, имеющие отношение к отношениям, то могут существовать ограничения, отличные от FD и JD, но похожие на них, которые вызывают разные, но сходные аномалии и которые вызывают ограничения и аномалии в компонентах даже после декомпозиции для всех проблемных JD.) Независимо от того, является ли отношение имеет домены со значениями отношения, и независимо от того, что вы подразумеваете под "1NF" или "нормализовано" или "нормализацией", процедура декомпозиции, которую вы выполняете, чтобы удалить проблемные JD из проблемных FD в то, что вы называете 3NF, не зависит от доменов,

Как отмечено в комментарии, мой пример ошибочен.

Этот комментарий:

Ваш пример указан неверно. Либо C зависит от A и B, либо зависит только от A. - Лоренцо Гатти

Комментарий неверный. C зависит от A и B и зависит только от A. Потому что A -> C подразумевает A,B -> C.

Другие вопросы по тегам