Opiniao sobre tabelas

Delphi

31/01/2008

Tenho uma tabela de recebimentos com um campo ID sendo PK, outra tabela pagamentos com um campo ID sendo PK e tenho uma tabela fluxo de caixa, onde recebera informacoes ora da tabela recebimentos ora da tabela pagamentos e tb dados digitados como posso montar os campos na tabela fluxo de caixa para conseguir ter FK tanto da tabela recebimentos quanto da tabela pagamentos, assim posso deixar o banco controlar tanto DELETE ou UPDATE utilizando as chaves PK ?

Abs


Felipeiw

Felipeiw

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

31/01/2008

Colega,

A tabela com cardinalidade n deve possuir uma chave estrangeira para a chave primária da tabela de cardinalidade 1. Neste caso, a tabela de fluxo de caixa deverá ter duas chaves estrangeiras, sendo uma para pagamentos e outra para recebimentos. No entanto, normalmente o fluxo de caixa é um subproduto de outras rotinas (pagar, receber, tesouraria, etc) e não constitui persistência.


GOSTEI 0
Felipeiw

Felipeiw

31/01/2008

Primeiro:
Pensei em criar 2 FK no fluxo de caixa, mas nao vai dar erro quando eu for cadastrar um recebimento ? Pois o campo que refere a tabela recebimento vai estar preenchido, mas o campo que refere a tabela pagamentos vai estar nulo, e entao da erro de FK, ou entao quando forem fazer um lancamento manual por exemplo de alguma taxa bancaria, neste caso nao vou preencher nem o campo FK do recebimento e nem o FK do pagamento.

Segundo:
Nao entendi quando vc que a tabela fluxo de caixa nao tem persistencia.

Obrigado


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

31/01/2008

Colega,

1. Campos nulos em chaves estrangeira não geram erros;
2. Quis dizer que o fluxo de caixa é resultado das rotinas. No seu caso especificamente com base no seu exemplo, ao invés de efetuar um lançamento e gravar (persistir) na tabela de fluxo de caixa, deveria ser feito um lançamento na rotina de ´caixa e bancos´. Desta forma, a consolidação de pagar, receber e caixa e bancos iriam resultar no fluxo de caixa.


GOSTEI 0
Felipeiw

Felipeiw

31/01/2008

Entao eu estava indo no caminho certo, obrigado, nao sei se posso aproveitar seu conhecimento para tirar a seguinte duvida, qual é a maneira que vc me sugere para gerar os IDs das tabelas recebimentos e pagamentos ? Estou utilizando FB 1.5 com D7

Obrigado


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

31/01/2008

Colega,

Com Firibird eu sempre uso generators para geração dos IDs, entretanto, ao invés de triggers ou executar comandos SQL para ´disparar´ a geração eu uso a propriedade GeneratorField do componente IBDataSet para acontecer automaticamente (controlada pelo componente).


GOSTEI 0
Felipeiw

Felipeiw

31/01/2008

No meu caso esqueci de mencionar utilizo DBExpress com TSQLDataset+Provider+ClientDataset, utilizar o Generators com SQL é problematico ?

Abs


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

31/01/2008

Colega,

Creio que não, pois é a forma mais usual.


GOSTEI 0
POSTAR