事実の記録の利用 ① 事実から計算結果・判断結果を導き出す 注文内容と料金規程から請求金額を算出する 現在の在庫数・入庫予定・出庫予定から出荷可否を判断する ② to do, doing, done の管理 約束したことの履行を促す 履行が滞っていることの検出 ③ 予定・実績・差異の管理 目論んだコトと実際に起きたコトとの差異の検出 11
どう記録するか ① 値のグルーピング 例)顧客に関するデータ (顧客番号, 氏名, メールアドレス)の三つの値のグループで記録する ② 値と値の関係(ある値が決まれば他の値は一つに決まる関係) a. 顧客番号がわかれば、氏名とメールアドレスは一つに決まる b. 氏名がわかっても、顧客番号やメールアドレスは一つには決まらない ③ 値のグループの合成(分解と結合) (顧客番号, 氏名)と(顧客番号, メールアドレス)の二つの値グループで記録 [顧客番号]で結合して(顧客番号, 氏名, メールアドレス)のビューを合成する 12
スキーマ名・テーブル名・列名にこだわる 日本語 説明的な名前(SQL文自体を設計ドキュメントにする) スキーマによる構造化 テーブルをグルーピング スキーマ名(グループ名)で関心事を分離する 関連づけテーブルの名前 a. 部門_X_従業員:構造の表現を重視 b. 所属:意味を表現かつ更新型 c. 配属_履歴:意味を表現かつ追記型 27
制約にこだわる:良いテーブル設計の根幹 設計意図の表現手段 制約の意味を理解して使う 積極的に制約を宣言する ① NOT NULL ② 一意性制約(UNIQUE) ③ 主キー制約(PRIMARY KEY) ④ 外部キー制約(FOREIGN KEY) ⑤ チェック制約(データ型の強化:設計意図の表現) 29