Diagrama de Banco de dados

Ola Pessoal…

ve se podem me ajudar…

to montando um diagrama do banco de dados…
de inicio quero criar as entidades Clientes, Fornecedores, Colaboradores e Transportadoras

Queria saber qual seria a melhor maneira, de fazer esses relacionamentos…para que fique bem estruturado.

O banco deve ser da seguinte forma:
Cada Pessoa pode ser Jurídica OU Física
Cada Pessoa pode ser um Cliente OU Fornecedor OU Colaborador OU Transportadora
Cada Pessoa pode ter 0:N endereços.
Cada Pessoa pode ter 0:N telefones.

Fiz um modelo… que esta em anexo…
porem, conforme eu fiz, uma pessoa pode ser cliente, fornecedor, colaborador… ao mesmo tempo.

Teria alguma maneira mais adequada de representar isso?
queria que uma pessoa só possa ser ou cliente ou fornecedor ou colaborador ou transportadora

se poderem me ajudar, agradeço…

cara, o guj tem recurso próprio para anexar imagens, do jeito que você fez só vai aparecer para quem tem facebook

prontinho. usei o Imageshack

quem puder me ajudar, agradeço…
valew

Olha, infelizmente não há como forçar que um registro de tabela participe em um relacionamento e não participe em outros. Se você realmente precisa dessa validação no banco de dados, você precisará fazer uma stored procedure. De qualquer maneira, não vejo motivo para impor essa trava. É perfeitamente possível que uma empresa se relacione com uma PF/PJ como cliente e fornecedor ao mesmo tempo.

ola amigo… valew pela resposta…

mas no caso, quanto ao diagrama em si… voce acha que esta legal? de que forma eu poderia melhorar?

valew

Bom dia,
estava olhando seu banco, não entendo muita coisa, mais uma pergunta, uma pessoa física, ela pode ser uma transportadora? um fornecedor? acho que se você tratar esse caso, resolva seu problema, acredito eu.
Lembrando que não conheço muita coisa, mais fiz um projeto com especialização quando uma pessoa se torna jurídica ou física, eu coloquei as tabelas sem chave primária recebendo somente a chave estrangeira da tabela pessoa, para poder referenciar em outras tabelas, como fornecedor, cliente, essas coisas. Mais uma dica.
Obrigado.

ola amigo…
você tem até razão quanto a transportadora… que não pode ser pessoa física… (Acredito eu hehehe)
porem, um fornecedor pode sim ser pessoa física… autônomo…

Eu deu uma melhorada… unificando as tabelas pessoa fisica e pessoa juridica…
da uma olhada

quanto aos nomes extensos das tabelas, eu fiz para que as tabelas fiquem mais organizadas (em orgem)…

Amigo, qual o sistema que você utiliza para diagrama de banco de dados?

MySQL Workbench 5.2 CE

Cara,
Tem uma forma melhor, você pode criar uma tabela pessoa_relacionamento {cliente|colaborador|transportadora|fornecedor}, ligada à pessoa e criar uma terceira com relacionamente M:N, e como PK defina as duas FK, dessa forma uma mesma pessoa pode ser mais de um tipo. Se for possível usar TRIGGER, se não houver nenhuma restrição ao uso, que não é o meu caso, você pode através delas, restringir o que colocar na tabela (Lembrando que PROCEDURE é mais eficaz que as TRIGGERS principalmente no quesito velocidade). Participei de um Projeto de NFE e foi assim que eu implementei, não havia restrição às triggers e ficou muito bom.