Частичная зависимость (базы данных)

Я сфабриковал определение, что частичная зависимость - это когда поля косвенно зависят от первичного ключа или частично зависят, но также зависят от других ключей, которые зависят от первичного ключа, так что если поле, от которого зависит другое поле, удалено, то это поле все еще будет существуют из-за его зависимости от первичного ключа. Я не уверен, что это правильно. Я исследовал, и каждое определение звучит обманчиво. Правильно ли мое определение, и если нет, то какое?


person rert588    schedule 09.09.2014    source источник


Ответы (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».)

person philipxy    schedule 13.09.2014
comment
Возникает ли частичная зависимость только при наличии составного первичного ключа? Системы баз данных: проектирование, реализация и управление Карлос Коронель, Стивен Моррис утверждает, что преобразование во 2NF происходит только тогда, когда 1NF имеет составной первичный ключ. Если 1NF имеет первичный ключ с одним атрибутом, то таблица автоматически находится во 2NF. Я тоже в этом запутался, помогите пожалуйста - person viper; 09.06.2015
comment
(Вы действительно должны опубликовать это как вопрос.) Нет. Могут быть частичные зависимости, не связанные с CK (ключами-кандидатами). Например, существуют частичные FD для каждого полного FD, чья левая часть не является всеми атрибутами, потому что его правая часть частично зависит от каждого правильного надмножества этой левой части. Прочитайте последнее предложение в моем ответе. Частичное/полное является свойством ФД. FD в совокупности определяют CK и самый высокий NF вплоть до BCNF. PS: ПК не играют никакой роли в нормализации. Просто выбирают один CK и называют его ПК. - person philipxy; 10.06.2015
comment
PPS: 2NF не требует частичных FD непростых атрибутов на CK. В книге говорится, что для не-2NF не может быть FD из правильного подмножества CK с одним атрибутом. Но книга неверна. Они забыли о пустом множестве как о правильном подмножестве: можно иметь не-2NF с CK {A}, но при этом частичный FD непростого B на нем, когда {}->B (т. е. значения B одинаковы). Учебники и мир SQL часто забывают о пустом наборе в FD. Например, это и это & это. - person philipxy; 10.06.2015
comment
Ваше абстрактное определение может выиграть от конкретного примера. - person Jeff Puckett; 12.09.2016
comment
@JeffPuckettII Я привел пример. Я не знаю, что, по вашему мнению, делает определение абстрактным, а не нет, или конкретный пример, а не нет. (Может быть, для вас, по определению определения и примера?) Я полагаю, вы имеете в виду пример, состоящий из одного полного FD, одного частичного FD, для каждого значения отношения/таблицы, удовлетворяющего ему, перечисление всех FD, которые можно получить удаление определяющего атрибута из каждого FD и наблюдения о том, что ни один из новых FD из полного FD не удовлетворен, следовательно, он полон, и по крайней мере один из новых FD из частичного FD удовлетворен, следовательно, он частичный? - person philipxy; 08.10.2016
comment
@филипси; Не могли бы вы отредактировать свой ответ с помощью примера, состоящего из произвольной реляционной таблицы, чтобы мы могли понять вашу точку зрения без какой-либо путаницы. Спасибо за ваши старания. - person sagar; 27.09.2019
comment
@sagar Смотрите мой отредактированный пост с примерами данных. Но -- Пожалуйста, прочтите мой последний комментарий, например. Я уже приводил пример: например, если {A,B} → {C}, но также и {A} → {C}, тогда {C} частично функционально зависит от {A,B}. Если вы не знаете, как определить, выполняется ли FD, вам нужно выяснить это. Где я перестаю объяснять? Вам нужно запомнить определения. Затем, чтобы узнать, есть ли у вас вещь определенного вида, определите, применимо ли определение такого рода вещи, т. е. определите, выполняется ли определяющее условие такого рода вещи, т. е. выполняется ли оно. - person philipxy; 28.09.2019

Частичная зависимость означает, что неосновной атрибут функционально зависит от части ключа-кандидата. (Неосновной атрибут — это атрибут, который не является частью какого-либо ключа-кандидата.)

Например, начнем с R{ABCD} и функциональных зависимостей AB->CD и A->C.

Единственным ключом-кандидатом на R является AB. C и D являются непростыми атрибутами. C функционально зависит от A. A является частью ключа-кандидата. Это частичная зависимость.

