Como vocês fazem este tipo de relacionamento?

Modelagem

20/03/2007

Pessoal,

Estou desenvolvendo uma aplicação de Automação Comercial Client/Server e gostaria de saber o que vocês acham sobre estes relacionamentos que estou pretendendo fazer.

Vamos lá:

Vou ter tabelas em minha aplicação como CLIENTES, FUNCIONÁRIOS, REPRESENTANTES, USUÁRIOS, etc.

Como todas as tabelas acima possuem vários campos em comum (Nome, endereço, telefone, etc), estou pensando em criar uma tabela genérica chamada PESSOA com os campos comuns entre estas tabelas acima e com isso relacionar esta tabela (PESSOA) com as respectivas tabelas: CLIENTES, FUNCIONÁRIOS, REPRESENTANTES, USUÁRIOS, etc.

Ficaria mais ou menos assim:
PESSOA
PES_ID PK
... demais campos comuns dentre as tabelas citadas.

CLIENTE
CLI_ID PK
PES_ID FK
... demais campos específicos desta tabela.

FUNCIONÁRIOS
FUN_ID PK
PES_ID FK
... demais campos específicos desta tabela.

REPRESENTANTES
REP_ID PK
PES_ID FK
... demais campos específicos desta tabela.

USUÁRIOS
USU_ID PK
PES_ID FK
... demais campos específicos desta tabela.

O que vocês acham deste tipo de relacionamento?

Como vocês fazem em suas aplicações?

Desde já agradeço-lhes e aguardo retorno.

Cristiano Mário


Cristianojedi

Cristianojedi

Curtidas 0

Respostas

Diegus

Diegus

20/03/2007

Sem problemas....

Trabalhei com um sistema de contabilidade que, inclusive, essa tabela de ´PESSOAS_GERAL´ era utilizada por outros módulos ....

O chato é ter q todas as vezes q for fazer consulta q tenha o codigo da pessoa pra mostrar um dado dele tem q fazer o JOIN..

Mas num tem problema não... fica mais organizado sim...


GOSTEI 0
Rjun

Rjun

20/03/2007

Eu trabalho da seguinte forma:

Tenho uma tabela chamada CONTATOS. Nela ficam os clientes, fornecedores, funcionários, etc. E tenho as tabelas CATEGORIACONTATO onde ficam a descrição das categorias de contato. E tenho outra tabela que faz o relacionamento entre o contato e a categoria.

CONTATO
----------------------
IdContato (PK)
Nome
etc...

CATEGORIACONTATO
-------------------------
IdCategoriaContato (PK)
Descricao

CATEGORIASDOCONTATO
------------------------------
IdContato (PK)
IdCategoriaContato (PK)


GOSTEI 0
Cristianojedi

Cristianojedi

20/03/2007

[b:b0cd1b34ef]Diegus[/b:b0cd1b34ef]

Obrigado pela sua opinião.

[b:b0cd1b34ef]Miyazaki[/b:b0cd1b34ef]

Interessante sua forma de relacionamento. É mais uma opção que eu tenho agora. Obrigado!!!

E no caso dos endereços, vocês gravam em uma mesma tabela junto com a PESSOA ou CONTATOS (como o Miyazaki citou), ou vocês colocam em uma tabela separada tipo ENDERECO para evitar duplicação de informação nas tabelas PESSOA ou CONTATOS?

Desde já, obrigado...

Cristiano Mário


GOSTEI 0
Cristianojedi

Cristianojedi

20/03/2007

[b:b93a029127]Miyazaki [/b:b93a029127]

Estou pensando em implementar da forma que você fez.

Só uma dúvida: Se um mesmo contato for FUNCIONARIO e CLIENTE, você adiciona duas categorias para este contato?

Obrigado,

Cristiano Mário


GOSTEI 0
Rjun

Rjun

20/03/2007

Sim. Na tabela CategoriasDoContato teria dois registros para o cliente.


GOSTEI 0
Cristianojedi

Cristianojedi

20/03/2007

Miyazaki

Só mais umna coisa.

Os ID´s da tabela CATEGORIASCONTATO juntamente com as descrições são default no banco, né?

Exemplo:

ID DESCRICAO

1 FUNCIONARIO
2 CLIENTE
3 FORNECEDOR

Pois se você deixar para o cliente cadastras estas informações, quando você for filtrar, por exemplo, os funcionários como você vai saber qual é o ID do funcionário?

Obrigado,

Cristiano Mário


GOSTEI 0
Rjun

Rjun

20/03/2007

Se você precisar ter um controle sobre determinadas categorias, você deve deixá-las fixas sim. Você pode deixar as mais comuns como pré-cadastradas. Nessas, o usuário não pode excluir nem alterar.


GOSTEI 0
POSTAR