Re: [firebase-br] Da para evitar duplicação de índice

Euler Jr. euler em siginformatica.com.br
Seg Maio 23 15:19:44 -03 2005


Caro Luis,
as suas tabelas estão inconsistentes. Para vc manter a
integridade/relacionamento a coluna ID da tabela MASTER deveria ser PRIMARY
KEY. Na tabela DETALHE, como vc pode relacoes 1 para N, a chave devera ser
ID e MASTER.

Na minha opniao deveria ficar assim:

RECREATE TABLE MASTER(ID INTEGER NOT NULL,MASTER INTEGER NOT NULL,
PRIMARY KEY(ID,MASTER));

RECREATE TABLE DETALHE(ID INTEGER NOT NULL ,MASTER INTEGER NOT NULL,
NOME CHAR(30), PRIMARY KEY(ID,MASTER));

ALTER TABLE DETALHE ADD CONSTRAINT FK_DETALHE FOREIGN KEY(ID,MASTER)
REFERENCES MASTER(ID,MASTER);

Com isso vc define que somente existirá uma ocorrência do par ID/MASTER.

Com relação ao índice para ordenação, creio que seja necessário, para a
impressão do seu relatorio. Utilize ORDER BY MASTER,NOME. Caso vc ache
necessário e se sua base ñ for muito grande, vc pode desativar o indice e
ativá-lo qdo necessário.

Até +

Euler Jr.

----- Original Message -----
From: "Luis H Romão" <luish em virweb.com.br>
To: <lista em firebase.com.br>
Sent: Monday, May 23, 2005 2:25 PM
Subject: [firebase-br] Da para evitar duplicação de índice


> Boa tarde ,vamos discutir um pouco uma questão de performance??
>
> tenho o seguinte caso
>
> tabela master
>
> CREATE TABLE MASTER (
>     ID      INTEGER NOT NULL,
>     CAMPO1  INTEGER
> );
> ---------------------------------
>
>
>
> tabela detalhe
>
> CREATE TABLE DETALHE (
>     ID      INTEGER NOT NULL,
>     MASTER  INTEGER,
>     NOME    CHAR(10)
> );
>
>
/***************************************************************************
> ***/
> /****                             Foreign Keys
> ****/
>
/***************************************************************************
> ***/
>
> ALTER TABLE DETALHE ADD CONSTRAINT FK_DETALHE FOREIGN KEY (MASTER)
> REFERENCES MASTER (ID) ON UPDATE CASCADE;
> ----------------------------------
>
> Nos relatórios necessito que os nomes fiquem em ordenados, para isso crio
o
> indice master,nome
>
> CREATE INDEX DETALHE_IDX1 ON DETALHE (MASTER, NOME);
>
> Minha dúvida: Ficamos com dois indices
> FK_DETALHE      master
> DETALHE_IDX1    master,nome
>
> isso não é uma redundância já que o DETALHE_IDX1 contem o FK_DETALHE ?
> existe alguma formao da CONSTRAINT utilizar o índice DETALHE_IDX1 ?
>
> Com o BDE geralmento coloco como masterfild o campo master e como
> indexfieldnames os dois campos master;nome deste forma é feito o
> relacionamento mestre/detalha com o indece duplo. A nível do banco isto
não
> é possível?
>
> obrigado a todos que estão colaborando.
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.806 / Virus Database: 548 - Release Date: 5/12/2004
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>





Mais detalhes sobre a lista de discussão lista