Tabela

Firebird

26/08/2003

Olá Galera!!

Criei duas tabelas no Interbase e coloquei as suas respectivas chaves primárias e estrangeiras. Porém não sei com estabelecer um relacionamento “UM PARA MUITOS&8221;.
Como é que se estabelece esse tipo de relacionamento? Existe algum modo gráfico para relacionar as tabelas? Se possível exiba um exemplo de relacionamento.


Muito Grato

André


Nerisinformatica

Nerisinformatica

Curtidas 0

Respostas

Ezdala

Ezdala

26/08/2003

[color=darkred:c0c245dc08][/color:c0c245dc08][color=darkred:c0c245dc08][/color:c0c245dc08][color=darkred:c0c245dc08][/color:c0c245dc08]na segunda tabela vc tem q criar uma chave primaria composta, ex.
tabela de vendas:
Cod. venda, cod. cliente, cond. Pag. etc ...
tabela de itens da venda:
[b:c0c245dc08]cod.venda. seq. dos itens[/b:c0c245dc08], cod. produto, quant., etc ..
na tabela de itens vc deve colocar como chave além do codigo da venda a sequencia dos itens, então vc criará um relacionamento UM PARA MUITOS,

para ligar as duas tabelas digite o seguinte comando:
ALTER TABLE [nome tabela de itens] add
FOREIGN KEY (cod. venda) REFERENCES [tabela venda](cod.venda)


GOSTEI 0
Afarias

Afarias

26/08/2003

|na segunda tabela vc tem q criar uma chave primaria composta, ex.

Não exatamente...

Uma chave primária composta não tem nada q ver com relacionamentos 1 para muitos e, em alguns casos, não é uma boa prática (em termos de implementação e dependendo do banco de dados e aplicação).

Qualquer chave estrangeira ´não única´ (que não seja tb uma chave primária ou possua um índice único) define uma relação 1:N


T+


GOSTEI 0
Ezdala

Ezdala

26/08/2003

caso não havendo a necessidade de uma chave composta no ex. citado como fazer ? ? ? ? ? ? ? ? ? ? ? ? ? ?

ez dala


GOSTEI 0
Afarias

Afarias

26/08/2003

|caso não havendo a necessidade de uma chave composta no ex. citado
|como fazer ? ? ? ? ? ? ? ? ? ? ? ? ? ?

Ora, exatamente como vc citou::

ALTER TABLE [nome tabela de itens] add
FOREIGN KEY (cod. venda) REFERENCES [tabela venda](cod.venda)


isso não implica na necessiade de haver uma chave primária composta na tabela de itens.


T+


GOSTEI 0
Ezdala

Ezdala

26/08/2003

então vc deixaria a tabela de itens sem chave, pois colocando na tabela de itens o cod. da venda como chave vc estaria criando um relacionamento um p/ um ?

|não é uma boa prática|
e porque, talvez no interbase, criar chaves composta ´não é uma boa prática´ ?


GOSTEI 0
Afarias

Afarias

26/08/2003

|então vc deixaria a tabela de itens sem chave, pois colocando na tabela
|de itens o cod. da venda como chave vc estaria criando um
|relacionamento um p/ um ?

Não -- a chave primária na tabela Itens *pode* ser totalmente independente da extrangeira.


|e porque, talvez no interbase, criar chaves composta ´não é uma boa
|prática´

Não é boa prática em *nenhum* banco de dados. Para esse caso específico (itens) por exemplo, a princípio não vai fazer muita diferença.

T+


GOSTEI 0
Ezdala

Ezdala

26/08/2003

´Não é boa prática em *nenhum* banco de dados. Para esse caso específico (itens) por exemplo, a princípio não vai fazer muita diferença.´

desculpe a insistência mas eu ainda não entendi o por que !? sigo essa lógica desde da época do bom e velho clipper, tenho programa rodando em empresas de médio e pequeno porte (inclusive c/acesso remoto) e não tive nenhum problema, mesmo usando um BDR

ez


GOSTEI 0
Afarias

Afarias

26/08/2003

|desculpe a insistência mas eu ainda não entendi o por que !?

Pq não é boa prática?! Posso citar 2 motivos::

- índices menos eficientes;
- maior ´trabalho´ na manutenção das relações;


|tenho programa rodando em empresas de médio e pequeno porte
|(inclusive c/acesso remoto) e não tive nenhum problema, mesmo
|usando um BDR

:)

Não disse que há algum problema, disse q::

1 - não é necessário ter uma chave composta para estabelecer uma relação 1:N

2 - não é uma boa prática utilizar chaves primárias compostas (teoria de modelagem de dados)


T+


GOSTEI 0
POSTAR