Opiniao sobre tabelas
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
Abs
Felipeiw
Curtidas 0
Respostas
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.
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
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
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
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.
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
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
Obrigado
GOSTEI 0
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).
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
31/01/2008
No meu caso esqueci de mencionar utilizo DBExpress com TSQLDataset+Provider+ClientDataset, utilizar o Generators com SQL é problematico ?
Abs
Abs
GOSTEI 0
Aroldo Zanela
31/01/2008
Colega,
Creio que não, pois é a forma mais usual.
Creio que não, pois é a forma mais usual.
GOSTEI 0