Каково минимальное доказательство того, что отношение к базе данных отсутствует в BCNF? - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть следующие функциональные зависимости (они представляют все функциональные зависимости моего отношения):

(1) BrokerName -> Office
(2) StockName -> Dividend
(3) InvestorId -> BrokerName
(4) InvestorId, Stockname -> Quantity
(5) InvestorId, Stockname -> Office

Я знаю, используя методы из этого видео на YouTube , что (InvestorId, Stockname) - мой единственный и единственный ключ-кандидат.

Согласно решению @ nvogel в этой ветке SO :

Отношение R находится в BCNF, если только для каждого нетривиального FD (X-> A) выполнено по R выполняется следующее условие:

(а) X - это суперключ для R

Поскольку я знаю, что (1), (2) и (3) - все нетривиальные FD, левые части которых , а не суперключей или ключей-кандидатов в этом отношении, это то, что все, что мне нужно скажем, чтобы доказать, что мое отношение не в BCNF? Является ли этот процесс правильным методом демонстрации того, что отношение отсутствует в BCNF или есть лучший способ?

1 Ответ

0 голосов
/ 20 ноября 2018

Нам нужно знать все FD (функциональные зависимости), которые используются для определения CK (ключей-кандидатов), а не только те, которые находятся в каком-то списке. Посмотрите (правильное и общее) определение CK или алгоритм поиска CK (в опубликованном учебнике, а не на видео на YouTube). Является ли ваш список подходящим замыканием (все FD, которые содержат) или покрытием (FD, которые подразумевают FD в замыкании через аксиомы Армстронга), в зависимости от того, какое определение или алгоритм использует? Потому что если нет, то вы не можете сказать, что знаете набор CK. Ваше первоначальное утверждение о том, что «у вас есть следующие функциональные зависимости», недостаточно. Ваше последующее утверждение о том, что «они представляют все [нетривиальные?] Функциональные зависимости» неверно - если они сохраняются, InvestorId, Stockname -> Office также сохраняется. Ваше последующее добавление пункта 5 в список не помогает - есть и другие. Но даже если аксиомы Армстронга не добавят никаких FD в список, так что не будет других, которые удерживают, когда перечисленные держат, почему вы думаете , что данный список является исчерпывающим в вашем дизайне, если Вы не показали это?

Мы можем знать, что некоторые FD держатся, и аксиомы Армстронга дают все FD, которые должны держаться, если они это делают, но чтобы знать, что данные FD образуют покрытие, мы должны также показать, что FD, которые не генерируются аксиомами Армстронга не держись. Обратите внимание, что если X функционально не определяет Y, то никакое подмножество X не определяет, Y & X не определяет никакого подмножества Y.

Аналогичным образом, это определение BCNF говорит о всех нетривиальных FD, которые содержат, а не только о некоторых или тех, что в обложке.

С другой стороны, все, что вам нужно сделать, чтобы показать, что это конкретное определение BCNF нарушено, это дать некоторое нетривиальное FD, которое хранится, не из суперключа. Итак - , учитывая, что ваши FD образуют покрытие - так что {InvestorId, Stockname} является единственным CK - да, любой из 1-3 только адекватен, так как они нетривиальны и не имеют вне суперключа.

PS Найти и следовать (хорошему) опубликованному учебному пособию по информационному моделированию и проектированию баз данных. Десятки онлайн бесплатно в формате PDF. См. бесплатный онлайн-курс Стэнфордского университета и его видеоролики на YouTube (и учебник его профессора).

...