Duvidas sobre Relacionameto. erro.
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.
*
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
Curtidas 0
Respostas
Afarias
28/11/2005
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+
altere seu script para:
CREATE TABLE TAB_CIDADES (
ID_CIDADE CHAVE NOT NULL PRIMARY KEY,
...
T+
GOSTEI 0
Ullrich
28/11/2005
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.
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.
GOSTEI 0
Afarias
28/11/2005
|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+
|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+
GOSTEI 0
Ullrich
28/11/2005
*
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.
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.
GOSTEI 0
Afarias
28/11/2005
|* 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+
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+
GOSTEI 0