2016-12-07 5 views
1

Итак, чтобы выразить все это, у меня возникли серьезные трудности с пониманием функциональных зависимостей, просто взглянув на абстрактные примеры, и я бы очень признателен за некоторую помощь в понимании с возможными реальными жизненными ситуациями. Я хочу видеть, являются ли эти функциональные зависимости любым нарушением BCNF. Я читал много объяснений, но я все еще изо всех сил пытаюсь понять, и я не могу понять полную картину, только взглянув на таких персонажей, как ниже. Я чувствую, что мне нужны некоторые реальные данные, о которых я думаю, и поэтому мои примеры ниже.Примеры функциональных зависимостей

R(A,B,C,D,E) where functional dependencies are AB -> C, DE -> C, and B -> D. 

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

Employee(employee_id, firstname, lastname, title, department) 
AB -> C, employee_id, firstname -> lastname (lastname can be determined by employee_id and firstname). lefthand side is a key so no bcnf violation? 
DE -> C, title, department -> lastname (lastname of specific employee can NOT be determined by title and department. a bcnf violation, because lefthand side contain no key attribute? 
B -> D, firstname -> title (title of employee can not be determined by only firstname, because it can exist several employees with same firstname? and lefthand side has no key attribute, => bcnf violation? 

Мой вопрос сейчас, это FD для приведенного выше соотношения, должны ли быть такой же результат на каждом примере, что я проверить с? Или это зависит от каждого отношения и каких атрибутов у них есть, и в каком порядке?

Если я попробую другой пример с тем же FD и отношением.

Movie(movieName, published, starName, age, address) 
movieName, published -> starName (starnName can be determined from movieName and published. no bcnf violation? 
age, address -> starName (starName cannot be determined from age and address. bcnf violation? 
published -> age (age of the movie can be determined from published. No bcnf violation? 

Я действительно очень признателен за руководство.

Спасибо.

ответ

1

Вы не понимаете определения «функциональной зависимости» или «BCNF». Вам необходимо запомнить определения, включая определения терминов, используемых этими определениями.

Функциональная зависимость не о «определении» одной вещи от другой в каком-то повседневном смысле.

В данной таблице FD имеет при каждого значения subrow для атрибута определителя набора всегда появляется с тем же значением subrow для определенных набора атрибутов. Таблица находится в BCNF, когда каждый детерминант нетривиальный FD является superkey. (Изучите определения этих терминов.)

На практике мы определяем, какие столбцы функционально определены другими столбцами для данной таблицы, затем выполните математику, затем используйте то, что выходит. Нелегко учиться на сложном примере. Каждая примерная таблица, которую вы даете в своем вопросе, имеет определенный смысл и, учитывая, какие ситуации возникают, у нее нет этого набора FD. Используя здравый смысл, в Employee employee_id определяет все атрибуты, и, вероятно, другие FD не хранятся, кроме тех, которые должны выполняться, когда они выполняются. Используя здравый смысл, в фильме многие фильмы могут иметь одно и то же имя, а только FD - {publish} -> {age} и те, которые следуют из него.

Каждый раз, когда вы сделать имеют отношение "R (A, B, C, D, E), где функциональные зависимости являются AB -> C, DE -> C и B -> D" и те, они подразумевают (предположительно R, A, B, C, D & E являются заполнителями для фактических имен), тогда ключи-кандидаты и супер-ключи, и находится ли он в BCNF, и как вы можете разложить его, всегда будет одинаковым (в условия A, B, C, D & E).

+0

Aha okey.Таким образом, это справедливо только для этого отношения с FD, но это, скорее всего, будет отличаться, если вместо этого FD будет: AB-> C, C-> E, D-B, например? Да, я, вероятно, потрачу много часов на то, чтобы понять эти определения и все как можно больше. Спасибо – jabbeboy

+0

См. Http://stackoverflow.com/a/27504915/3404097. Также мой расширенный ответ. Там нет замены для запоминания определений, теорем/правил и алгоритмов, но примеры и практика очень помогают. – philipxy

+0

* Что * действует только для этого отношения и FD? * Что * будет отличаться, если вместо этого выполняются FDs AB-> C, C-> E, D-> B? Если вы имеете в виду возможные разложения BCNF, тогда да. Но вам не нужно знать, как возникли FD, чтобы использовать алгоритм декомпозиции. – philipxy

Смежные вопросы