Como vocês fazem este tipo de relacionamento?
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
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
Curtidas 0
Respostas
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...
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
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)
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
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
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
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
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
20/03/2007
Sim. Na tabela CategoriasDoContato teria dois registros para o cliente.
GOSTEI 0
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
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
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