Após a Normalização da Base de Dados, ainda podemos ter muitas tabelas. Para isso podemos recorrer a outras análises alternativas. Existem várias formas d reduzir o número de tabelas na base de dados.
Depois de várias tentativas, testei uma forma fácil de reduzir o número de tabelas na Base de Dados.
**Problema: **Suponhamos que precisamos armazenar informações dos Clientes e Funcionários, sabendo que têm dados em comum.
Clientes: nome, sexo, nif, estado civil, código, contactos(telefone e email) e endereço(município, bairro, rua, casa).
Funcionário: nome, sexo, nif, estado civil, código, contactos(telefone e email) e endereço(município, bairro, rua, casa).
Para este problema, temos 3 soluções:
Solução 1: Criamos as entidades com os atributos compostos e multivalorados, para cada Item.
No modelo lógico normalizamos a base de dados. Criamos uma tabela para cada os atributos (telefone e email) e dividimos o atributo endereço em atributos atómicos que ficarão nas tabelas Cliente e Funcionário.
Vantagens
- Separação dos atributos mutivalorados (ex: telefone e email);
- Demposição dos atributos compostos (ex: endereço);
- Análise mais fácil de ser feita e modelada.
Desvantagens
- Se o endereço crescer o número de atributos da tabela cresce, tronando mais difícil a manipulação;
- Uma tabela com muitos campos, resulta numa classe com muitos atributos, logo teremos um objecto muito grande (*e difícil de manipular).
Solução 2: Criamos as Entidades para cada Contexto.
Nesse caso, teremos endereço e contactos para os clientes e funcionários. Se tivéssemos N tabelas (por ex: Forencedor, Transportador, Despachante…) teríamos, contactos e endereço para cada tabela.
Vantagens
- Cada Item terá a sua relação correspondente;
- Organização da Base de dados;
- Separação de cada contexto (contactos para clientes e contactos para os funcionários).
Desvantagens
- Necessidade de criar uma nova tabela com os mesmos atributos, para cada caso;
- Se o número de tabelas cresce, então o número de classes também cresce;
- O número de classes contribui para o aumento de nº de arquivos que implica o aumento de número de kilobytes da aplicação.
Solução 3: Criamos uma tabela Pessoa, que terá será relacionado com contacto e endereço.
As tabelas Cliente e Funcionario só precisam estar relacionados com a tabela Pessoa.
Vantagens
- Facilita a escalabilidade da base de dados, porque essa solução está aberta ao crescimento;
- Redução do número de tabelas;
- Redução do número de classes;
- Redução do número de arquivos.
Desvantagens
- Para obter todos os dados do cliente, serão feitas junções
Nota: Neste caso, parece que apenas reduzimos 1 tabela. Mas na verdade simplificamos a normalização. Se tivéssemos mais n tabelas com os mesmos dados. Com o aumento de tabelas mesmos atributos, apenas teríamos relacionar com a tabela Pessoa.
Qual seria a solução mais eficaz?
Top comments (0)