Найти ключ-кандидат из функциональной зависимости

Мне нужна помощь в поиске ключей-кандидатов из данного отношения:

R (A,B,C,D,E) с FD:

A -> BE
B -> BE
B -> D

ШАГИ:

  1. Я знаю, что все атрибуты могут идентифицировать себя так: A,B,C,D,E -> {ABCDE}
  2. Теперь я знаю A -> BE, так что я могу вычеркнуть BE и получить это: ACD -> {ABCDE}
  3. Основные атрибуты: (A,C,D)
  4. D теперь будет заменен на B, что даст мне мой другой ключ-кандидат (ABC)

У меня в ответе есть ACD и ABC, но, видимо, это AC. Что я делаю не так?

Ваше «у меня есть эти FD» не имеет смысла. «Это все FD, которые имеют место»? — Невозможно. «Это все нетривиальные FD, которые выполняются»? — Невозможно. «Это какие-то FD, которые выдерживают»? — На этот вопрос нельзя ответить. Узнайте, что такое покрытие и каковы точные условия для применения конкретного определения/правила/алгоритма. Чтобы определить CK и NF, нам должны быть заданы FD, которые образуют покрытие. Иногда минимальное/нередуцируемое покрытие. И набор всех атрибутов должен быть задан. Смотрите этот ответ.

philipxy 14.12.2020 21:33

Хорошо, что вы показываете свою работу, но: цитируйте и ссылайтесь на алгоритм, которому вы следуете, желательно из (хорошего) учебника. Покажите, как вы предоставляете правильный ввод и выполняете его шаги. Четко объясните все свои рассуждения. (Потому что люди делают слишком большие неоправданные загадочные шаги. Как здесь.) PS «идентифицировать себя» не используется правильный технический термин. Также «A, B, C, D, E -> {ABCDE}» не является FD. Мы пишем x->y, где каждый из x и y является набором или атрибутом; атрибут A означает набор {A}. Набор — это смежные атрибуты или фигурные скобки вокруг списка. (Или имена смежных наборов дают их объединение.) Будьте последовательны.

philipxy 14.12.2020 21:57
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
1
2
307
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Простое рассуждение состоит в следующем.

A и C должны присутствовать в любом ключе-кандидате, поскольку они никогда не появляются в правой части некоторого FD.

Итак, давайте посмотрим, являются ли они уже ключом-кандидатом, вычислив их замыкание, AC*.

Применяя правила вычисления замыкания набора атрибутов, мы легко можем увидеть, что AC* равен ABCDE, поэтому AC является потенциальным ключом. Единственным другим атрибутом, который появляется в левой части FD, является B, поэтому мы должны проверить, что никакой другой ключ-кандидат не содержит его. Но учитывая, что атрибуты AC должны присутствовать в любом ключе и уже они образуют ключ-кандидат, поэтому добавление к ним любого атрибута дает только суперключи, мы можем сделать вывод, что это единственный ключ-кандидат.

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