person Mike Sherrill 'Cat Recall'    schedule 09.09.2014
comment
Каждый FD, который выполняется, является либо полным, либо частичным; ключи в него не входят. - person philipxy; 14.09.2014
comment
C частично зависит от AB, т.е. AB->C является частичным FD, потому что C зависит от правильного подмножества AB, A. C полностью зависит от A, т.е. A->C является полным FD, потому что C является функционально не зависит от собственного подмножества A. - person philipxy; 14.09.2014
comment
Привет. Какова ваша ссылка для вашего определения частичного FD? См. мой ответ для другого - в соответствии с цитируемым учебником. Вот исходное определение полного FD, данное Коддом в «Дальнейшей нормализации реляционной модели базы данных»: Предположим, что D, E — два различных поднабора атрибутов отношения R и R.D -> R.E. Если, кроме того, E не зависит функционально от какого-либо подмножества D (кроме самого D), то говорят, что E полностью зависит от D в R. (Это не определено для X->X. Больше исследований.) - person philipxy; 11.04.2019
comment
@philipxy: у меня нет ссылки. У меня нет формального образования, связанного с компьютерами. Я полностью самоучка. Я бы удивился, если бы все понял правильно. - person Mike Sherrill 'Cat Recall'; 11.04.2019
comment
Спасибо. К сожалению, этот ответ неверен, и люди приходят на этот пост и думают не так. На самом деле я подозреваю, что они даже не доходят до страницы, чтобы подумать об этих неправильных вещах, потому что вверху страницы над любыми ссылками, когда я гуглю «частичная функциональная зависимость», есть текст из сообщений этой страницы, говорящий неправильные вещи. Только что этот текст был началом вашего поста, но иногда он из других неправильных постов. (Хотя я не видел своего ответа. Хорошо, я, возможно, узнал кое-что о ранжировании и грамматике там.) PS Ваши посты по теории БД & dportas/sqlvogel/nvogel (обычно) исключительно высокого качества. - person philipxy; 11.04.2019
comment
В последнем абзаце вашего ответа неправильно сказано, что A -> C является частичным, но это не так, а частичным FD, нарушающим 2NF, является AB -> C. Что я не пояснил в первых комментариях к этому ответу. - person philipxy; 11.04.2019

Под частичной зависимостью подразумевается ситуация, когда неосновной атрибут (атрибут, который не является частью детерминанта (первичный ключ/ключ-кандидат)) равен < em>функционально зависит от части/части первичного ключа/ключа-кандидата.

person Lehlohonolo    schedule 04.06.2015
comment
Какова ваша ссылка для вашего определения частичного FD? - person philipxy; 11.04.2019

Частичная зависимость — это один из видов функциональной зависимости, который возникает, когда первичный ключ должен быть ключом-кандидатом, а неосновной атрибут зависит от подмножества/части ключа-кандидата (более одного первичного ключа).

Попробуйте понять частичную зависимость на примере:

Продавец (идентификатор, продукт, цена)

Ключ-кандидат: идентификатор, продукт
Неосновной атрибут: цена

Атрибут Price зависит только от атрибута Product, который является подмножеством ключа-кандидата, не всего ключа-кандидата (Id, Product). Это называется частичной зависимостью.

Таким образом, мы можем сказать, что Product->Price является частичной зависимостью.

person rashedcs    schedule 20.12.2017
comment
Какова ваша ссылка для вашего определения частичного FD? - person philipxy; 11.04.2019
comment
Я написал это, основываясь на своей интуиции. Вот почему я не могу дать ссылку. Если обнаружите какую-либо ошибку, обязательно сообщите об этом. - person rashedcs; 18.01.2020
comment
Технические термины имеют значения и историю. Частичный FD был определен как означающий определенную вещь, и он постоянно использовался в этом значении в исследованиях и учебниках. Определение легко найти в учебнике. Он не определяется с точки зрения CK или PK. Смотрите мой ответ. Но этот ваш пост не соответствует тому, что он означает. (Кроме того, ваш английский не ясен.) Поэтому меня интересовало, почему вы думаете, что это означает то, что вы думаете, - хотя ваш пост недостаточно ясен, чтобы понять, что вы думаете, что это означает. Интуиция не имеет значения, и очень странно, что вы упоминаете об этом. - person philipxy; 18.01.2020
comment
Я студент компьютерных наук. Я вообще не эксперт. Но я стараюсь делать все возможное для самосовершенствования. - person rashedcs; 18.01.2020

Частичная функциональная зависимость возникает только в отношении составных ключей. Частичная функциональная зависимость возникает, когда один или несколько неключевых атрибутов зависят от части первичного ключа.

Пример:

Таблица: Stud_id, Course_id, Stud_name, Course_Name

Где: Первичный ключ = Stud_id + Course_id

Тогда: Для определения имени студента мы используем только Stud_id, который является частью первичного ключа.

{Stud_id} -> {Stud_Name}

Следовательно, Stud_name частично зависит от Stud_id. Это называется частичной зависимостью.

person Juhi Shelar    schedule 28.11.2017
comment
Первое предложение неверно, см. мой ответ и мои комментарии к нему. Второе предложение неверно и неясно, см. мой ответ. Остальное непонятно. - person philipxy; 11.09.2018
comment
Какова ваша ссылка для вашего определения частичного FD? - person philipxy; 11.04.2019

Я надеюсь, что это объяснение дает более интуитивное обращение к зависимости, чем ответы, данные ранее.

Функциональная зависимость

