Caro Gerhard,

Esclareceu e muito as minhas dúvidas.

Muito obrigado

Um forte abraço
Alinei


--- Em delphi-br@yahoogrupos.com.br, "Gerhard Roger Nack" <[EMAIL PROTECTED]> 
escreveu
>
> Bem vamos lá, a situação 2 eu, particularmente faria assim:
> 
> Situação 2:
> 
> TAB_PESSOA
> CODPESSOA
> NOME
> CPFCNPJ
> DATACAD
> CODENDERECO
> CODTELEFONE
> IDEMAIL
> EMAIL
> SEXO ( M - F )
> DATANASC
> 
> TAB_ENDERECO
> CODENDERECO
> TIPOLOGADOURO
> ENDERECO
> NUMERO
> COMPLEMENTO
> CIDADE
> UF
> CEP
> 
> TAB_TELEFONE
> CODTELEFONE
> IDTELEFONE
> TELEFONE
> TPTELEFONE ( TRABALHO - RESIDENCIAL - FAX - CELULAR )
> 
> Ou seja, eu não criaria uma tabela para email pois é uma informação 
que dificilmente irá se repetir e geraria um overhead muito na hora 
dos join's, como também não criaria a tabela SEXO_DATANASC pelo mesmo 
motivo.
> 
> Você colocou o CODPESSOA em todas as tabelas, o correto seria cada 
tabela ter o seu código próprio (ENDERECO, TELEFONE, etc) e a PESSOA 
ter o CODENDERECO, CODTELEFONE, etc., pois do contrario você nunca 
poderia utilizar um mesmo TELEFONE para mais de uma pessoa. Isso 
inviabilizaria a criação dessas tabelas de referência, pois no fundo 
você sempre teria um relacionamento de 1-1 e nunca de 1-N que é 
justamente o que justifica a normalização.
> 
> Seria melhor normalizaria a tabela ENDERECO para algo assim:
> 
> TAB_ENDERECO
> CODENDERECO
> TIPOLOGADOURO
> ENDERECO
> NUMERO
> COMPLEMENTO
> CODCIDADE
> CEP
> 
> TAB_CIDADE
> CODCIDADE
> CIDADE
> UF
> 
> Mas particularmente eu ainda utilizaria o campo CEP juntamente com 
a tabelas do correio ou da GSE Soft, normalizando a tabela ENDERECO 
para algo assim:
> 
> TAB_ENDERECO
> CODENDERECO
> CEP
> NUMERO
> COMPLEMENTO
> 
> Ou seja, deixaria apenas o CEP e restante dos dados como Endereco, 
Tipo Logradouro, Cidade, UF e Bairro buscaria na base dos correios e 
só teria os dados específicos daquele endereço como NUMERO e 
COMPLEMENTO.
> 
> Resumindo, deve-se normalizar as tabelas sim, porém o bom censo 
deve prevalecer pois nem sempre pode-se levar a normalização até o 
último nível possível pois degradaria muito a performance do sistema.
> 
> OBS: Para fins de clareza no email deixei o prefixo "TAB_" que você 
utilizou, mas jamais, jamais utilizaria isso no mundo real, pois como 
se trata de uma tabela e sabendo-se que todas elas encontram-se no 
banco de dados não se justifica utilizar esse prefixo que seria igual 
a todas elas.
> 
> Espero ter esclarecido um pouco, e qualquer dúvida estamos ai.
> 
>  
> 
> Bem mas vamos ao assunto que venho estudando.
> 
> Estou desenvolvendo um projeto que tem por objetivo ser multi-
banco, 
> estou utilizando o Oracle XE e o Firebird 2.0 para testes com 
tabelas 
> que têm em média 100.000 registros 
> 
> Pesquisando o assunto, tenho observado que depende muito das regras 
> de negócio que cada um adota em seus projetos de modelagem.
> 
> Minha dúvida é o que seria melhor, deixar os campos que têm ligação 
> de dependência funcional na mesma tabela ou dividi-los em tabelas 
> filhas ex:
> 
> Situação 1: 
> 
> Tab_Pessoa
> CODIGO
> NOMERAZAO
> CPFCNPJ
> IDENTESTADUAL
> SEXO
> DATANASC
> ENDERECO
> NUMERO
> COMPLEMENTO
> BAIRRO
> CIDADE
> CEP
> TELEFONE
> CELULAR
> EMAIL
> DATACAD
> 
> Situação 2:
> 
> TAB_PESSOA
> CODPESSOA
> NOME
> CPFCNPJ
> DATACAD
> 
> TAB_ENDERECO
> CODPESSOA
> TIPOLOGADOURO
> ENDERECO
> NUMERO
> COMPLEMENTO
> CIDADE
> UF
> CEP
> 
> TAB_TELEFONE
> CODPESSOA
> IDTELEFONE
> TELEFONE
> TPTELEFONE ( TRABALHO - RESIDENCIAL - FAX - CELULAR )
> 
> TAB_EMAIL
> CODPESSOA
> IDEMAIL
> EMAIL
> 
> TAB_SEXO_DATANASC
> CODPESSOA
> SEXO ( M - F )
> DATANASC
> 
> Qual das situações é a mais correta ? Qual a melhor prática ? Na 
> Situação 1 podiamos "desegregar" os campos "telefone" e "e-mail", e 
> manter os demais campos na tabela pessoa, dessa forma qual dos 
> modelos seria o mais correto.
> 
> O que vocês recomendam ?
> 
> Um forte abraço a todos
> 
> alineri
> 
> - Em delphi-br@yahoogrupos.com.br <mailto:delphi-br%
40yahoogrupos.com.br> , "Gerhard Roger Nack" <ginho@> 
> escreveu
> >
> > Então comecemos a normalizar os textos.
> > 
> > 
> > 
> > Não é "campu" é "campo".
> > 
> > 
> > 
> > Frase começar com maiúsculo e também existem palavras acentuadas 
na 
> língua portuguesa.
> > 
> > 
> > 
> > 
> > 
> > De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%
40yahoogrupos.com.br>  [mailto:delphi-
> [EMAIL PROTECTED] <mailto:br%40yahoogrupos.com.br> ] Em nome de 
alineri
> > Enviada em: sexta-feira, 14 de dezembro de 2007 16:31
> > Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%
40yahoogrupos.com.br> 
> > Assunto: [delphi-br] dependencia funcional normalizacao e numero 
de 
> campos
> > 
> > 
> > 
> > ola pessoal, sei que nao tem a ver com a ferramenta Delphi, e 
sobre 
> > modelagem mas acredito ser a duvida de muitos tambem que pararam 
> para 
> > observar essa questao.
> > 
> > tenho uma duvida que carrego ja a um tempo. 
> > 
> > um exemplo, tenho os dados de um formulario para ser modelado, ao 
> > todo sao uns 80 campus e no formulario os campos sao subdivididos 
> em 
> > categoria, ex: atendimento, execucao, entrega, quantidades etc... 
> > 
> > a maioria desses campus seguem o conceito de dependencia 
funcional 
> so 
> > que dessa forma minha tabela fica com um numero de campus muito 
> > grande, entao eu geralmente normalizo a tabela criando tabelas 
> filhas 
> > contendo esses outros campus, seguindo a "ideia" de subdivisao 
> feita 
> > no formulario, isso esta correto ? e uma boa pratica ? 
> > 
> > minha duvida vem pq aplicando a 2FN ou a 3FN acabo tendo umas 4 a 
5 
> > tabelas filhas, e na hora de fazer uma juncao eu acabo tendo uma 
> > lentidao que acredito ser disso pois se trata de muitos 
registros. 
> > 
> > Gostaria da opniao dos colegas a respeito disso, se e uma boa 
> pratica 
> > ou nao ou oq e mais recomendado. 
> > 
> > um abarco a todos 
> > alineri 
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a