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

Erro 1170 E Chaves Estrangeiras


Guest Paulo Bittencourt Meira

Pergunta

Guest Paulo Bittencourt Meira

Bom dia pessoal.

Comecei a usar recentemente o MySQL e estou apanhando um muito dele. Tenho duas dúvidas.

Na consulta

CREATE TABLE `Elaboração` (

`N_Doc` TEXT NOT NULL COMMENT 'Numero do documento',

`Elaborado` TEXT NOT NULL COMMENT 'Elaborador',

INDEX ( `N_Doc` , `Elaborado` ) ,

FULLTEXT (

`N_Doc` ,

`Elaborado`

)

) ENGINE = MYISAM COMMENT = 'Tabela de Elaboração - Chave estrangeira de Tabela Principal'

Eu tenho de retorno a seguinte mensagem: 1170 - BLOB/TEXT column 'N_Doc' used in key specification without a key length

Acontece que tenho várias tabelas em situação semelhante para gerar e não entendi ainda como consertar isso.

O que devo fazer?

A outra dúvida é a seguinte: Existe um número máximo de chaves estrangeiras para serem utilizadas em uma única tabela? Explico. Tenho que gerar uma tabela cuja normatização resultou em 11 tabelas, portanto minha tabela principal terá que se relacionar com, no mínimo, estas 11. É possível tal "Proeza"?

Grato pela atenção e fico no aguardo de seus retornos

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Eu tenho de retorno a seguinte mensagem: 1170 - BLOB/TEXT column 'N_Doc' used in key specification without a key length

Acontece que tenho várias tabelas em situação semelhante para gerar e não entendi ainda como consertar isso.

o tipo de dados TEXT/BLOB são utilizados para armazenar "grande" quantidade de informação (o banco cria com um tamanho x, e a medida que a informação crescendo, o banco aloca mais espaço/blocos para ele) e não são utilizados em índices.

O tipo TEXT são normalmente utilizados em campos descritivos como um texto, observações que são acrescidas ao longo do tempo... O tipo BLOB é comum o uso para armazenamento de dados binários - como imagens. (neste post, tem uns links que podem ser úteis)

Em campos como os que você declarou, é sabido de ante-mão o seu tamanho e nestes casos é comum utilizar VARCHAR(<tamanho>). Por ex. um campo para armazenar CNPJ precisa de 16 caracteres de espaço para armazenar inclusive os carecteres "/" e "-", então a definição seria um VARCHAR(16). Se não fossem armazenados os caracteres citados, seria VARCHAR(14). O nome de uma pesso, empresa e outros, podem ter um valor pré-estabelecido, então você segue o mesmo raciocínio.

Para o correto relacionamento entre as tabelas, os campos relacionados devem ser do mesmo tipo e tamanho, em ambas as tabelas.

A outra dúvida é a seguinte: Existe um número máximo de chaves estrangeiras para serem utilizadas em uma única tabela? Explico. Tenho que gerar uma tabela cuja normatização resultou em 11 tabelas, portanto minha tabela principal terá que se relacionar com, no mínimo, estas 11. É possível tal "Proeza"?
Que eu saiba não há qualquer restrição neste sentido (claro deve haver um limite, mas nada que se atinja facilmente).
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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...