Ответ
Для приведения таблицы к нормальной форме Бойса-Кодда (НФБК, 3.5NF) требуется, чтобы каждый нетривиальный функциональный детерминант (левая часть функциональной зависимости) был потенциальным ключом (суперключом).
Проще говоря: В НФБК не должно быть зависимостей неключевых атрибутов от других неключевых атрибутов. Все неключевые поля должны зависеть только от всего ключа целиком, и ни от чего больше.
Отличие от 3НФ: 3НФ запрещает транзитивные зависимости неключевых атрибутов, но допускает зависимость части ключа от неключевого атрибута. НФБК устраняет и эту аномалию.
Пример нарушения НФБК и исправление:
-- НЕ НФБК: Supplier зависит от ProductID, который НЕ является ключом.
CREATE TABLE OrderDetails (
OrderDetailID INT PRIMARY KEY,
ProductID INT,
Supplier VARCHAR(100) -- Зависит от ProductID (детерминант - не ключ!)
);
-- Приведение к НФБК: Выносим зависимость в отдельную таблицу.
CREATE TABLE Products (
ProductID INT PRIMARY KEY, -- ProductID теперь ключ-детерминант
Supplier VARCHAR(100)
);
CREATE TABLE OrderDetails (
OrderDetailID INT PRIMARY KEY,
ProductID INT REFERENCES Products(ProductID) -- Теперь детерминант - внешний ключ
);
Итог: Если в таблице есть зависимость X → Y, где X — не потенциальный ключ, таблица не соответствует НФБК и требует декомпозиции.