DB設計原則

マスター系テーブルのレコードを論理削除するべきか物理削除するべきかの判断

マスター系レコードをテーブルから削除する場合、基本的には論理削除(削除フラグに1を立てる)がよい。 理由は、トランザクション系テーブルから参照しているデータが、参照できなくなってしまう為。では、いつも論理削除が正しいかというとそうではないと…

マスター系テーブルのカラムをトランザクション系テーブルに保持する考え方

コンビニの売り上げシステムのようなものを考えてみる。商品テーブルがあって、そこには以下のようなデータが登録されているものとする。 商品コード 商品名 単価 1 ポテトチップス 98円 2 カップラーメン 150円 3 コカコーラ 120円 4 ペプシコーラ 120円 売…

マスター系テーブルにuniq制約はつけない

uniq制約は便利であるが、反面問題点もある。 例えば、商品コード、商品名(uniq制約)、削除フラグで構成される商品テーブルがあるとする。 新規に商品情報を商品テーブルに登録する際に、論理的に削除されたレコードの商品名と重複する場合、レコードが追加…

マスター系テーブルのレコードは物理削除してはいけない。

商品テーブルや社員テーブルのような系統のテーブルをマスター系テーブルといい、 明細テーブルなどをトランザクション系テーブルという。マスター系テーブルを削除する場合、レコードをdelete文で物理削除するのではなく、削除フラグを更新するようにして論…

テーブル名について

2chから抜粋 899 名前: NAME IS NULL [sage] 投稿日: 2008/07/15(火) 23:23:05 ID:??? テーブル名について質問です。 以下のような3つのテーブルを作っています。 □会社テーブル ・会社コード ・会社名 □所属テーブル ・所属コード ・所属名 □会社and所属…

カラムのネーミングについて

2chから引用 61 :NAME IS NULL:2007/02/25(日) 13:58:00 ID:6/IGUhkO 一つ間違って欲しくないのはSQLを書きやすくするためのテーブル設計をしてはだめ。 CUSTOMERS.NAMEが得意先名の方が自然だろ。 得意先名というのは得意先の名前であって得意先の得意先…