Fórum Banco de Dados desativar dado #514406

22/03/2015

0

Boa noite,
Estou Desenvolvendo um sistema de Controle escolar e estou precisando de ajuda no banco de dados estou precisando desativar um dado do banco para que futuramente caso precise reativar tal dado se alguém puder me ajudar agradeço.
Thiego Jesus

Thiego Jesus

Responder

Posts

22/03/2015

Alan Mario

Bom dia Thiego, me desculpe mas eu não entendi a sua duvida, como assim desativar um dado? não selecionar, não apagar, não modificar...?
Responder

Gostei + 0

26/03/2015

Thiego Jesus

Nao apagar!
tipo ele permanece no banco mas nao parece no sistema. mas ele tem que aparecer de volta quando reativar
Responder

Gostei + 0

26/03/2015

Marcos P

Sua resposta está na sua própria frase... "ele permanece no banco mas nao parece no sistema. mas ele tem que aparecer de volta quando reativar ".

Para as tabelas que precisam desse recurso, crie uma coluna chamada "Status" ( boolean ).

Se status = true, o resgistro está ativo e aparece na aplicação.

Se status = false, o registro está está inativo.

Do lado da aplicação você deve tratar a ativação / inativação naquela tabela e todas as pesquisas para desprezar os registros inativos.

Ou seja, todo o tratamento ocorre na aplicação e não no BD !

Resolve ?
Responder

Gostei + 0

26/03/2015

Thiago Santana

Thiego, você pode criar um campo do tipo booleano para as suas tabelas
com o valor default true e no sistema você filtra apenas os registros onde esse campo estejam com o valor true!
Responder

Gostei + 0

26/03/2015

Alan Mario

Ahhh agora entendi, só não sei como se faz, mas blz.
Responder

Gostei + 0

26/03/2015

Marilia Silva

Marcos P, se não pedir demais, pode postar como posso fazer uma tabela com essas caracteristicas, por favor.
Responder

Gostei + 0

27/03/2015

Thiago Santana

Dependendo do BD pode mudar um pouquinho a instrução!



CREATE TABLE CLIENTES
( ID_CLIENTE INT, NOME VARCHAR(255), ATIVO INT
);



O campo ativo você poderá utilizar 0 = TRUE, 1 = FALSE
Responder

Gostei + 0

27/03/2015

Marcos P

Marilia,

É algo similar ao que o Thiago colocou no post acima...
Responder

Gostei + 0

27/03/2015

Randrade

Dependendo do BD pode mudar um pouquinho a instrução!



CREATE TABLE CLIENTES
( ID_CLIENTE INT, NOME VARCHAR(255), ATIVO INT
);



O campo ativo você poderá utilizar 0 = TRUE, 1 = FALSE


Apenas completando a resposta.

Após isso, basta colocar esta condição so select.

SELECT * FROM CLIENTES WHERE ATIVO = TRUE
                                 OU
SELECT * FROM CLIENTES WHERE ATIVO = 0

Neste caso, a consulta retornará somente os clientes ativos.
Responder

Gostei + 0

27/03/2015

Marcos P

Uma outra abordagem, que pode ser analisada, é mover os registros "deletados" para uma tabela auxiliar com a mesma estrutura da tabela original.

Isso tende a ter um impacto menor na aplicação pois as queries não precisam ser alteradas, assim como a performance seria otimizada.

O lado negativo é que o banco de dados tende a aumentar consideravelmente de tamanho...

Existem várias abordagens para isso, veja por exemplo : Soft Deletion
Responder

Gostei + 0

27/03/2015

Thiago Santana

Uma outra abordagem, que pode ser analisada, é mover os registros "deletados" para uma tabela auxiliar com a mesma estrutura da tabela original.

Isso tende a ter um impacto menor na aplicação pois as queries não precisam ser alteradas, assim como a performance seria otimizada.

O lado negativo é que o banco de dados tende a aumentar consideravelmente de tamanho...

Existem várias abordagens para isso, veja por exemplo : Soft Deletion


isso ai Marcos!
É bom analisar os impactos, mas o caminho é exatamente este!
Randrade completou legal meu post rsrs
Responder

Gostei + 0

27/03/2015

Marilia Silva

Obrigada pessoal, mas o tipo de dado é INT mesmo?
Responder

Gostei + 0

27/03/2015

Jothaz

Obrigada pessoal, mas o tipo de dado é INT mesmo?


Fica a gosto do freguês e de quais tipos o banco de dados dispõe, dai define-se as regras de como os registros serão tratados.

Por exemplo:

INT -> 0 - Ativo e 1 - Inativo

CHAR -> 'A' - Ativo e 'I' - Inativo

BIT -> Ativo (True) 1 e Inativo (false) 0

Particularmente acho mais performático INT ou BIT.

É sempre uma boa prática efetuar a exclusão lógica ao invés da exclusão física pois assim mantem-se a coesão nos dados históricos.

Sem falar que alguns sistemas, folha de pagamentos, deve-se manter o registros dos funcionários demitidos por exemplo.

Com será feito, através de flag´s ou de tabelas como o Marcos P sugeriu é uma questão a ser analisada de acordo com cada cenário.
Responder

Gostei + 0

27/03/2015

Marilia Silva

Obrigada Jothaz pelas informações extras e importantes.
Responder

Gostei + 0

29/03/2015

Thiago Santana

Obrigada pessoal, mas o tipo de dado é INT mesmo?


Fica a gosto do freguês e de quais tipos o banco de dados dispõe, dai define-se as regras de como os registros serão tratados.

Por exemplo:

INT -> 0 - Ativo e 1 - Inativo

CHAR -> ''A'' - Ativo e ''I'' - Inativo

BIT -> Ativo (True) 1 e Inativo (false) 0

Particularmente acho mais performático INT ou BIT.

É sempre uma boa prática efetuar a exclusão lógica ao invés da exclusão física pois assim mantem-se a coesão nos dados históricos.

Sem falar que alguns sistemas, folha de pagamentos, deve-se manter o registros dos funcionários demitidos por exemplo.

Com será feito, através de flag´s ou de tabelas como o Marcos P sugeriu é uma questão a ser analisada de acordo com cada cenário.


Exatamente isso Jothaz!
Fica ao seu critério Marilia...
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar