TL;DR Нет, "детерминант" и "ключ-кандидат" — это не одно и то же. Определитель от FD. CK принадлежит таблице. Мы также можем небрежно сказать, что CK является определителем (FD) своей таблицы, поскольку он определяет каждый столбец и набор столбцов в ней.
Все следующие термины/понятия определяются параллельно для табличных значений и переменных. Табличная переменная имеет экземпляр FD (функциональная зависимость) , определитель, суперключ, CK (ключ-кандидат) или PK (первичный ключ) (в смысле переменной), когда каждое значение таблицы, которое может возникнуть для него в данном бизнесе/приложении, имеет этот экземпляр (в смысле таблицы).
Для наборов столбцов X и Y мы можем написать X -> Y. Мы говорим, что X – это определяющий/определяющий набор, а Y – определенный набор в/в функциональной зависимости (FD ) X -> Y.
Мы говорим, что X функционально определяет Y, а Y функционально определяется X. Мы говорим, что X является детерминантом X -> Y. В {C } -> Y мы говорим, что C функционально определяет Y. В X -> {C} мы говорим, что X функционально определяет C. Когда X является надмножеством Y, мы говорим X - > Y тривиально.
Мы говорим, что X -> Y содержится в таблице T, когда каждое значение подстроки для X появляется только с одним конкретным значением подстроки для Y. Или мы говорим, что X -> Y является FD of/in T. Когда X является определителем некоторого FD в таблице T, мы говорим, что X является определителем/in T. Каждый в нем выполняется тривиальная ФД таблицы.
Суперключ таблицы T – это набор столбцов, который функционально определяет каждый столбец. Ключ-кандидат (CK) — это суперключ, который не содержит меньшего суперключа. Мы можем выбрать один CK в качестве первичного ключа (< em>PK), а затем вызвать другие CK альтернативные ключи (AK). Столбец является простым, когда он находится в некотором CK.
Обратите внимание, что определитель может быть FD или, небрежно, (FD, который содержит) таблицы. Каждый CK является определителем своей таблицы. (Но тогда в таблице каждый набор столбцов является определителем: сам по себе, тривиально. И аналогично каждый< /em> столбец.)
(Эти определения не зависят от нормализации. FD и CK таблицы используются для ее нормализации. Таблица находится в НФБК, когда каждый детерминант нетривиального FD, содержащийся в ней, является суперключ.)
Таблицы SQL не являются отношениями, а операторы SQL не являются их реляционными/математическими аналогами. Помимо прочего, в SQL есть повторяющиеся строки, пустые значения и своего рода трехзначная логика. Но хотя вы можете заимствовать термины и придавать им значения SQL, вы не можете просто подставить эти значения в другие определения или теоремы RM и получить что-то осмысленное или правда. Поэтому мы должны преобразовать дизайн SQL в реляционный дизайн, применить реляционные понятия, а затем снова преобразовать в SQL. Есть особые случаи, когда мы можем делать определенные вещи непосредственно в SQL, потому что мы знаем, что произойдет, если мы конвертируем, применяем и конвертируем обратно.
person
philipxy
schedule
10.12.2015