Fórum Duvidas sobre Relacionameto. erro. #53959

28/11/2005

0

Não consigo fazer este relacionamento, o que está errado?

*
T a b e l a s
*

Tab_Cientes

CREATE TABLE TAB_CLIENTES (
ID_CLIENTE CHAVE NOT NULL
CLI_ID_CID_EST INTEGER NOT NULL,
CLI_ID_CO_CID_EST INTEIRO NOT NULL
CLI_PESSOA VARCHAR(1) NOT NULL,
);

Tab_Cidades

CREATE TABLE TAB_CIDADES (
ID_CIDADE CHAVE NOT NULL
CID_ID_ESTADO INTEIRO NOT NULL
CID_NOME VARCHAR(30),
CID_CIDADE_ESTADO VARCHAR(35)
);

*
R e l a c i o n a m e t o
*

alter table TAB_CLIENTES
add constraint FK_TAB_CLIENTES_1
foreign key (CLI_ID_CID_EST)
references TAB_CIDADES(ID_CIDADE)



*
E R R O
*


This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.


Ullrich

Ullrich

Responder

Posts

28/11/2005

Afarias

ID_CIDADE tem q ser chave primária (ou ter um índice único) para poder ser referência em uma chave estrangeira.

altere seu script para:

CREATE TABLE TAB_CIDADES (
ID_CIDADE CHAVE NOT NULL PRIMARY KEY,
...


T+


Responder

Gostei + 0

28/11/2005

Ullrich

Sou iniciante.

O Campo ID_CLIENTE é uma chave primária, junto com os campos CLI_ID_CID_EST, CLI_ID_CO_CID_EST.

Como faço este indice unico?

Eu Preciso deixar os campos CLI_ID_CID_EST, CLI_ID_CO_CID_EST como chave primaria para poder fazer um relacionamento?

*Código já existente.
Deixei estes três campos contendo chave,
ALTER TABLE TAB_CLIENTES ADD CONSTRAINT PK_TAB_CLIENTES PRIMARY KEY (ID_CLIENTE, CLI_ID_CID_EST, CLI_ID_CO_CID_EST);

Como funciona este indice? Já li em varios lugares que é muito bom reindexar as tabelas, como funciona?

Obrigado pela atenção.


Responder

Gostei + 0

29/11/2005

Afarias

|O Campo ID_CLIENTE é uma chave primária, junto com os campos
|CLI_ID_CID_EST, CLI_ID_CO_CID_EST.

chaves primárias compostas exigem chaves estrangeiras compostas.


|Como faço este indice unico?

toda chave primária já é única!


|Eu Preciso deixar os campos CLI_ID_CID_EST, CLI_ID_CO_CID_EST
|como chave primaria para poder fazer um relacionamento?

deveria deixar apenas 1 campo na chave primária. chaves primárias compostas são complicadas de trabalhar


|Como funciona este indice? Já li em varios lugares que é muito bom
|reindexar as tabelas, como funciona?

esqueça. reindexar tabelas é coisa de quem trabalha com gerenciadores de arquivo e não SGBD


T+


Responder

Gostei + 0

29/11/2005

Ullrich

*
T a b e l a s
*

Tab_Cientes

CREATE TABLE TAB_CLIENTES (
ID_CLIENTE CHAVE NOT NULL <- Chave Primaria
CLI_ID_CID_EST INTEGER NOT NULL, <- Chave Primaria
CLI_ID_CO_CID_EST INTEIRO NOT NULL <- Chave Primaria
CLI_PESSOA VARCHAR(1) NOT NULL,
);

Tab_Cidades

CREATE TABLE TAB_CIDADES (
ID_CIDADE CHAVE NOT NULL <- Chave Primaria
CID_ID_ESTADO INTEIRO NOT NULL <- Chave Primaria
CID_NOME VARCHAR(30),
CID_CIDADE_ESTADO VARCHAR(35)
);

*
R e l a c i o n a m e t o
*

alter table TAB_CLIENTES
add constraint FK_TAB_CLIENTES_1
foreign key (CLI_ID_CID_EST)
references TAB_CIDADES(ID_CIDADE)



*
E R R O
*


This operation is not defined for system tables.
unsuccessful metadata update.
could not find UNIQUE INDEX with specified columns.


´chaves primárias compostas exigem chaves estrangeiras compostas.´

* O que quer dizer Chave Composta (Extangeira e Primaria) ?
* Como faço uma chave composta?
* Essa chave composta deve existir para realizar um relacionamento?

OBS: Estou usando o IBExpert e FireBird.

Obrigado pela ajuda, estou aprendendo muito.


Responder

Gostei + 0

29/11/2005

Afarias

|* O que quer dizer Chave Composta (Extangeira e Primaria) ?

composta por mais q 1 campo, uma constraint q tem mais de 1 campo em sua composição!


|* Como faço uma chave composta?

alter table tabela2 add constraint nome_chave
foreign key (campo1, campo2) references tabela1 (chave1, chave2);


|* Essa chave composta deve existir para realizar um relacionamento?

como eu disse, vc deveria evitar chaves compostas. suas chaves primárias deveriam conter apenas 1 campo e nunca 3!

nos seus exemplos, apenas ID_CLIENTE em TAB_CLIENTES e ID_CIDADE em TAB_CIDADES deveria ser PK


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar