CHAVES ESTRANGEIRAS

 Tópico anterior Próximo tópico Novo tópico

CHAVES ESTRANGEIRAS

SQL / DATABASE

 Compartilhe  Compartilhe  Compartilhe
#469581 - 10/12/2016 12:12:53

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Bom como vcs usam a questão referente a chaves estrangeiras ou como é mais usado em sistemas top de linha. Hoje uso o on restrict ou seja se tentar apagar um produto que tenha pedido indexado ele negar, ou seja, teoricamente tem que apagar primeiro pedidos que contenham este produto para somente depois apagar o produto? Essa é a melhor regra ou é melhor em cascata, ou seja se apagar o produto ele apaga também o registro do mesmo nos pedidos?



#469582 - 10/12/2016 15:12:02

JABA
CABO FRIO
Cadast. em:Agosto/2005


Última edição em 10/12/2016 15:12:48 por JABA

Em caso de "Pedidos" e "Produtos", como eles são uma composição, acho que seria mais coerente usar Cascata mesmo. Se um pedido não existe mais, por que os seus itens deveriam? A relação contrária não vejo da mesma forma.


_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#469583 - 10/12/2016 16:44:54

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Última edição em 10/12/2016 16:47:24 por SINCLAIR

Colegas,

Eu, particularmente, sou contra apagar em cascata. E também sou contra não apagar em cascata.

Me explico:

Se o produto, algum dia, foi usado para alguma coisa (pedido, orçamento, NFe, qualquer coisa) então ele faz parte do histórico da empresa. Se em novembro eu permitir apagar um produto, mesmo em cascata, que teve uma única venda no ano, o SPED não funcionaria mais (ou ficaria incorreto).

O que faço é ter um campo booleano, no cadastro dos produtos, que marca se o produto foi abandonado, seja por estar fora de linha de produção, seja porque não compensa mais financeiramente, seja por qual motivo for. Somente usuários com permissões especiais podem marcar produtos como inutilizáveis/fora de uso.

Quando precisar do histórico, como por exemplo, no SPED, o produto estará lá.

Quando se fala de sistema SGE, para o nível estratégico da empresa, tudo é longo prazo, para frente ou para trás. Pode-se precisar do gráfico de produtos mais vendidos nos últimos 3 meses e um produto "excluído" ainda precisa aparecer no gráfico, mesmo que tenha sido considerado como fora de linha no dia de ontem.

O mesmo faço para clientes, fornecedores, peças de composição dos produtos, qualquer outro cadastro.

Tudo de bom.


Euzébio Cruz
Criciúma - SC


#469587 - 10/12/2016 22:15:14

JABA
CABO FRIO
Cadast. em:Agosto/2005


Quando eu me refiro a exclusão do pedido, estou me referindo a exclusão física. Um pedido é composto de produtos. Um está amarrado ao outro. Se o pedido não existe mais, não vejo sentido em manter os seus itens apontando para ele, pois deixaria o banco de dados desnormalizado. Se a intenção é manter um histórico, então deveria-se optar por um campo booleano para torná-los exclusos para o sistema, como foi dito pelo SINCLAIR.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#469592 - 11/12/2016 08:26:38

SINCLAIR
CRICIUMA
Cadast. em:Janeiro/2001


Última edição em 11/12/2016 08:27:34 por SINCLAIR

Bom dia, Colegas,

Algumas vezes a normalização de dados bate de frente com a segurança da informação.

No meu sistema, mesmo se o camarada criou um pedido e for excluir, ainda assim fica restrito à inserção de campo booleano definindo como excluído e não excluindo fisicamente.

O motivo é simples: mesmo que neste caso não se vá precisar de histórico (o que sempre mantenho) mas é necessário não permitir a saída de um produto acabado (já extrusado, laminado, montado, pintado) sem um pedido com código de barras.

Alguém poderia fazer o pedido, sair com um lote de mercadorias, voltar e excluir fisicamente o pedido. Por isto eu mantenho o pedido apenas marcado como inservível e não excluo permanentemente, de forma física. No pedido fica o nome, data e hora de quem fez e deverá se explicar, posteriormente, porque o fez e excluiu.

No caso de contas a receber e a pagar, quando excluídas, além de funcionar da mesma forma (campo booleano marcando que foi considerada inutilizável), um aviso vai para a agenda compartilhada do chefe do setor. Se excluir uma conta, o chefe saberá. E se o chefe não marcar na agenda que analisou o caso, o diretor saberá.

Enfim, não só por histórico, mas por segurança da informação também.

Tudo de bom.


Euzébio Cruz
Criciúma - SC


Resposta escolhida #469594 - 11/12/2016 10:35:25

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Isso é bastante relativo. Tem casos em que a deleção em cascata é necessária/desejada e outros em que não. A estratégia de banco de dados vai depender do regime adotado pelo cliente. A maioria opta por manter os registros. Mas como disse, é caso à caso. Já tive situações em que tive que fazer um "caçador de registros órfãos" para organizar melhor o banco.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#469608 - 11/12/2016 13:02:57

JABA
CABO FRIO
Cadast. em:Agosto/2005


Acho que compreendi agora a dúvida do colega TRTNCG. Eu estava pensando que ele estava se referindo aos itens que compõe o pedido, e não à entidade Produto. Se for para a exclusão da entidade Produto, na minha opinião você deve usar o Restrict mesmo, pois se o produto não tiver mais relação com nenhuma outra tabela, sua exclusão não afetará absolutamente nada. Seria a mesma coisa de você cadastrar um novo produto agora e excluí-lo em seguida.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#469609 - 11/12/2016 13:10:10

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004


Citação:
:
Acho que compreendi agora a dúvida do colega TRTNCG. Eu estava pensando que ele estava se referindo aos itens que compõe o pedido, e não à entidade Produto. Se for para a exclusão da entidade Produto, na minha opinião você deve usar o Restrict mesmo, pois se o produto não tiver mais relação com nenhuma outra tabela, sua exclusão não afetará absolutamente nada. Seria a mesma coisa de você cadastrar um novo produto agora e excluí-lo em seguida.


Isso JABA meu sistema já funciona assim, mas,  a troca de ideias com amigos que também estão na labuta todos os dias é de enorme importância para que possamos trabalhar e deixar tudo certiho



#469610 - 11/12/2016 13:15:41

JABA
CABO FRIO
Cadast. em:Agosto/2005


Citação:
Isso JABA meu sistema já funciona assim, mas,  a troca de ideias com amigos que também estão na labuta todos os dias é de enorme importância para que possamos trabalhar e deixar tudo certiho


Demorou, mas eu consegui.

_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#469613 - 11/12/2016 13:32:25

TRTNCG
CAMPINA GRANDE
Cadast. em:Fevereiro/2004






 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por TRTNCG em 19/12/2016 17:49:20