Многозначное нарушение зависимости? - PullRequest
1 голос
/ 01 ноября 2011

я запутался в нарушении mvd, просто не могу понять, что будет нарушать mvd, например, есть три столбца A B C, каждая строка - кортеж

A B C

a2 b2 c1
a1 b1 c2
a1 b1 c3
a2 b3 c1

делает B - >> C и B - >> A?

спасибо

Ответы [ 3 ]

4 голосов
/ 04 ноября 2011

MVD, как и FD, является правилом .Это относится к вашему бизнес-случаю или нет, вам нужно проверить требования и / или спецификации, чтобы узнать.

Вы не можете знать, применимо ли это, просматривая образцы данных (которые относятся к FD какхорошо).

Глядя на примеры данных, можно сказать только то, что «если правило применяется, то эти данные будут действительными / недействительными», или «если эти данные должны быть действительными, то определенное правило MVD определенно выиграет't apply'.

Теперь, что означает такое правило MVD точно ?

Сначала взглянем на то, что FD сообщает точно .FD утверждает, что для определенного [набора] атрибута [s] (левая сторона FD) не может быть случая, чтобы какая-то конкретная [комбинация] значения [s] ассоциировалась с более чем одной [комбинацией]Отличное значение [s] атрибутов на правой стороне FD.

A-> B действительно означает, что для всех пар значений атрибута (a1, b1) и (a2, b2) оно содержитa1 = a2 ===> b1 = b2.

MVD является обобщением FD в том смысле, что в нем не говорится, что отдельные значения B должны быть связаны с / определены с помощью Aзначения, но вместо этого говорится, что SETS из значений B должны быть связаны / определены значениями A.

(предупреждение: здесь переключение с A / B на B / C!)

В вашем примере, b2 «связан» с набором {c1}, а значение b1 «связано» с набором {c2, c3}.Теперь, если MVD B - >> C действительно применяется, тогда строка a4, b1, c2 должна появиться в вашей таблице только в том случае, если строка a4, b1, c3 также появится одновременно.Аналогично, если у вас есть эти две дополнительные строки, и вы добавляете a1, b1, c4, это «добавит» c4 к набору значений, «мультиопределенных» значением b1, и, следовательно, ваш MVD будет нарушен, если вы нетакже добавьте a4, b1, c4.

1 голос
/ 04 ноября 2011

Было бы нарушением MVD, если бы вы изменили значение a1 на что-то другое на одной строк для b1.

A B C

a2 b2 c1
a1 b1 c2
a3 b1 c3
a2 b3 c1

Если B - >> A и B - >> C, то должно быть верно, что для данного значения B строки должны быть образованы перекрестным произведением различных значений A и C. Другими словами, каждая перестановка различных значений A и C будет представлена.

Если вам нужен b1 для определения a1 / a3 и c2 / c3, то ваша таблица должна выглядеть следующим образом:

A B C

a2 b2 c1
a1 b1 c2
a1 b1 c3
a3 b1 c2
a3 b1 c3
a2 b3 c1

Но я не думаю, что в вашем примере достаточно информации, чтобы сказать, что B - >> A и B - >> C. Также возможно, что A - >> B и A - >> C, или C - >> A и C - >> B.

0 голосов
/ 10 ноября 2011

это о нарушении mvd или нарушении 4NF?Вы проверяли http://en.wikipedia.org/wiki/Multivalued_dependency?

...