Boa tarde!
Sou programador Java mas não tenho muito experiência com relação a banco de dados, normalização…esse tipo de coisa. Estou construindo um sistema de contas a pagar e receber para um amigo meu, um sistema simples, onde os relatórios serão dedicados…e fazendo estou exercitando e estudando algumas ferramentas WEB…
mas o propósito do post é se vcs poderiam analisar o MER q eu montei com as tabelas, para ter certeza q não tem algum furo, ou se vcs tem alguma sugestão para melhorar…
Para montar o MER segui essa linha de raciocinio
Cliente esta em uma unica Região, Região pode ter 1 ou mais Clientes;
Cliente possui 1 ou mais Entradas, uma Entrada pertence a somente um Cliente;
Cliente possui 1 ou mais Histórico de Contatos, Hist. Contatos pertence a um unico Cliente;
Fornecedor possui 1 ou mais Saida, uma Saida pertence a somente um Fornecedor;
o campo TIPO nas entidades Entradas e Saidas, seriam valores de uma classe ENUM (mantem a classe ou cria um entidade para persistência desses tipos?)
Cara, dei uma olhada por cima, mas me parece que há redundâncias no teu modelo.
Na entidade Entrada e Histórico vc armazena o id do cliente e o id da região. Se a região for a mesma que a do cliente, está caracterizada a redundância pois essa informação já está contida na entidade Cliente (idRegiao da entidade Cliente).
No mais não notei nada anormal…
Valew bronx, tb tinha reparado nisso tb mas como usei um ferramenta visual (MySQL Workbench) para modelar, no momento q criei as relações a ferramenta colocou as chaves da Cliente para a Entrada…irei retira-las!
Em relação ao Tipo ser um Enum, não vejo grandes problemas… isso na verdade quem deve responder é você, pois se esse campo for fixo, ou então irrisoriamente (e quando digo isso é que as chances de mudar são de 0,0001% em + ou - 2 anos, hehehe) não terá problema manter um ENUM. Todavia, se esse campo for variável (mesmo que isso não vá acontecer logo)… aí, pode criar uma entidade pra ele, pra evitares maiores dores de cabeça mais tarde… Quanto ao tipo cria uma constraint (não sei se dá no MySQL) pra aceitar só os valores fixos do teu Enum. Sem mais…