CADASTRO DE CLIENTES - PF E PJ
Bom dia!
Estou desenvolvendo um sistema onde os clientes são PF e PJ. Normalmente eu crio uma tabela para os dois, idendificando se ele é PF ou PJ.
Mas neste sistema de seguros, os campos PF (rg, cnh, estado civil, e muitos outros ) são bem diferentes dos PJ.
Pegunto: Crio uma tablea com todos os campos de PF e PJ, e preencho só com o que for respectivo de cada um, deixando os demais campos em branco, ou crio uma tabela para PF e outroa para PJ?
Abs.
Estou desenvolvendo um sistema onde os clientes são PF e PJ. Normalmente eu crio uma tabela para os dois, idendificando se ele é PF ou PJ.
Mas neste sistema de seguros, os campos PF (rg, cnh, estado civil, e muitos outros ) são bem diferentes dos PJ.
Pegunto: Crio uma tablea com todos os campos de PF e PJ, e preencho só com o que for respectivo de cada um, deixando os demais campos em branco, ou crio uma tabela para PF e outroa para PJ?
Abs.
Amigo, estou passando pelo mesmo problema. No meu caso, ainda tem um agravante: tenho clientes, fornecedores, vendedores, motoristas, etc. Todos de forma geral são pessoas. Depois de muito analisar, pesquisar e por várias tentativas e erro, cheguei na modelagem que creio que foi a ideal no meu caso.
Para todos os dados comuns à s pessoas criei 4 tabelas, e para cada caso especÃfico outra tabela. Por exemplo, vendo no seu caso, CNH pertence exclusivamente a motoristas, portanto, tenho uma tabela para motoristas contendo apenas esses dados.
A minha estrutura ficou assim:
Tabela PESSOAS
codigo int
nome nvarchar(255)
data_cadastro datetime
Tabela PESSOAS FÃSICAS
id_pf int (PK)
id_pessoa int (FK)
cpf nvarchar(11)
rg nvarchar(20)
data_nascimento datetime
apelido nvarchar(30)
Tabela PESSOAS JURÃDICAS
id_pj int (PK)
id_pessoa int (FK)
cnpj nvarchar(14)
inscricao nvarchar(20)
data_abertura datetime
fantasia nvarchar(100)
Tabela PESSOAS RELAÇÃO
id int (PK)
id_pessoa int (FK)
id_tipo int (FK)
status int
ativo bit
Tabela MOTORISTAS
id_motorista int (PK)
id_pessoa int (FK)
cnh nvarchar(12)
etc
Qualquer dúvida, entre em contato.
Para todos os dados comuns à s pessoas criei 4 tabelas, e para cada caso especÃfico outra tabela. Por exemplo, vendo no seu caso, CNH pertence exclusivamente a motoristas, portanto, tenho uma tabela para motoristas contendo apenas esses dados.
A minha estrutura ficou assim:
Tabela PESSOAS
codigo int
nome nvarchar(255)
data_cadastro datetime
Tabela PESSOAS FÃSICAS
id_pf int (PK)
id_pessoa int (FK)
cpf nvarchar(11)
rg nvarchar(20)
data_nascimento datetime
apelido nvarchar(30)
Tabela PESSOAS JURÃDICAS
id_pj int (PK)
id_pessoa int (FK)
cnpj nvarchar(14)
inscricao nvarchar(20)
data_abertura datetime
fantasia nvarchar(100)
Tabela PESSOAS RELAÇÃO
id int (PK)
id_pessoa int (FK)
id_tipo int (FK)
status int
ativo bit
Tabela MOTORISTAS
id_motorista int (PK)
id_pessoa int (FK)
cnh nvarchar(12)
etc
Qualquer dúvida, entre em contato.
Pois é, essa parece ser a melhor opção mesmo.
Obrigado!
Abs.
Obrigado!
Abs.
Eu trabalho com sistemas de seguros para uma grande instituição bancária. E aquà nós definimos o cliente na base de dados se ele é PF ou PJ pelo [Ô]tamanho[Ô] de caracteres que possui o campo CPFCNPJ
Ou seja, na hora do cadastro, em tela, o usuário escolhe se é CPF ou CNPJ, e em tela fazemos o tratamento dos dados se é válido ou não.
Na hora de gravar, não gravamos se é CPF ou CNPJ, apenas gravamos os números e todo o processamento do sistema (inclusive os em batch) fazem a contagem deste campo e o identifica que tipo de cliente é.
Essa nossa tabela os nomes dos campos são genéricos, facilitando assim a identicação universal no sistema.
Não temos campo como NOME_CLI/RAZAO_SOCIAL, o campo se chama NOME. Enfim, esse cara pra gente (independente quem seja), é um Segurado e assim que o tratamos......
Segurado, Apólice, Estipulante, Sub-Estipulante....... Nomes voltados ao seguro.
Ou seja, na hora do cadastro, em tela, o usuário escolhe se é CPF ou CNPJ, e em tela fazemos o tratamento dos dados se é válido ou não.
Na hora de gravar, não gravamos se é CPF ou CNPJ, apenas gravamos os números e todo o processamento do sistema (inclusive os em batch) fazem a contagem deste campo e o identifica que tipo de cliente é.
Essa nossa tabela os nomes dos campos são genéricos, facilitando assim a identicação universal no sistema.
Não temos campo como NOME_CLI/RAZAO_SOCIAL, o campo se chama NOME. Enfim, esse cara pra gente (independente quem seja), é um Segurado e assim que o tratamos......
Segurado, Apólice, Estipulante, Sub-Estipulante....... Nomes voltados ao seguro.
Mas e os campos somente de PF, como [Ô]sexo[Ô] e [Ô]estado civil[Ô]?
Resolvi criar uma tabela clientes com os campos comuns:
=== tbl_clientes
- nome
- tipo_cliente // se é PJ ou PF
- tipo_numero // numero do CPF ou CNPJ
- telefone
- email
Criei também uma tabela complemento, caso o cliente cadastrado seja PF, com os campos relacionados somente a PF:
=== tbl_complemento
- sexo
- dt_nascimento
- estado_civil
- cnh
- rg
=== tbl_clientes
- nome
- tipo_cliente // se é PJ ou PF
- tipo_numero // numero do CPF ou CNPJ
- telefone
Criei também uma tabela complemento, caso o cliente cadastrado seja PF, com os campos relacionados somente a PF:
=== tbl_complemento
- sexo
- dt_nascimento
- estado_civil
- cnh
- rg
Tópico encerrado , respostas não são mais permitidas