[firebase-br] Uma tabela versus um join

Felipe Aron felipearon em gmail.com
Ter Mar 15 17:37:29 -03 2011


Não existe o jeito "errado" e sim jeitos mais inteligentes, elegantes,
etc...

Se for criar uma relação entre tabela PESSOA e uma PESSOA_FISICA, por
exemplo, a relação seria de 1 para 1 portanto na tabela PessoaFisica a minha
Primary Key também seria minha Foreight Key apontando para tabela Pessoa.

Agora o que faço é:

Utilizo uma tabela - Pessoa, onde nela tenho um campo Flag dizendo que é um
cadastro Físico (F) ou Jurídico (J). Sendo que para os campos CPF/CNPJ e
RG/IE - terei dois campos apenas. Se o flag for Fisico, sei que ali no campo
existe um CPF, se não - for jurídico, irá conter um CNPJ. O mesmo vale para
o RG/IE.

Criaria uma tabela estendida (relação 1 para 1) somente para campos
ESPECIFICOS para cada caso.


Em 15 de março de 2011 17:12, Levy Moreira <levymoreira.ce em gmail.com>escreveu:

> Gente quero saber o seguinte, o que é mais rapido um select assim:
>
> select * from clientes
>
> ou um assim:
>
> select *
> from pessoas p
>       left join pessoas_fisicas f on f.id = p.id
>       left join pessoas_juridicas j on j.id = p.id
>
> levando em consideração que as tabelas seriam mais ou menos assim:
> caso01:
>
> clientes
> -----------
> id
> nome
> cpf
> cnpj
> endereco
> rz_social
> ...
>
> caso02
>
> pessoas
> -------------
> id
> nome
> endereco
> numero_casa
>
> pessoas_fisicas
> -----------------------
> id
> id_pessoa
> cpf
> ..
>
> pessoas_juridicas
> ----------------------------
> id
> id_pessoa
> cnpj
> rz_social
>
>
> Por fim, vale a penda essas 3 tabelas ?
> Meu professor disse que o primeiro select é mais lento
> que o segundo e eu queria esclarecer... ele justificou a existencia
> de varios campos nulos... mas acho que um join demoraria mais.
>
> Obrigado a todos desde já.
>
> --
> Levy Moreira - Programador
> Sistech Informática - Juazeiro do Norte - CE
>
> ...........................................................................
> "Aviso de confidencialidade profissional" - Esta mensagem eletrônica e
> seus anexos são destinados exclusivamente ao(s) destinatário(s) acima e
> podem conter informações confidenciais sujeitas a restrição legal de
> comunicação entre as partes. Caso tenha recebido esta mensagem por engano,
> fica V.S.ª ciente de que a distribuição, divulgação ou disseminação das
> informações aqui contidas ou anexadas é terminantemente proibida,
> sujeitando
> o responsável às penalidades aplicáveis. Assim, solicitamos a gentileza
> de retorná-la de imediato ao remetente, eliminando-a definitivamente de
> seu sistema. Em caso de dúvida, queira por favor entrar em contato."
>
> "Confidentiality notice" - This message and its attachments are
> addressed solely to the persons above and may contain privileged and
> confidential
> communication. If you have received the message in error, the
> distribution or dissemination of the content hereof is prohibited. Please
> return it
> immediately to the sender and please delete the message from your system
> on a permanent basis. Should you have any questions, please contact."
>
> ...........................................................................
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Analista programador
#FollowMe: @felipearon <http://twitter.com/felipearon> (
http://felipearon.com.br/)



Mais detalhes sobre a lista de discussão lista