ふりかえり

本記事は、SQLの基本、実務使用例編になります。
SQLの基礎に関しましては、
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

本編に入ります!
削除フラグの活用について

削除フラグ(DELETE_FLAG)を活用することで、データを物理的に削除せずに管理する方法について、初心者の方にもわかりやすく解説します。
<削除フラグを使ったSQLの例>
select * from 申請管理情報
where DELETE_FLAG = '0';

削除フラグの値が 0?

はい、そうです!
削除フラグとは、レコードの削除を論理的に管理するためのカラムです。
このフラグを使用することで、データを実際に削除せずに「削除済み」として扱うことができます。
削除フラグの値が 0 の場合は通常データ(有効)、1 の場合は削除済み(無効)を意味します。
データの復元が可能
誤って削除したデータでも DELETE_FLAG を 0 に戻せば復元できます。
履歴管理がしやすい
どのデータが過去に使われていたのかを簡単に確認できます。
参照制約を維持できる
物理削除では外部キー制約の影響を考える必要がありますが、削除フラグを使うことで回避できます。
実務レベルの使用例を見ていこう!

実際に、SQLを使用してデータを確認していきましょう。
SQLに関しては以下を使用して解説していきます。
create table文、select文、insert文、update文、delete文、
drop table文、につきましては、過去にアップロードした
【初学者必見!】SQLの超基礎編の記事をご覧くださいませ。

目次の、「ふりかえり」のところにそれぞれの記事のリンクが
貼ってあるよ!
または、サイドバーのカテゴリーにSQLがあるから、そちらからでも
参照できます!
[事前準備]今回、実行するSQLの一覧
-- 申請管理情報テーブルの作成
create table 申請管理情報 (
STAFF_NO varchar2(10) not null, -- 職員番号 (Staff Number)
APPLI_NO varchar2(10) not null, -- 申請番号 (Application Number)
APPLI_DATE date, -- 申請年月日 (Application Date)
DEPARTMENT varchar2(10), -- 部署名(Department)
DELETE_FLAG varchar2(1), -- 削除フラグ(0:通常データ 1:削除済み)
constraint PK_申請管理情報 primary key (STAFF_NO, APPLI_NO)
);
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG)
values ('1001', 'A001', TO_DATE('2024-02-25', 'YYYY-MM-DD'),'営業','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG)
values ('1001', 'A002', TO_DATE('2024-02-26', 'YYYY-MM-DD'),'営業','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG)
values ('1002', 'A003', TO_DATE('2024-02-27', 'YYYY-MM-DD'),'開発','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG)
values ('1002', 'a003', TO_DATE('2024-01-27', 'YYYY-MM-DD'),'開発','0');
insert into 申請管理情報 (STAFF_NO, APPLI_NO, APPLI_DATE, DEPARTMENT, DELETE_FLAG)
values ('1003', 'A004', TO_DATE('2024-02-28', 'YYYY-MM-DD'),'営業','1');
削除されていないデータのみを取得する
select * from 申請管理情報
where DELETE_FLAG = '0';

通常、有効なデータのみを表示したい場合、DELETE_FLAG = '0' の条件をつけます。
データを論理削除する(削除フラグを更新する)
update 申請管理情報
set DELETE_FLAG = '1'
where STAFF_NO = '1001' and APPLI_NO = 'A002';

select * from 申請管理情報

削除するのではなく DELETE_FLAG を 1 に更新することで、データを論理的に削除できます。
削除済みデータを復元する
update 申請管理情報
set DELETE_FLAG = '0'
where STAFF_NO = '1001' and APPLI_NO = 'A002';

select * from 申請管理情報

誤って削除した場合、削除フラグを 0 に戻すことで復元できます。
まとめ
DELETE_FLAG を活用することで、データを物理削除せずに管理可能。
DELETE_FLAG = '0' のデータのみ取得すれば、通常データのみ表示できる。
DELETE_FLAG = '1' に更新すれば論理削除、0 に戻せば復元できる。
データの整合性を保ちながら、履歴を管理しやすいメリットがある。

DELETE_FLAGについて解説しました。
次回もお楽しみに!










コメント