Я сфабриковал определение, что частичная зависимость - это когда поля косвенно зависят от первичного ключа или частично зависят, но также зависят от других ключей, которые зависят от первичного ключа, так что если поле, от которого зависит другое поле, удалено, то это поле все еще будет существуют из-за его зависимости от первичного ключа. Я не уверен, что это правильно. Я исследовал, и каждое определение звучит обманчиво. Правильно ли мое определение, и если нет, то какое?
Частичная зависимость (базы данных)
Ответы (9)
FD (функциональная зависимость), которая сохраняется в отношении, является частичной, когда удаление одного из определяющих атрибутов дает FD, который сохраняется в отношении. FD, который не является частичным, является полным.
Например: если {A,B} → {C}, но также и {A} → {C}, тогда {C} частично функционально зависит от {A,B}.
Например: вот значение отношения, где выполняется это условие примера. (FD выполняется в переменной отношения, когда оно выполняется в каждом значении, которое может возникнуть.)
A B C
1 1 1
1 2 1
2 1 1
Нетривиальные FD, которые выполняются: {A,B} определяет {C}, {B,C}, {A,C} и {A,B,C}; {A}, {B} и {} также определяют {C}. Из них: {A,B} → {C} является частичным для {A} → {C}, {B} → {C} и {} → {C}; {A} → {C} и {B} → {C} являются частичными для {} → {C}; остальные полные.
Функциональная зависимость X → Y является полной функциональной зависимостью, если удаление любого атрибута A из X означает, что зависимость больше не сохраняется; то есть для любого атрибута A ε X, (X – {A}) функционально не определяет Y. Функциональная зависимость X → Y является частичной зависимостью, если некоторый атрибут A ε X можно удалить из X, и зависимость все еще сохраняется; то есть для некоторого A ε X, (X – {A}) → Y.
-- ОСНОВЫ СУБД СУБД ШЕСТОЕ ИЗДАНИЕ Ramez Elmasri & Navathe
Обратите внимание, что является ли FD полным или частичным, не зависит от CK (ключей-кандидатов), не говоря уже об одном CK, который вы можете назвать PK (первичный ключ).
(Определение 2NF состоит в том, что каждый атрибут, не относящийся к CK, полностью функционально определяется каждым CK. Обратите внимание, что единственным CK является {A,B}, а единственный не относящийся к CK атрибут C частично зависит от него, поэтому это значение не находится в 2NF и действительно это соединение без потерь компонентов/проекций на {A, B} и {A, C}, на {A, B} и {B, C} и на {A, B} и {C}.)
(Учтите, что определение «транзитивного FD» в этом учебнике не определяет то же самое, что и стандартное определение «транзитивного FD».)
Частичная зависимость означает, что неосновной атрибут функционально зависит от части ключа-кандидата. (Неосновной атрибут — это атрибут, который не является частью какого-либо ключа-кандидата.)
Например, начнем с R{ABCD} и функциональных зависимостей AB->CD и A->C.
Единственным ключом-кандидатом на R является AB. C и D являются непростыми атрибутами. C функционально зависит от A. A является частью ключа-кандидата. Это частичная зависимость.
Под частичной зависимостью подразумевается ситуация, когда неосновной атрибут (атрибут, который не является частью детерминанта (первичный ключ/ключ-кандидат)) равен < em>функционально зависит от части/части первичного ключа/ключа-кандидата.
Частичная зависимость — это один из видов функциональной зависимости, который возникает, когда первичный ключ должен быть ключом-кандидатом, а неосновной атрибут зависит от подмножества/части ключа-кандидата (более одного первичного ключа).
Попробуйте понять частичную зависимость на примере:
Продавец (идентификатор, продукт, цена)
Ключ-кандидат: идентификатор, продукт
Неосновной атрибут: цена
Атрибут Price зависит только от атрибута Product, который является подмножеством ключа-кандидата, не всего ключа-кандидата (Id, Product). Это называется частичной зависимостью.
Таким образом, мы можем сказать, что Product->Price является частичной зависимостью.
Частичная функциональная зависимость возникает только в отношении составных ключей. Частичная функциональная зависимость возникает, когда один или несколько неключевых атрибутов зависят от части первичного ключа.
Пример:
Таблица: Stud_id, Course_id, Stud_name, Course_Name
Где: Первичный ключ = Stud_id + Course_id
Тогда: Для определения имени студента мы используем только Stud_id, который является частью первичного ключа.
{Stud_id} -> {Stud_Name}
Следовательно, Stud_name частично зависит от Stud_id. Это называется частичной зависимостью.
Я надеюсь, что это объяснение дает более интуитивное обращение к зависимости, чем ответы, данные ранее.
Функциональная зависимость
Анализ зависимости работает на атрибутивном уровне, т.е. один или несколько атрибутов определяются другим атрибутом, он предшествует понятию ключей. «Роль ключа основана на понятии детерминации. 'Определенность — это состояние, в котором знание значения одного атрибута позволяет определить значение другого.' Системы баз данных 12ed
Функциональная зависимость — это когда один или несколько атрибутов определяют один или несколько атрибутов. Например:
Номер социального страхования -> Имя, Фамилия.
Однако по определению функциональной зависимости:
(SSN, Имя) -> Фамилия
Это также допустимая функциональная зависимость. Определяющие факторы (атрибут, определяющий другую атрибуцию) называются суперключом.
Полная функциональная зависимость
Таким образом, в качестве подмножества функциональной зависимости существует понятие полной функциональной зависимости, где рассматривается голый минимальный определитель. Мы называем эти голые минимальные детерминанты коллективно одним ключом-кандидатом (на мой взгляд, странная лингвистическая причуда, как понятие вектора).
Частичная функциональная зависимость
Однако иногда одного из атрибутов в ключе-кандидате достаточно для определения другого атрибута(ов), НО не всех, в отношении (таблица без строк). Это когда у вас есть частичная функциональная зависимость в отношении.
Частичная зависимость решается для достижения отношения в 2NF, но 2NF является «ступенькой» (C. Date) для решения любой транзитивной зависимости и достижения отношения в 3NF (что является рабочей целью). Однако самое интересное в частичной зависимости то, что это частный случай собственной транзитивной зависимости. Это было продемонстрировано П. А. Берштейном в 1976 г.: ЕСЛИ {(x•y)→z, но y→z} ТО {(x•y)→y & y→z}. Алгоритм синтезатора 3NF Берштейна не требует проведения различий между этими двумя типами реляционных дефектов.
Если существует отношение R(ABC)
-----------
|A | B | C |
-----------
|a | 1 | x |
|b | 1 | x |
|c | 1 | x |
|d | 2 | y |
|e | 2 | y |
|f | 3 | z |
|g | 3 | z |
----------
Given,
F1: A --> B
F2: B --> C
Первичный ключ и ключ-кандидат: A
Поскольку замыкание A+ = {ABC} или R --- Таким образом, только атрибут A достаточен, чтобы найти отношение R.
DEF-1: Из некоторых определений (неизвестный источник). Частичная зависимость – это зависимость, когда основной атрибут (т. е. атрибут, являющийся частью (или правильным подмножеством) потенциального ключа) определяет атрибут (т. е. атрибут, который не является частью (или подмножеством) потенциального ключа).
Следовательно, A является простым (P) атрибутом, а B, C не являются простыми (NP) атрибутами.
Итак, из приведенного выше DEF-1 следует
ВНИМАНИЕ-1:: F1: A --> B (P определяет NP) --- Должна быть частичная зависимость.
ВНИМАНИЕ-2:: F2: B --> C (NP определяет NP) --- Транзитивная зависимость.
Из ответа @philipxy я понял (https://stackoverflow.com/a/25827210/6009502)...
РАССМОТРЕНИЕ-1:: F1: A --› B; Должна быть полностью функциональная зависимость, потому что B полностью зависит от A, и если мы удалим A, то не будет надлежащего подмножества (для полной ясности рассмотрим LHS как X НЕ ПО ОДНОМУ АТРИБУТУ), которое могло бы определить B.
Например: если я рассматриваю F1: X --> Y, где X = {A} и Y = {B}, то если мы удалим A из X; т. е. X - {А} = {}; а пустой набор вообще не рассматривается (или вообще не считается) для определения функциональной зависимости. Итак, не существует правильного подмножества X, которое могло бы содержать зависимость F1: X --> Y; Следовательно, это полностью функциональная зависимость.
F1: A --> B Если мы удалим A, то не останется атрибута, который мог бы содержать функциональную зависимость F1. Следовательно, F1 — это полностью функциональная зависимость, а не частичная зависимость.
If F1 were, F1: AC --> B;
and F2 were, F2: C --> B;
then on the removal of A;
C --> B that means B is still dependent on C;
we can say F1 is partial dependecy.
Таким образом, ответ @philipxy противоречит DEF-1 и CONSIDERATION-1, что является правдой и совершенно ясен.
Следовательно, F1: A --> B является полностью функциональной зависимостью, а не частичной зависимостью.
Я считал, что X показывает левую сторону функциональной зависимости, потому что один атрибут не может иметь надлежащее подмножество атрибутов. Здесь я рассматриваю X как набор атрибутов, и в текущем сценарии X — это {A}
-- Для источника DEF-1, пожалуйста, поищите в Google, возможно, вы сможете найти похожие определения. (Учтите, что DEF-1 некорректен или не работает в приведенном выше примере).
- рассмотрим таблицу = {cid, sid, location}
- ключ-кандидат: cidsid (уникально идентифицирует строку)
- основные атрибуты: cid и sid (атрибуты, которые используются при создании ключа-кандидата)
- неосновной атрибут: местоположение (атрибут, отличный от ключа-кандидата)
если ключ-кандидат определяет неосновной атрибут:
i.e cidsid--->location (---->=determining)
then, it is fully functional dependent
если правильное подмножество ключа-кандидата, определяющего неосновной атрибут:
i.e sid--->location (proper subset are sid and cid)
then it is term as partial dependency
чтобы удалить частичную зависимость, мы разделяем таблицу соответственно.