Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida estrutura BD - Denis Courcy


ratamiette

Pergunta

Olá,

Estava dando uma olhada no tópico sobre PF e PJ e vi a resposta do Denis Courcy.
http://www.scriptbra...-pess-juridica/

Porém estou com uma dúvida:

Criei uma tabela Pessoa e nesta tabela tem o campo tipo_pessoa que representa Cliente ou Fornecedor.

Porém a relação dela com o endereço é diferente para cada tipo de pessoa.

Quando o tipo da pessoa é Cliente, a relação com o endereço é N:M
Quando o tipo da pessoa é Fornecedor, a relação com o endereço é 1:1

Minha dúvida é qual a melhor maneira de criar estas tabelas e fazer a relação..

Estaria correto eu criar uma tabela Pessoa (generalização - pois praticamente todos os campos serão iguais), depois criar uma tabela Cliente e Fornecedor (especialização) com a FK id_pessoa nelas, e relacioná-las com Endereço diretamente?

No primeiro exemplo (pdf) que você postou no tópico, você vinculou a tabela pessoa com o endereço ... se você vinculasse a tabela PF E PJ (especialização) com a endereço? Como ficaria?


Obrigado!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Estaria correto eu criar uma tabela Pessoa (generalização - pois praticamente todos os campos serão iguais), depois criar uma tabela Cliente e Fornecedor (especialização) com a FK id_pessoa nelas, e relacioná-las com Endereço diretamente?

No primeiro exemplo (pdf) que você postou no tópico, você vinculou a tabela pessoa com o endereço ... se você vinculasse a tabela PF E PJ (especialização) com a endereço? Como ficaria?

Resp a pergunta 1: Neste caso você estaria criando um relacionamento N:1 com Endereco (varios fornecedores e/ou clientes poderiam ter um mesmo endereço).

Para isto a FK id_pessoa deveria ficar em Pessoa (generalização) e não nas especializações)

Quando você colocar um atributo em uma tabela especializada pergunte-se antes se este atributo está atendendo somente àquela especialização. Se a resposta for que o atributo atende a todas as especializações, então o atributo pertence a generalização.

Do jeito que está uma ligação 1:1 usando uma tabela intermediária (n:m) não criaria nenhum sacrifício de performance significativo e seu sistema já estaria pronto a receber mais de um endereço por fornecedor caso a regra de negócio mude.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...