3.3. Diretriz 3

Evite colocar atributos em uma relação da base cujos valores podem ser nulos com frequência. Se os atributos nulos forem inevitáveis, garanta que eles se apliquem apenas em casos excepcionais, e não à maioria das tuplas na relação.

Ao projetar um modelo, podemos agrupar vários atributos em uma mesma entidade, tornando-a extensa. Se muitos dos atributos não se aplicarem a todas as tuplas, acabamos com muitos atributos nulos nessas tuplas. Isso pode desperdiçar espaço no nível de armazenamento físico e também gerar alguns problemas com relações de junção (JOIN). Outro problema a ser considerado é que operações de agregação como contagem (COUNT) ou soma (SUM) podem gerar erros quando aplicados a valores nulos.

Usar o espaço de modo eficaz e evitar junções com valores nulos são os dois critérios prioritários que determinam a inclusão das colunas que pode ter valores nulos em uma relação. O ideal nesse caso ter uma relação separada para essas colunas.

Por exemplo, suponha uma tabela de funcionários em que você criar um campo denominado “Histórico Profissional”. Suponha que apenas vinte por cento dos funcionários da empresa possuam um histórico profissional, isso significaria que 80% das tuplas dessa entidade teriam esse atributo como NULL. O problema é que, a depender de como o SGBD implementa fisicamente a armazenagem desse campo, poderíamos estar desperdiçando 80% do espaço em disco. Qual é a saída? A melhor forma de se implementar essa questão é criar uma tabela auxiliar para contemplar apenas essa informação. Dessa forma, a tabela auxiliar só receberá registros que contenham dados válidos (não haverá registros NULL). Essa entidade associada possuirá uma relação de um para um.

Modelagem inicial.

Modelagem ajustada.
Copyright © 2014 AIEC.