Em um banco de dados relacional, uma dependência ocorre quando as informações armazenadas na mesma tabela de banco de dados determinam exclusivamente outras informações armazenadas na mesma tabela. Uma dependência multivalorada ocorre quando a presença de uma ou mais linhas em uma tabela implica a presença de uma ou mais outras linhas na mesma tabela. Em outras palavras, dois atributos (ou colunas) em uma tabela são independentes uns dos outros, mas ambos dependem de um terceiro atributo.
Uma dependência multivalorada impede a norma de normalização da quarta forma normal (4NF). Os bancos de dados relacionais seguem cinco formulários normais que representam diretrizes para o design de registros. Eles evitam anomalias de atualização e inconsistências nos dados. A quarta forma normal lida com relacionamentos muitos-para-um em um banco de dados.
Dependência Funcional vs. Dependência Multivalorada
Para entender uma dependência multivalorada, é útil rever o que é uma dependência funcional.
Se um atributo X determina exclusivamente um atributo Y, então Y é funcionalmente dependente de X. Isso é escrito como X -> Y. Por exemplo, na tabela Alunos abaixo, o Student_Name determina o Major:
Nome do aluno | Principal |
---|---|
Ravi | História da arte |
Beth | Química |
Esta dependência funcional pode ser escrita: Student_Name -> Major . Cada Student_Name determina exatamente um major e não mais. Se você quiser que o banco de dados também acompanhe os esportes que esses alunos fazem, você pode achar que a maneira mais fácil de fazer isso é simplesmente adicionar outra coluna intitulada Esporte: O problema aqui é que tanto Ravi quanto Beth participam de vários esportes. É necessário adicionar uma nova linha para cada esporte adicional. Esta tabela introduziu uma dependência multivaluida porque o major e o esporte são independentes um do outro, mas ambos dependem do aluno. Este é um exemplo simples e facilmente identificável, mas uma dependência de vários valores pode se tornar um problema em um banco de dados grande e complexo. Uma dependência de valor múltiplo é gravada X -> -> Y. Nesse caso: Nome do aluno ->-> PrincipalNome do aluno->-> Esporte
Isso é lido como "Student_Name multidetermines Major" e "Student_Name multidetermines Sport". Uma dependência multivalorada sempre requer pelo menos três atributos porque consiste em pelo menos dois atributos que são dependentes de um terceiro. Uma tabela com uma dependência multivalorada viola o padrão de normalização da Quarta Forma Normal (4NK) porque cria redundâncias desnecessárias e pode contribuir para dados inconsistentes. Para trazer isso para 4NF, é necessário dividir essa informação em duas tabelas. A tabela abaixo agora tem uma dependência funcional de Student_Name -> Major e não há dependências de valores múltiplos: Enquanto esta tabela também possui uma única dependência funcional de Student_Name -> Sport: É claro que a normalização é geralmente resolvida pela simplificação de tabelas complexas, de modo que elas contenham informações relacionadas a uma única ideia ou tema, em vez de tentar fazer com que uma única tabela contenha informações muito diferentes.Nome do aluno Principal Esporte Ravi História da arte Futebol Ravi História da arte Voleibol Ravi História da arte tênis Beth Química tênis Beth Química Futebol Dependência e Normalização Multivalorada
Nome do aluno Principal Ravi História da arte Ravi História da arte Ravi História da arte Beth Química Beth Química Nome do aluno Esporte Ravi Futebol Ravi Voleibol Ravi tênis Beth tênis Beth Futebol