A dependencia multivalor rompe a cuarta forma normal
Nunha base de datos relacional, prodúcese unha dependencia cando a información almacenada na mesma táboa de base de datos determina de forma exclusiva outra información almacenada na mesma táboa. Unha dependencia multivalúvel ocorre cando a presenza dunha ou máis filas nunha táboa implica a presenza dunha ou máis outras filas nesa mesma táboa. Dito doutra forma, dous atributos (ou columnas) nunha táboa son independentes entre si, pero ambos dependen dun terceiro atributo.
Unha dependencia multivalor impide a normalización estándar cuarta forma normal (4NF). As bases de datos relacionalas seguen cinco formas normais que representan directrices para o deseño de discos. Evitan as anomalías de actualización e as inconsistencias nos datos. A cuarta forma normal trata de relacións de moitos a un nunha base de datos .
Dependencia funcional vs dependencia multivalor
Para comprender unha dependencia multivalor, é útil revisitar o que é unha dependencia funcional.
Se un atributo X determina exclusivamente un atributo Y, entón Y depende funcionalmente de X. Isto escríbese como X -> Y. Por exemplo, na táboa de estudantes a continuación, o Student_Name determina o Maior:
Student_Name | Maior |
---|---|
Ravi | Historia da arte |
Beth | Química |
Esta dependencia funcional pode escribirse: Student_Name -> Major . Cada Student_Name determina exactamente un Maior, e non máis.
Se queres que a base de datos tamén faga seguimento dos deportes que estes estudantes levan, podes pensar que o xeito máis sinxelo de facelo é engadir outra columna titulada Deporte:
Student_Name | Maior | Deporte |
---|---|---|
Ravi | Historia da arte | Fútbol |
Ravi | Historia da arte | Voleibol |
Ravi | Historia da arte | Tenis |
Beth | Química | Tenis |
Beth | Química | Fútbol |
O problema aquí é que tanto Ravi como Beth xogan múltiples deportes. É necesario engadir unha nova fila para cada deporte adicional.
Esta táboa introduciu unha dependencia multivalor porque o maior eo deporte son independentes entre si pero ambos dependen do alumno.
Este é un exemplo sinxelo e fácil de identificar, pero unha dependencia multivalor podería converterse nun problema nunha base de datos grande e complexa.
Depende da dependencia multivalor X -> -> Y. Neste caso:
Student_Name -> -> Maior
Student_Name -> -> Deporte
Isto é lido como "Student_Name multidetermines Major" e "Student_Name multidetermines Sport".
Unha dependencia multivalor sempre require polo menos tres atributos porque consta de polo menos dous atributos que dependen dunha terceira.
Dependencia e normalización multivalor
Unha táboa cunha dependencia multivalor viola o estándar de normalización do Cuarto Formulario Normal (4NK) porque crea despedimentos innecesarios e pode contribuír a datos inconsistentes. Para levar isto a 4NF, é necesario romper esta información en dúas táboas.
A táboa de abaixo agora ten unha dependencia funcional de Student_Name -> Major e sen dependencias multivaloradas:
Student_Name | Maior |
---|---|
Ravi | Historia da arte |
Ravi | Historia da arte |
Ravi | Historia da arte |
Beth | Química |
Beth | Química |
Aínda que esta táboa tamén ten unha dependencia funcional única de Student_Name -> Deporte:
Student_Name | Deporte |
---|---|
Ravi | Fútbol |
Ravi | Voleibol |
Ravi | Tenis |
Beth | Tenis |
Beth | Fútbol |
Está claro que a normalización adoita ser abordada simplificando táboas complexas para que conteñan información relacionada cunha única idea ou tema en vez de tentar facer que unha única táboa conteña demasiada información disparada.