Анализ зависимости работает на атрибутивном уровне, т.е. один или несколько атрибутов определяются другим атрибутом, он предшествует понятию ключей. «Роль ключа основана на понятии детерминации. 'Определенность — это состояние, в котором знание значения одного атрибута позволяет определить значение другого.' Системы баз данных 12ed

Функциональная зависимость — это когда один или несколько атрибутов определяют один или несколько атрибутов. Например:

Номер социального страхования -> Имя, Фамилия.

Однако по определению функциональной зависимости:

(SSN, Имя) -> Фамилия

Это также допустимая функциональная зависимость. Определяющие факторы (атрибут, определяющий другую атрибуцию) называются суперключом.

Полная функциональная зависимость

Таким образом, в качестве подмножества функциональной зависимости существует понятие полной функциональной зависимости, где рассматривается голый минимальный определитель. Мы называем эти голые минимальные детерминанты коллективно одним ключом-кандидатом (на мой взгляд, странная лингвистическая причуда, как понятие вектора).

Частичная функциональная зависимость

Однако иногда одного из атрибутов в ключе-кандидате достаточно для определения другого атрибута(ов), НО не всех, в отношении (таблица без строк). Это когда у вас есть частичная функциональная зависимость в отношении.

person Vincent Lam    schedule 11.09.2018
comment
Какова ваша ссылка для вашего определения частичного FD? - person philipxy; 11.04.2019

Частичная зависимость решается для достижения отношения в 2NF, но 2NF является «ступенькой» (C. Date) для решения любой транзитивной зависимости и достижения отношения в 3NF (что является рабочей целью). Однако самое интересное в частичной зависимости то, что это частный случай собственной транзитивной зависимости. Это было продемонстрировано П. А. Берштейном в 1976 г.: ЕСЛИ {(x•y)→z, но y→z} ТО {(x•y)→y & y→z}. Алгоритм синтезатора 3NF Берштейна не требует проведения различий между этими двумя типами реляционных дефектов.

person EnriqueVillar    schedule 23.01.2015

Если существует отношение 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 некорректен или не работает в приведенном выше примере).

person sagar    schedule 27.09.2019
comment
Это не ясно. Используйте достаточное количество слов, предложений и ссылок на части примеров, чтобы ясно и полностью выразить то, что вы имеете в виду. Не пытайтесь втиснуть все в одну фразу или предложение. Также это говорит о неправильных вещах. Эти FD должны формировать прикрытие, иначе вы не сможете определить CK. ПК не имеют значения. достаточно найти только повседневные слова. мы можем сказать, что В частично зависит от А так же, как и С — нет, В частично зависит от АС. Def-1 искажает частичную FD с помощью 2NF. Как может источник, который вы цитируете, быть неизвестным? -- И какой смысл его давать? -- И что вы с ним делаете? ... - person philipxy; 28.09.2019
comment
... См. мои комментарии к моему ответу и моему отредактированному ответу о том, как FD с одним атрибутом в качестве определителя может быть частичным, потому что {} может быть определителем. потому что B полностью зависит от A, неправильно, это потому, что B не зависит не от всего A - очевидно, что в X-›Y Y всегда зависит от всего X. В чем смысл данные вашего примера? -- Вы ни для чего не используете его содержимое. и т.д. - person philipxy; 28.09.2019
comment
@philipxy обновил мой ответ для получения дополнительных разъяснений, которые могут помочь вам понять мою точку зрения. Однако на практике я никогда не видел пустого атрибута или пустого множества -- {} что-то определяет. Теоретически это возможно. Но практического применения этому нет. - person sagar; 28.09.2019
comment
Это по-прежнему имеет большинство проблем - я думаю, мы не согласны. PS Мой последний комментарий уже противоречит вашему последнему комментарию относительно {}. (Просто примените определение FD.) PS {}->{X}, когда/если X должно иметь не более одного значения. Мы не видим так много, потому что обычно это явно плохой дизайн. Но 2 примера из практики - это таблица значений параметров с одной строкой ({} - это один CK) и определенная идиома SQL для декларативного ограничения, когда таблица подтипа имеет столбец только с собственным тегом типа как FK для столбца тега подтипа в таблице супертипов. - person philipxy; 29.09.2019
comment
PS re Данные ФД: Что означают эти ФД у меня? Это все FD, которые выдерживают? - Невозможно. Это все нетривиальные FD, которые выполняются? - Невозможно. Это какие-то FD, которые выдерживают? - На этот вопрос нельзя ответить. Узнайте, что такое обложка и каковы точные условия применения конкретного определения/правила/алгоритма. Чтобы определить CK и NF, нам должны быть заданы FD, которые образуют покрытие. Иногда минимальное/неснижаемое покрытие. см. этот ответ. - person philipxy; 29.09.2019

  • рассмотрим таблицу = {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

чтобы удалить частичную зависимость, мы разделяем таблицу соответственно.

person Yash Zade    schedule 21.03.2020