O USO DO ÍNDICE É OBRIGATÓRIO?

MARCOS 21/01/2016 11:58:57
#456338
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.
SINCLAIR 21/01/2016 14:34:32
#456347
Resposta escolhida
Colega,
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.
CLEVERTON 21/01/2016 21:16:28
#456375
ZEUZEBIO3
Toda chave primária é um índice ? acho que não viu.

Nos meus bancos os índices não são criados [Ô]automático[Ô].
SINCLAIR 22/01/2016 08:09:02
#456380
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.
MARCOS 22/01/2016 09:35:59
#456381
Independente,do fato da chave primária ser um índice,
agradeço,pois minha dúvida foi esclarecida.
Tópico encerrado , respostas não são mais permitidas