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

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

Ключ-кандидат K для этого отношения должен быть {A, B} (не вдаваясь в то, как найти ключи-кандидаты). Отношение не находится во 2НФ, так как неключевой атрибут 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} .. Я не буду пройдитесь по остальным еще раз, так как я думаю, что сделал алгоритм правильно, хотя пример был ложным.


person Desperate    schedule 14.08.2015    source источник
comment
Ваш пример изложен неверно. Либо C зависит от A и B, либо зависит только от A.   -  person Lorenzo Gatti    schedule 14.08.2015
comment
Почему? Прежде чем найти канонический набор, легко можно придумать что-то подобное.   -  person Desperate    schedule 14.08.2015
comment
Подумав еще немного, вы были правы.. но тогда я просто посмотрю на отношение R (A, B, C, D) с FD (A, B -> C , B -> D) - большое спасибо за замечание!! Тогда я предполагаю, что остальная часть алгоритма была выполнена нормально.   -  person Desperate    schedule 14.08.2015
comment
@LorenzoGatti C зависит от A и B и зависит только от A.   -  person philipxy    schedule 18.08.2015


Ответы (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, хотя я не могу знать домены атрибутов).

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

По определению атрибут кортежа отношения имеет значение a из домена. 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.

person philipxy    schedule 18.08.2015