4.6. Atributos multivalorados (vetores)
A maioria dos atributos possui um valor único para uma entidade em particular; tais atributos são chamados de valor único. Por exemplo, Idade é um atributo único para uma pessoa, pois uma pessoa não pode ter dois valores distintos para idade. Já número de telefone pode ser considerado um atributo multivalorado, já que é possível que uma pessoa possua vários números de telefone.
Por exemplo, podemos definir que em um projeto específico uma pessoa pode ter até três números de telefone. Já alguns atributos não devem ter limites pré-definidos. Exemplo, os nomes dos dependentes de uma pessoa não podem ser limitados em três, cinco ou dez cadastros. O correto é que o sistema permita cadastrar quantos forem necessários.
Há basicamente três formas de armazenarmos atributos multivalorados, são elas:
É uma solução simples, mas não muito elegante, visto que os usuários poderão criar formas diferentes para separar cada um dos atributos. Exemplo A
É uma solução interessante, mas que limita as opções de cadastro. Pode ser adequada a algumas situações, mas inadequada a outras. Exemplo B
Criar uma tabela associativa para cadastrar quantos valores forem necessários. Esta é a solução mais flexível, permite criar em uma outra tabela tantos registros quantos forem necessários. Essa tabela conteria também a chave primária da tabela de origem, para que possa ser feita a localização dos atributos. Veremos mais sobre esta solução quando tratarmos de normalização. Essa é a forma mais complexa para se resolver a questão.
Se há apenas um campo para cadastrar telefones das pessoas, esse campo poderia ser preenchido por um usuário do sistema com esse padrão: “9945-3212, 2231-3432, 3322-0943”, por outro usuário assim: “9945-3212 (cel); 2231-3432 (trab), 3322-0943 (resid)”, e por um terceiro usuário assim: “99453212/22313432/33220943”. Observe que a falta de um padrão permite cadastrar as informações de forma muito variada, prejudicando a estética do cadastro.
XSeguindo o mesmo exemplo anterior, poderíamos criar os campos TelefoneComercial, TelefoneResidencial, TelefoneCelular, onde em cada campo somente um número de telefone poderia ser cadastrado. Caso a pessoa tivesse vários números de celular, apenas um deles poderia ser cadastrado.
X