none
Preciso de um help em tabelas RRS feed

  • Pergunta

  • Tenho um problema no relacionamento de uma tabela e gostaria de uma ajuda para resolver o problema abaixo.

    Qual a melhor solução para a tabela abaixo, para fazer com que o CNPJ seja chave primária?

     

    <tfoot></tfoot>
    empresa
    id_empresa                                              cnpj                            razao_social                                            nome_fantasia
    1                        40278681000179                          TRANSOCEAN
                                                  DRILLER
    2                        40278681000179                           TRANSOCEAN
                                                TRANSOCEAN BRASIL LTDA -
    3                        40278681000179                           TRANSOCEAN
                                                 FRONTIER
    4                        40278681000179                          TRANSOCEAN
                                                PEREGRINE I
           
           
           
           
           
           
           
           
           
           
           
           
     

    • Editado Adersonleite quarta-feira, 21 de setembro de 2011 01:20
    quarta-feira, 21 de setembro de 2011 01:16

Respostas

  • Aderson,

    Para tornar o CNPJ sua PK, ele tem q ser único. Pela sua estrutura vc tem várias empresas com o mesmo CNPJ, não está fazendo muito sentido isso na prática.

    Se cada "empresa" tem o mesmo CNPJ, não seria o caso de tê-las como filiais? Parece que há um problema em sua regra de negócio.


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com
    • Sugerido como Resposta Eder Costa terça-feira, 27 de setembro de 2011 15:18
    • Marcado como Resposta Eder Costa sexta-feira, 7 de outubro de 2011 14:18
    quarta-feira, 21 de setembro de 2011 12:55
  • Anderson,

     

    Concordo com o Marco, creio que esteja ocorrendo algum problema em sua regra de negocio, com certeza tornar apenas o CNPJ PK sera impossivel, a não ser que como ja dito, voce crie uma estrutra de filial, na forma atual, uma possibilidade seria CNPJ + NOME_FANTASIA, porem, não vejo aonde isso faria tanto sentido, eu gosto e defendo um id unico de cada tabela sequencial nao nulo como chave primaria, saiba que em toda chave primaria possui um indice cluster, que ja possuem 100% dos seus dados, então vamos supor que sua tabela tenha 10GB, caso 1GB seja apenas os dados da chave primaria, seu indice tera +- 1GB, isso com o ID, teoricamente chaves compostas, ainda mais com String, irao aumentar muito seu indice, o que fara voce ter uma perda, descenecessaria de espaço.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    • Sugerido como Resposta Eder Costa terça-feira, 27 de setembro de 2011 15:19
    • Marcado como Resposta Eder Costa sexta-feira, 7 de outubro de 2011 14:18
    quarta-feira, 21 de setembro de 2011 17:57
    Moderador

Todas as Respostas

  • Caro,

    O CNPJ é diferente para cada empresa então, deve ser sua chave primária. O ID_empresa deve único para cada CNPJ, e então ter um campo chamado ID_Nome_fantasia, para as empresas que tenham mais de um nome fantasia.

     

     

    Abraço,

    David.

    quarta-feira, 21 de setembro de 2011 02:06
  • Aderson,

    Para tornar o CNPJ sua PK, ele tem q ser único. Pela sua estrutura vc tem várias empresas com o mesmo CNPJ, não está fazendo muito sentido isso na prática.

    Se cada "empresa" tem o mesmo CNPJ, não seria o caso de tê-las como filiais? Parece que há um problema em sua regra de negócio.


    Marco Antônio Pinheiro / MCTS - MCC http://marcoantoniopinheiro.blogspot.com
    • Sugerido como Resposta Eder Costa terça-feira, 27 de setembro de 2011 15:18
    • Marcado como Resposta Eder Costa sexta-feira, 7 de outubro de 2011 14:18
    quarta-feira, 21 de setembro de 2011 12:55
  • Anderson,

     

    Concordo com o Marco, creio que esteja ocorrendo algum problema em sua regra de negocio, com certeza tornar apenas o CNPJ PK sera impossivel, a não ser que como ja dito, voce crie uma estrutra de filial, na forma atual, uma possibilidade seria CNPJ + NOME_FANTASIA, porem, não vejo aonde isso faria tanto sentido, eu gosto e defendo um id unico de cada tabela sequencial nao nulo como chave primaria, saiba que em toda chave primaria possui um indice cluster, que ja possuem 100% dos seus dados, então vamos supor que sua tabela tenha 10GB, caso 1GB seja apenas os dados da chave primaria, seu indice tera +- 1GB, isso com o ID, teoricamente chaves compostas, ainda mais com String, irao aumentar muito seu indice, o que fara voce ter uma perda, descenecessaria de espaço.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    • Sugerido como Resposta Eder Costa terça-feira, 27 de setembro de 2011 15:19
    • Marcado como Resposta Eder Costa sexta-feira, 7 de outubro de 2011 14:18
    quarta-feira, 21 de setembro de 2011 17:57
    Moderador