|
|
Line 1: |
Line 1: |
| {{refimprove|date=October 2012}}
| | Emilia Shryock is my title but you can call me something you like. For years he's been working as a receptionist. Years in the past we moved to North Dakota and I adore each working day living here. What I adore performing is performing ceramics but I haven't produced a dime with it.<br><br>My page: home std test - [http://www.1a-pornotube.com/blog/84958 Click At this website] - |
| | |
| In [[database theory]], '''multivalued [[dependency theory (database theory)|dependency]]''' ''is a full constraint'' between two sets of attributes in a [[Relation (database)|relation]].
| |
| | |
| In contrast to the [[functional dependency]], the '''multivalued dependency''' requires that certain [[tuple]]s be present in a relation. Therefore, a multivalued dependency is a special case of ''tuple-generating dependency''. The multivalued dependency plays a role in the [[4NF|4NF database normalization]].
| |
| | |
| A multivalued dependency is a special case of a [[join dependency]], with only two sets of values involved, i.e. it is a 2-ary join dependency.
| |
| | |
| == Formal definition ==
| |
| The formal definition is given as follows.
| |
| <ref>{{Cite book
| |
| | last = Silberschatz
| |
| | first = Abraham
| |
| | coauthors = Korth, Sudarshan
| |
| | authorlink = Abraham Silberschatz
| |
| | title = Database System Concepts
| |
| | publisher = [[McGraw-Hill]]
| |
| | edition = 5th
| |
| | year = 2006
| |
| | page = 295
| |
| | isbn = 0-07-124476-X}}</ref>
| |
| <blockquote>
| |
| Let <math>R</math> be a relation schema and let <math>\alpha \subseteq R</math> and <math>\beta \subseteq R</math> (subsets). The multivalued dependency<br/>
| |
| <math>\alpha \twoheadrightarrow \beta</math><br/>
| |
| (which can be read as <math> \alpha </math> multidetermines <math> \beta </math>) holds on <math>R</math> if, in any legal relation <math>r(R)</math>, for all pairs of tuples <math>t _1</math> and <math>t _2</math> in <math>r</math> such that <math>t _1[\alpha]=t _2[\alpha]</math>, there exist tuples <math>t _3</math> and <math>t _4</math> in <math>r</math> such that <br/>
| |
| <math>t _1[\alpha] = t _2 [\alpha] = t _3 [\alpha] = t _4 [\alpha]</math><br>
| |
| <math>t _3[\beta] = t _1 [\beta]</math><br>
| |
| <math>t _3[R - \beta] = t _2 [R - \beta]</math><br>
| |
| <math>t _4[\beta] = t _2 [\beta]</math><br>
| |
| <math>t _4[R - \beta] = t _1 [R - \beta]</math><br>
| |
| </blockquote>
| |
| In more simple words the above condition can be expressed as follows: if we denote by <math>(x,y,z)</math> the tuple having values for <math>\alpha,</math> <math>\beta,</math> <math>R - \alpha - \beta</math> collectively equal to <math>x,</math> <math>y,</math> <math>z,</math> correspondingly, then whenever the tuples <math>(a,b,c)</math> and <math>(a,d,e)</math> exist in <math>r</math>, the tuples <math>(a,b,e)</math> and <math>(a,d,c)</math> should also exist in <math>r</math>.
| |
| | |
| == Example ==
| |
| | |
| Consider this example of a database of teaching courses, the books recommended for the course, and the lecturers who will be teaching the course:
| |
| | |
| {|+''Teaching database''
| |
| |-
| |
| !Course !! Book !! Lecturer
| |
| |-
| |
| | AHA || Silberschatz || John D
| |
| |-
| |
| | AHA || Nederpelt || William M
| |
| |-
| |
| | AHA || Silberschatz || William M
| |
| |-
| |
| | AHA || Nederpelt || John D
| |
| |-
| |
| | AHA || Silberschatz || Christian G
| |
| |-
| |
| | AHA || Nederpelt || Christian G
| |
| |-
| |
| | OSO || Silberschatz || John D
| |
| |-
| |
| | OSO || Silberschatz || William M
| |
| |}
| |
| | |
| Because the lecturers attached to the course and the books attached to the course are independent of each other, this database design has a multivalued dependency; if we were to add a new book to the AHA course, we would have to add one record for each of the lecturers on that course, and vice versa.
| |
| <br>Put formally, there are two multivalued dependencies in this relation: {course} <math>\twoheadrightarrow</math> {book} and equivalently {course} <math>\twoheadrightarrow</math> {lecturer}.
| |
| <br>Databases with multivalued dependencies thus exhibit redundancy. In [[database normalization]], [[fourth normal form]] requires that either every multivalued dependency ''X'' <math>\twoheadrightarrow</math> ''Y'' is trivial or for every nontrivial multivalued dependency ''X'' <math>\twoheadrightarrow</math> ''Y'', ''X'' is a [[superkey]].
| |
| <!--
| |
| Example showing how to model the above in a Fourth Normal Form compliant way goes here-->
| |
| | |
| == Interesting properties ==
| |
| * If <math>\alpha \twoheadrightarrow \beta</math>, Then <math>\alpha \twoheadrightarrow R - \beta</math>
| |
| * If <math>\alpha \twoheadrightarrow \beta</math> and <math>\gamma \subseteq \delta</math>, Then <math>\alpha \delta \twoheadrightarrow \beta \gamma</math>
| |
| * If <math>\alpha \twoheadrightarrow \beta</math> and <math>\beta \twoheadrightarrow \gamma</math>, then <math>\alpha \twoheadrightarrow \gamma - \beta</math>
| |
| The following also involve [[functional dependency|functional dependencies]]:
| |
| * If <math>\alpha \rightarrow \beta</math>, then <math>\alpha \twoheadrightarrow \beta</math>
| |
| * If <math>\alpha \twoheadrightarrow \beta</math> and <math>\beta \rightarrow \gamma</math>, then <math>\alpha \twoheadrightarrow \gamma - \beta</math>
| |
| | |
| The above rules are sound and complete.
| |
| | |
| * A decomposition of ''R'' into (''X'', ''Y'') and (''X'', ''R'' − ''Y'') is a [[lossless-join decomposition]] if and only if ''X'' <math>\twoheadrightarrow</math> ''Y'' holds in ''R''.
| |
| | |
| == Definitions ==
| |
| ; full constraint: A constraint which expresses something about ''all'' attributes in a database. (In contrast to an '''embedded constraint'''.) That a multivalued dependency is a ''full constraint'' follows from its definition,as where it says something about the attributes <math>R - \beta</math>.
| |
| ; tuple-generating dependency: A dependency which explicitly requires certain tuples to be present in the relation.
| |
| ; trivial multivalued dependency 1: A multivalued dependency which involves all the attributes of a relation i.e.<math>R = \alpha \cup \beta</math>. A trivial multivalued dependency implies, for tuples <math>t _1</math> and <math>t _2</math>, tuples <math>t _3</math> and <math>t _4</math> which are equal to <math>t _1</math> and <math>t _2</math>.
| |
| ; trivial multivalued dependency 2: A multivalued dependency for which <math>\beta \subseteq \alpha</math>.
| |
| | |
| == References ==
| |
| <references/>
| |
| | |
| == External links ==
| |
| *[http://www.almaden.ibm.com/cs/people/fagin/tods77.pdf Multivalued dependencies and a new Normal form for Relational Databases] (PDF) - Ronald Fagin, IBM Research Lab
| |
| | |
| [[Category:Data modeling]]
| |
| [[Category:Database constraints]]
| |
Emilia Shryock is my title but you can call me something you like. For years he's been working as a receptionist. Years in the past we moved to North Dakota and I adore each working day living here. What I adore performing is performing ceramics but I haven't produced a dime with it.
My page: home std test - Click At this website -