Jump to content


fabianofnl

Member Since 13/10/2008
Offline Last Active 14/10/2008, 15:55
-----

Posts I've Made

In Topic: Dúvida Sobre Chave Estrangeira

14/10/2008, 14:14

Então :D
Problema de conceito! Uma chave estrangeira dá a entender que você vai ter um relacionamento direto de UM para N, certo?
UM pai pode ter MUITOS FILHOS
mas UM filho não pode ter MUITOS PAIS

Na tabela3 vc está referenciando um valor da tabela2 que não é único, ou seja, pode se repetir! Referencie o id único da tabela2 ou faça referência direta à tabela1 ;) (y)


Então, eu criei as tabelas usando o DBdesigner, e nas tabelas mostram a chave estrangeira utilizando outra chave que não seja unico.
PS: realmente sou novo na area, banco de dados ainda é complexo pra mim.

Será que posso concluir mais ou menos assim:
Que no uso do banco de dados, é impossivel criar chave estrangeira de uma chave que não seja unico ?

Então devo referenciar sempre a outra tabela ? Naquele caso, a tabel 1 então ?
:unsure:

vlw
(y) :rolleyes:

In Topic: Dúvida Sobre Chave Estrangeira

14/10/2008, 13:33

Uhum.... é só jogar esse código no editor de query (aquele botão barra superior que tem um lápis) :)

Tem outro caminho que é o seguinte:
1 - Selecione a tabela filha.
2 - Botão direito -> Novo objeto -> Nova Chave Estrangeira
3 - Na tela que vai se abrir, coloque o nome da FK.
4 - Em referência você deve escolher a tabela pai.
5 - Clique na aba "colunas"; você vai dizer qual coluna filha faz referência a qual da tabela pai. Para isso, utilize os campos "coluna local" e "referenciando" e clique em adicionar.
6 - Clicando ma aba "ação" você vai poder definir o comportamento dessa chave em dois eventos: "ao atualizar" e "ao apagar". Para a grande maioria dos casos o mais recomendável é que você deixe CASCADE ao atualizar e RESTRICT ao apagar. Dessa maneira você vai poder atualizar a tabela pai garantindo que essa atualização se propague para a filha mas só permitirá que a tabela pai seja excluída caso ela não tenha nenhuma filha. Existem outras opções interessantes, vale a pena dar uma estudada nelas (y).
7 - Clique em OK e seja feliz... beba uma Xiboca pra comemorar.


auhauahauaha
beber uma ...

então, entendi sua ideia, testei aqui e não deu certo, mas talvez seja porque não fiz o post corretamente.
Detalhe da dúvida:

Tabela 1
id | nome | algo_mais
chave primaria (id)

Tabela 2
cod | tb2_id | descrição
chave primaria (cod)
chave estrangeira ((tb2_id) leva o campo da Tabela 1 (id))

Tabela 3
cont | tb3_id | descrição
chave primaria (cont)
chave estrangeira ((tb3_id) leva o campo da Tabela 2(tb2_id) que por sua vez tem o campo da Tabela 1 (id))

Até a criação da tabela 2 eu consigo, depois disso tento criar a chave estrangeira de uma chave estrangeira e da um erro chamado:
"there is no unique constraint matching given keys for referenced table "nome_da_tabela"".

Se fosse neste caso acima, o nome da tabela que o erro mostraria, seria a Tabela 2.

Até agora agradeço muito pelas resposta !!

vlw

:D

In Topic: Dúvida Sobre Chave Estrangeira

14/10/2008, 11:59

ALTER TABLE tabela
  ADD CONSTRAINT fk_nome_da_sua_chave FOREIGN KEY (codigo_pai)
	  REFERENCES tabela_pai (codigo) MATCH SIMPLE
	  ON UPDATE CASCADE ON DELETE RESTRICT;
(y)

hehe
Mais uma vez Boirock me ajudou ^^.

Só mais uma questão em cima dessa, se fosse pra fazer o mesmo, mas utilizando o pgadmim3, daria ?
Caso sim, é complicado passar mais um exemplo ?

valeu ai boirock.
(y) B)

In Topic: Duvidas Na Conexão Do Delphi Com Postgresql

13/10/2008, 16:04

São algo como "camadas intermediárias" para acesso aos dados...
Dá uma olhada nisso: http://www.linhadeco...igo.aspx?id=296


Valeu Boirock, olhei o link por cima, mas parece bastante interessante.
No mais posto o resultado da leitura :rolleyes: !!

abraço

IPB Skin By Virteq