Пара вопросов по нормализации

Мои вопросы:


1) Если у меня есть отношение R(A,B,C), будучи AB первичным ключом, и F = {}, могу ли я предположить, что C зависит от AB? Я бы сказал нет, но я спрашиваю, чтобы убедиться.


2) Я считаю само собой разумеющимся, что AB -> CDE это то же самое, что сказать AB -> C, AB -> D, AB -> E и сказать AB -> CE, AB -> D. Я прав?


3) Возьмите R(A,B,C,D), поскольку AB является первичным ключом с F = {AB->C}. Это в 2NF? Я бы сказал нет, так как D не зависит ни от каких других атрибутов, не говоря уже о первичном ключе!


4) Я пытаюсь понять, если с

R(K, L, M, N, O,P) 

будучи KL первичным ключом

F = { KL->MN, KL->OP, M->N, O->P }

R находится в 2NF или 3NF. И P, и N зависят (хотя и косвенно) от всего первичного ключа. Достаточно ли быть в 2NF? Если это так, я бы сказал, что R не находится в 3NF, поскольку не должно быть зависимостей между непростыми атрибутами в отношении 3NF, верно?

Спасибо


person devoured elysium    schedule 17.07.2011    source источник
comment
Если это домашнее задание, отметьте его как домашнее.   -  person Mike Sherrill 'Cat Recall'    schedule 18.07.2011


Ответы (1)


Я предполагаю, что это домашнее задание, поэтому я даю указания, а не обязательно ответы.

1) Если у меня есть отношение R(A,B,C), где AB является первичным ключом, а F = {}, могу ли я предположить, что C зависит от AB? Я бы сказал нет, но я спрашиваю, чтобы убедиться.

Знаете ли вы, как определить функциональную зависимость, когда вам ее не дали? В этом случае вы задаете себе вопрос: «Данные значения для {A,B} определяют ли эти значения одно и только одно значение для {C}?» Если ответ «да», у вас есть функциональная зависимость; если ответ «нет», то вы этого не сделаете.

2) Я считаю само собой разумеющимся, что AB -> CDE — это то же самое, что сказать AB -> C, AB -> D, AB -> E и сказать AB -> CE, AB -> D. Я прав?

Я бы не сказал, что это «то же самое, что сказать». Я бы сказал, что из функциональной зависимости AB->CDE вы можете получить все остальные функциональные зависимости.

3) Возьмем R(A,B,C,D), где AB является первичным ключом с F = {AB->C}. Это в 2НФ? Я бы сказал нет, поскольку D не зависит ни от каких других атрибутов, не говоря уже о первичном ключе!

См. номер 1.


Расширение вопросов в комментариях ниже. . .

Если вы говорите {A,B} -> {каждый второй столбец}, то почему не все отношения 1NF находятся во 2NF?

Потому что не каждая таблица 1NF имеет первичный ключ с несколькими столбцами, и не каждая таблица 1NF, которая имеет первичный ключ с несколькими столбцами, имеет другие столбцы, определяемые только частью этого ключа.

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

О, но между этими двумя столбцами есть взаимосвязь. Между ними существует связь, потому что вы помещаете их в одну таблицу. В этой таблице, если вы знаете значение для A, то вы знаете одно и только одно значение для B. (Если A определяет более одного значения для B, то A не может быть первичным ключом.)

person Mike Sherrill 'Cat Recall'    schedule 18.07.2011
comment
@devoured elysium: Основываясь на том, что вы узнали за последние пару дней, можете ли вы сейчас ответить на свой вопрос №4? - person Mike Sherrill 'Cat Recall'; 20.07.2011
comment
Имея значения для {A,B}, определяют ли эти значения одно и только одно значение для {C}? Проблема здесь в том, что это абстрактная проблема. Я не знаю ничего, кроме того, что я сказал в ОП. Я спрашиваю № 1, должен ли я предполагать, что по умолчанию все непростые атрибуты зависят от первичного ключа или наоборот. Я бы сказал, что более поздний вариант имеет больше смысла. - person devoured elysium; 20.07.2011
comment
По определению первичный ключ уникален. Первичный ключ идентифицирует одну и только одну строку в таблице, поэтому он определяет значения во всех остальных столбцах. Если ваш первичный ключ {A,B}, то {A,B}-›{каждый второй столбец}. На самом деле это верно для каждого ключа-кандидата, а не только для первичного ключа. - person Mike Sherrill 'Cat Recall'; 21.07.2011
comment
Я не понимаю. Если вы говорите {A,B} -> {каждый второй столбец}, то почему не все отношения 1NF находятся во 2NF? Зависимость каждого непростого столбца от всего PK является ограничением 2NF (плюс нахождение в 1NF), поэтому, судя по тому, что вы говорите, это будет выглядеть так, как будто любая таблица в 1NF также находится во 2NF. Я в замешательстве. - person devoured elysium; 21.07.2011
comment
Первичный ключ идентифицирует одну и только одну строку в таблице, поэтому он определяет значения во всех остальных столбцах. Представьте, что PK — это идентификатор человека. А теперь представьте, что единственным другим атрибутом в этом отношении является количество уток, найденных летающими в Аризоне в 1997 году. Между А и Б в реальном мире нет никакой связи, но, судя по тому, что вы говорите, можно предположить, что А -> Б. - person devoured elysium; 21.07.2011
comment
Отредактировал мой ответ, чтобы ответить на эти дополнительные вопросы. - person Mike Sherrill 'Cat Recall'; 21.07.2011
comment
Хм, я понимаю вашу точку зрения. Однако по большему вопросу. Снова взглянув на № 3, я бы сказал, что если мне скажут, что F = {AB->C}, это избыточная информация, верно? - person devoured elysium; 21.07.2011
comment
Избыточная информация — это своего рода нагруженная фраза, когда вы говорите о базах данных. Я бы скорее назвал это очевидным. - person Mike Sherrill 'Cat Recall'; 21.07.2011