Джей, как я понимаю, это следующее.Вам нужно найти минимальный набор полей, который позволил бы вам идентифицировать все поля BOSQID
.Есть алгоритм, который я не помню сейчас, чтобы правильно выполнить анализ, который вы ищете, но упражнение кажется достаточно простым, чтобы не нуждаться в нем.
- Take
B -> O
.Поскольку B
определяет O
, мы можем сохранить B
и удалить O
из ключей.Текущие возможные ключевые поля: BSQID
. - Take
I -> B
.Поскольку I
определяет B
, мы можем сохранить I
и удалить B
из ключей.Обратите внимание, что по транзитивности I
определяет O
.Текущие возможные ключевые поля SQID
- Take
S -> D
.Поскольку S
определяет D
, мы можем сохранить S
и удалить D
из ключей.Текущие возможные ключевые поля SQI
- Take
IS -> Q
.Поскольку IS
определяет Q
, мы можем оставить IS
и удалить Q
из ключей.Текущие возможные ключевые поля: IS
Поскольку у нас больше нет функциональных зависимостей, мы не можем продолжать работу, поэтому результат равен IS
.Есть более сложные примеры для работы, в которых эта простая техника не поможет вам, потому что она сведет вас с ума, поэтому я рекомендую вам также поискать алгоритм для решения этой проблемы.