O USO DO ÃNDICE É OBRIGATÓRIO?
Bom dia,colegas!
Como a dúvida é simples,pesquisei antes na internet.
Mas,de tão simples,não encontrei resposta.Curioso
que existem centenas de tópicos e apostilas sobre o
tema.Mas,sem o que preciso saber.
O caso:
Ao tentar modelar,uma base de dados usando uma ferramenta case (DBDesigner Fork),
percebi que ao criar uma chave primária para uma tabela,um Ãndice é criado de modo
automático.Até aqui tudo normal.Mas,ao tentar deletar o Ãndice,a chave primária do campo
é removida pela ferramenta case.Ou seja,só permite a chave primária com Ãndice.
Quando ,ao modelar um BD (Normalizar),eu tenho uma
simples tabela e defino a chave primária, eu sei que é
criado de modo automático um Ãndice para este campo.
A pergunta é:
1.) Quando uma uma tabela,tem chave primária é [Ô]obrigatório[Ô]
o uso de um Ãndice,para este campo ?
2.) Caso seja uma tabela com chave primária composta,terei
de ter dois Ãndices,uma para cada chave?
Obs: Eu pergunto isto,pois até onde sei,a função do Ãndice é acelerar a velocidade de
acesso aos registros da tabela. Não entendo o motivo de ser obrigatório.
Como a dúvida é simples,pesquisei antes na internet.
Mas,de tão simples,não encontrei resposta.Curioso
que existem centenas de tópicos e apostilas sobre o
tema.Mas,sem o que preciso saber.
O caso:
Ao tentar modelar,uma base de dados usando uma ferramenta case (DBDesigner Fork),
percebi que ao criar uma chave primária para uma tabela,um Ãndice é criado de modo
automático.Até aqui tudo normal.Mas,ao tentar deletar o Ãndice,a chave primária do campo
é removida pela ferramenta case.Ou seja,só permite a chave primária com Ãndice.
Quando ,ao modelar um BD (Normalizar),eu tenho uma
simples tabela e defino a chave primária, eu sei que é
criado de modo automático um Ãndice para este campo.
A pergunta é:
1.) Quando uma uma tabela,tem chave primária é [Ô]obrigatório[Ô]
o uso de um Ãndice,para este campo ?
2.) Caso seja uma tabela com chave primária composta,terei
de ter dois Ãndices,uma para cada chave?
Obs: Eu pergunto isto,pois até onde sei,a função do Ãndice é acelerar a velocidade de
acesso aos registros da tabela. Não entendo o motivo de ser obrigatório.
Colega,
Sim, toda chave primária é um Ãndice, mas nem todo Ãndice precisa ser chave primária. Exemplo: cadastro de clientes: chave primária no campo cnpj/cpf fará com que se tenha o Ãndice automático para cnpj/cpf, também se pode adicionar o Ãndice para nome/razão social para ficar mais rápido a pesquisa e ordenação em relatórios (mas nome/razão social não seria chave primária).
Não. Haverá a chave primária composta e o Ãndice automático também será composto (um Ãndice para dois ou mais campos).
Tudo de bom.
Citação:
1.) Quando uma uma tabela,tem chave primária é [Ô]obrigatório[Ô]
o uso de um Ãndice,para este campo ?
Sim, toda chave primária é um Ãndice, mas nem todo Ãndice precisa ser chave primária. Exemplo: cadastro de clientes: chave primária no campo cnpj/cpf fará com que se tenha o Ãndice automático para cnpj/cpf, também se pode adicionar o Ãndice para nome/razão social para ficar mais rápido a pesquisa e ordenação em relatórios (mas nome/razão social não seria chave primária).
Citação:2.) Caso seja uma tabela com chave primária composta,terei
de ter dois Ãndices,uma para cada chave?
Não. Haverá a chave primária composta e o Ãndice automático também será composto (um Ãndice para dois ou mais campos).
Tudo de bom.
ZEUZEBIO3
Toda chave primária é um Ãndice ? acho que não viu.
Nos meus bancos os Ãndices não são criados [Ô]automático[Ô].
Toda chave primária é um Ãndice ? acho que não viu.
Nos meus bancos os Ãndices não são criados [Ô]automático[Ô].
Bom dia, Cleverton...
Reafirmo que toda chave primária é um Ãndice.
Por óbvio, vai depender do SGBD empregado. Por exemplo, assim é (Ãndices automáticos) no PostGreSQL, mas não são no InterSystems Caché.. No banco que o colega Marcos está usando, por certo que sim (Ãndices automáticos).
Parto do princÃpio que ele utiliza SGBD de funcionamento em tais moldes, com Ãndices automáticos que segundo ele foram gerados, e as respostas acompanham o cenário. Caso o cenário fosse distinto, as respostas seriam outras.
E, mesmo quando não há criação de Ãndices automáticos, como no caso do InterSystems Caché, apenas os Ãndices [Ô]visÃveis[Ô] não são exibidos, visto que a busca por chaves é acelerada e, portanto, indexada.
(imagine como seria a verificação de duplicidade tão prejudicada se as chaves não fossem automaticamente indexadas).
Tudo de bom.
Reafirmo que toda chave primária é um Ãndice.
Por óbvio, vai depender do SGBD empregado. Por exemplo, assim é (Ãndices automáticos) no PostGreSQL, mas não são no InterSystems Caché.. No banco que o colega Marcos está usando, por certo que sim (Ãndices automáticos).
Parto do princÃpio que ele utiliza SGBD de funcionamento em tais moldes, com Ãndices automáticos que segundo ele foram gerados, e as respostas acompanham o cenário. Caso o cenário fosse distinto, as respostas seriam outras.
E, mesmo quando não há criação de Ãndices automáticos, como no caso do InterSystems Caché, apenas os Ãndices [Ô]visÃveis[Ô] não são exibidos, visto que a busca por chaves é acelerada e, portanto, indexada.
(imagine como seria a verificação de duplicidade tão prejudicada se as chaves não fossem automaticamente indexadas).
Tudo de bom.
Independente,do fato da chave primária ser um Ãndice,
agradeço,pois minha dúvida foi esclarecida.
agradeço,pois minha dúvida foi esclarecida.
Tópico encerrado , respostas não são mais permitidas