Dúvida sobre estrutura de banco de dados

Boa tarde pessoa,
Sou novo aqui GUJ, mas queria efetuar uma pergunta sobre se minha modelagem estária correta ou tem uma forma melhor de fazer, estou utilizando MySQL como base de dados.


Coloquei a foto aqui ainda está incompleto pois estou montando mas fico na duvida está certo ser assim ? tem uma maneira melhor de se fazer ?

Obrigado a todos.

Você está no caminho certo.

Atente-se para:

Na sua tabela PessoaFisica você adicionou vários atributos que serão utilizados também na tabela PessoaJuridica, certo?

Ambas, herdam de cliente. Estes campos, você utiliza na tabela Cliente.

Nas tabelas PessoaFisica e PessoaJuridica deixe apenas os campos exclusivos daquela tabela.

Padronize os nomes. Ou tudo maísculo ou mínusculo (Vide tabela cliente e PessoaFIsica).

Padroniza as nomenclaturas e reserve-as. Por exemplo na sua tabela Contatos, que fornece uma lista de contatos, você possui um campo ‘nome’ o qual faz distinção ao nome do contato e na sua tabela TipoContatos você também utilizada o campo ‘nome’. Use por exemplo descricao ao invés de nome nesta tabela TipoContatos.

Talvez alguém do fórum perceba algumas coisas a mais pra te ajudar.

Lembre-se de manter padrões.

1 curtida

Olá boa tarde @edumatias ,
Entendi só uma coisa que eu sempre fico em duvida se não estaria errado é:

Por exemplo na tabela “cliente” se eu colocar nome e sobrenome isso se aplica a pessoa fisica correto ? mas e quando for juridica devo supor que o campo nome é a razão social e o sobrenome é o nome fantasia ? a data de nascimento seria a data de fundação da empresa ?

Isso que é o que nunca sei a resposta.

Obrigado por ajudar.

Dúvidas normais.

Como disse alguém poderá te ajudar melhor do que eu.

Utilizar sobrenome como outra funcionalidade por mais que lembre um pouco me parece ruim. Pense que o banco poderá crescer e alguém irá trabalhar com ele. Imagine o grau de confusão que isso pode gerar.

Talvez eu tenha me equívocado sobre compartilhar o campo nome. Muitas vezes economizar atributos não é produtivo. (Classe Pessoa PessoaFisica , PessoaJuridica Cliente e Vendas)

Veja neste exemplo, que apesar de ser em Java usa uma estrutura parecida.

Repare que CompanyAccount e PersonAccount extendem Account, mas cada uma utiliza seu atributo exclusivo RG e CNPJ.

Portanto estou me retratando neste caso.

Continue com os atributos próprios das tabelas como está fazendo.