Разложение BCNF - что я делаю не так

Это вопрос из курса «Базы данных» (теперь самообучение на сайте coursera.org), осень 2011 года.

Рассмотрим следующую реляционную схему:

R1(A,B,C), R2(B,D)

(a) Рассмотрим схему и предположим, что единственными функциональными зависимостями, которые имеют место для отношений в этой схеме, являются A → B, A → C, B → A, A → D и все зависимости, которые вытекают из них. Схема в BCNF?

(b) Предположим, что мы опустили зависимость A → D в части (a). Схема в BCNF?

Ответ на (а) вопрос - да, это соответствует моему ответу. Правильный ответ и на второй вопрос – да. Но это не соответствует моему ответу.

Когда мы опускаем зависимость A → D, то D не более зависит от B и, следовательно, B не является ключом в B → D. Таким образом, мы имеем нарушение BCNF.

Что я делаю не так?




Ответы (1)


И где зависимость B->D, которую вы упоминаете в исходной постановке задачи?

Кроме.

Первоначальная постановка задачи сама по себе довольно ошибочна. Крайне необычно говорить о зависимостях, которые «охватывают» более одной схемы отношений в структуре базы данных. A->D делает именно это.

Предположительно это означает, что FD должен выполняться в отношении, которое является результатом естественного соединения между заданными схемами отношений, но это очень неортодоксальное предположение по сравнению с классической теорией нормализации. Классическая теория нормализации, насколько я знаю, не имеет дело с такими FD.

person Erwin Smout    schedule 28.12.2013
comment
Я полагаю, что можно рассматривать зависимости перекрестных отношений, поскольку они показывают логическую зависимость данных (т.е. она не привязана к схеме). Зависимость B → D может быть получена из пары B → A, A → D. И это неверно после удаления A → D. - person SGrebenkin; 30.12.2013
comment
Возник вопрос: если B->D больше не выполняется, то как все еще может быть нарушение BCNF? Чтобы было нарушение BCNF, должно быть FD !!!!!!!!! - person Erwin Smout; 30.12.2013
comment
И нет, на самом деле неправильно рассматривать взаимозависимости так легко и небрежно, как это делается здесь. Теория FD была разработана на схемах с одним отношением. Учет зависимостей между схемами может быть выполнен только в том случае, если вы сначала превратите несколько схем в одну, например. ЕСТЕСТВЕННЫМ ПРИСОЕДИНЕНИЕМ. Единственное, что вы получите от таких разбирательств, — это наблюдение за тем, находится ли схема JOINed в BCNF или нет (обычно это не так), и каковы ключи ЕСТЕСТВЕННОГО СОЕДИНЕНИЯ. - person Erwin Smout; 30.12.2013
comment
Я бы сказал, что можно рассмотреть эти взаимозависимости. Почему нет? Поскольку мы знаем логическую зависимость данных. - person SGrebenkin; 09.01.2014
comment
Вы можете говорить все, что хотите. Аксиомы теории нормализации применяются к функциональным зависимостям, которые, как известно, сохраняются ВНУТРИ ОДНОЙ СХЕМЫ ОТНОШЕНИЙ. Теоремы, которые следуют из этих аксиом, подчиняются тому же предположению/ограничению. Откажитесь от этого предположения, и теория просто больше не применима. - person Erwin Smout; 09.01.2014
comment
+1. Я думаю, что лучше не использовать термин перекрестной зависимости. Это правда, что теория нормализации работает внутри одной схемы отношений. Я согласен с тем, что предположительно FD должны сохраняться в окончательном присоединенном отношении. В противном случае некоторые части исходного вопроса кажутся бессмысленными (например, зависимость A->D). В данном случае понятно, что после удаления A->D, B->D уже не держится, а BD просто ключ в R2. Таким образом, R1 и R2 оба находятся в BCNF, поэтому схема находится в BCNF. Большое спасибо. - person SGrebenkin; 09.01.2014