En teoría de bases de datos , una dependencia multivalor es una restricción total entre dos conjuntos de atributos en una relación .
A diferencia de la dependencia funcional , la dependencia multivalor requiere que ciertas tuplas estén presentes en una relación. Por lo tanto, una dependencia multivalor es un caso especial de dependencia generadora de tuplas . La dependencia multivalor juega un papel en la normalización de la base de datos 4NF .
Una dependencia multivalor es un caso especial de dependencia de unión , con sólo dos conjuntos de valores involucrados, es decir, es una dependencia de unión binaria.
Existe una dependencia multivaluada cuando hay al menos tres atributos (como X,Y y Z) en una relación y para un valor de X hay un conjunto bien definido de valores de Y y un conjunto bien definido de valores de Z. Sin embargo, el conjunto de valores de Y es independiente del conjunto Z y viceversa.
Definicion formal
La definición formal es la siguiente: [1]
Sea una relación y sea y sean conjuntos de atributos. La dependencia multivaluada (" multidetermina ") se mantiene si, para cualquier relación jurídica y todos los pares de tuplas y en tal que , existen tuplas y en tal que:![{\displaystyle R}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \subseteq R}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \beta \subseteq R}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\beta}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle R}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle r(R)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle r}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle t_{1}[\alpha ]=t_{2}[\alpha ]}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {3}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {4}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle r}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle {\begin{matrix}t_{1}[\alpha ]=t_{2}[\alpha ]=t_{3}[\alpha ]=t_{4}[\alpha ]\\t_{1} [\beta ]=t_{3}[\beta ]\\t_{2}[\beta ]=t_{4}[\beta ]\\t_{1}[R\setminus (\alpha \cup \beta ) ]=t_{4}[R\setminus (\alpha \cup \beta )]\\t_{2}[R\setminus (\alpha \cup \beta )]=t_{3}[R\setminus (\alpha \taza \beta )]\end{matrix}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Informalmente, si se denota por la tupla que tiene valores para colectivamente iguales a , entonces siempre que las tuplas y existan en , las tuplas y también deberían existir en .![{\displaystyle (x,y,z)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle R-\alfa -\beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle z}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle (a,b,c)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle (a,d,e)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle r}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle (a,b,e)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle (a,d,c)}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle r}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
La dependencia multivalor se puede representar esquemáticamente como se muestra a continuación:
![{\displaystyle {\begin{matrix}{\text{tuple}}&\alpha &\beta &R\setminus (\alpha \cup \beta )\\t_{1}&a_{1}..a_{n}&b_ {1}..b_{m}&d_{1}..d_{k}\\t_{2}&a_{1}..a_{n}&c_{1}..c_{m}&e_{1}. .e_{k}\\t_{3}&a_{1}..a_{n}&b_{1}..b_{m}&e_{1}..e_{k}\\t_{4}&a_{1 }..a_{n}&c_{1}..c_{m}&d_{1}..d_{k}\end{matrix}}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Ejemplo
Considere este ejemplo de una relación de cursos universitarios, los libros recomendados para el curso y los profesores que impartirán el curso:
Debido a que los profesores adjuntos al curso y los libros adjuntos al curso son independientes entre sí, este diseño de base de datos tiene una dependencia multivalor; si tuviéramos que agregar un nuevo libro al curso de la AHA, tendríamos que agregar un registro para cada uno de los profesores de ese curso, y viceversa.
Dicho formalmente, hay dos dependencias multivaluadas en esta relación: {curso} {libro} y, de manera equivalente, {curso} {profesor}.
Por tanto, las bases de datos con dependencias multivalor presentan redundancia. En la normalización de bases de datos , la cuarta forma normal requiere que para cada dependencia multivalor no trivial X Y , X sea una superclave . Una dependencia multivaluada X Y es trivial si Y es un subconjunto de X , o si es el conjunto completo de atributos de la relación.![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle X\taza Y}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Propiedades
- Si , entonces
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \twoheadrightarrow R-\beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Si y , entonces
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \gamma \subseteq \delta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \delta \twoheadrightarrow \beta \gamma}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Si y , entonces
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \beta \twoheadrightarrow \gamma }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \twoheadrightarrow \gamma -\beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Lo siguiente también implica dependencias funcionales :
- Si entonces
![{\displaystyle \alpha \rightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Si y , entonces
![{\displaystyle \alpha \twoheadrightarrow \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \beta \rightarrow \gamma }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \alpha \twoheadrightarrow \gamma -\beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Las reglas anteriores son sólidas y completas.
- Una descomposición de R en ( X , Y ) y ( X , R − Y ) es una descomposición de unión sin pérdidas si y sólo si X Y se cumple en R .
- Cada FD es un MVD porque si X Y, entonces intercambiar Y entre tuplas que coinciden en X no crea nuevas tuplas.
![{\displaystyle\rightarrow}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- La división no se sostiene. Al igual que los FD, generalmente no podemos dividir el lado izquierdo de un MVD. Pero a diferencia de los FD, tampoco podemos dividir el lado derecho, a veces hay que dejar varios atributos en el lado derecho.
- El cierre de un conjunto de MVD es el conjunto de todos los MVD que se pueden inferir utilizando las siguientes reglas ( axiomas de Armstrong ):
- Complementación : Si X Y, entonces X R - Y
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Aumento : si X Y y Z W, entonces XW YZ
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \subseteq}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Transitividad : Si X Y e Y Z, entonces X Z - Y
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Replicación : si X Y, entonces X Y
![{\displaystyle\rightarrow}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- Coalescencia : si X Y y W st W Y = , W Z y Z Y, entonces X Z
![{\displaystyle \twoheadrightarrow }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\existe}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\cap}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\emptyset}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\rightarrow}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle \subseteq}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\displaystyle\rightarrow}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Definiciones
- restricción completa
- Una restricción que expresa algo sobre todos los atributos de una base de datos. (En contraste con una restricción incorporada .) Que una dependencia multivalor es una restricción completa se desprende de su definición, como cuando dice algo sobre los atributos .
![{\displaystyle R-\beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- dependencia generadora de tuplas
- Una dependencia que requiere explícitamente que ciertas tuplas estén presentes en la relación.
- dependencia multivalor trivial 1
- Una dependencia multivaluada que involucra todos los atributos de una relación, es decir . Una dependencia multivaluada trivial implica, para tuplas y , tuplas y que son iguales a y .
![{\displaystyle R=\alpha \cup \beta }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {3}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {4}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {1}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![{\ Displaystyle t_ {2}}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
- dependencia multivalor trivial 2
- Una dependencia multivaluada para la cual .
![{\displaystyle \beta \subseteq \alpha }](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
Referencias
enlaces externos
- Dependencias multivalor y una nueva forma normal para bases de datos relacionales (PDF) - Ronald Fagin, IBM Research Lab
- Sobre la estructura de las relaciones de Armstrong para las dependencias funcionales (PDF) - CATRIEL BEERI (Universidad Hebrea), MARTIN DOWD (Universidad de Rutgers), RONALD FAGIN (Laboratorio de investigación de IBM) Y RICHARD STATMAN (Universidad de Rutgers)
- Sobre un problema de Fagin sobre dependencias multivalor en bases de datos relacionales (PDF) - Sven Hartmann, Universidad de Massey