DB設計でこだわりたい 三つの要素
Takahiro YAMADA @yamadamn 2015/02/21
自己紹介
●本日のレガシー枠 o昔、DB屋さん (~5年前)
o今、ミドルウェア製品の構築・サポート
▪ Oracle ACE (Middleware & SOA) ● DB資格
oデータベーススペシャリスト
oベンダー系 Oracle, DB2, SQL Server
▪ただしバージョンは相当レガシー
アジェンダ
一. ネーミング
二. データ型の使い分け
三. 制約の使いどころ
ネーミング
ネーミング
●ネーミングの流派
●ネーミングの対象
種類 さらに細かい流派
英語 大文字、小文字
ローマ字 ヘボン式、日本式
日本語 全角、半角
対象 考慮する要素
テーブル(エンティティ)テーブルID接頭辞、接尾辞
カラム 主要語、修飾語、区分語その他オブジェクト 制約、インデックス etc.
ネーミング
●ネーミングの重要性
o様々な機会に参照
o意味や概念を推測・認識する手がかり
●整合性・一貫性の維持
o一貫したネーミング種類
o正式名称と略称の対応
o他システム連携時は、ビューなどで化粧直し
ネーミング
●一意性の確保
o類義語・同義語の回避
o同音語にも注意
●避けたほうがよいネーミング例
o~情報
o~管理
データ型の使い分け
データ型の使い分け
●データ型の種類
種類 具体的なDB型
数値 INT, FLOAT, DECIMAL
文字CHAR, VARCHARNCHAR, NVARCHARCLOB, NCLOB
日付 DATE, TIME, TIMESTAMP
バイナリ BLOB
その他真理値型、配列型、XML型、ユーザー定義型 etc.
データ型の使い分け
●利用するデータ型の絞り込み
oシンプルさの維持
●ネーミングとデータ型の対応付けポリシー
oフラグ、区分
o ID、コード、番号
o日付、年月、開始・終了
データ型の使い分け
●桁数の考慮
oきりのよい数字
o容量見積もりとの関係
oバイト数と文字数
制約の使いどころ
制約の使いどころ
●制約の種類種類 DBでの設定 説明
主キー制約 PRIMARY KEYテーブルに一つのみ一意であり、NULLを許可しない
NOT NULL制約 NOT NULL NULLを許可しない
一意制約 UNIQUE 一意で重複を許可しない
チェック制約 CHECK 条件に一致するデータのみ許可
参照整合性制約(外部キー)
FOREIGN KEY / REFERENCES テーブル間の整合性を維持
デフォルト制約(デフォルト値) DEFAULT 値を指定しない場合の初期値
制約の使いどころ
●主キー制約
o自然キーと人工キー(代替キー)
o単一キーと複合キー
● NOT NULL制約
o空文字の扱い
o 3値論理やNULLの混乱防止
制約の使いどころ
●一意制約
o DBMSによる違いに注意
●チェック制約
oビジネスルールは実装しない
oデータ型の補助程度に利用はあり
制約の使いどころ
●参照整合性制約(外部キー)
o OLTPでは付加することを考慮
o単体(自動化)テストとの兼ね合い
oカスケード更新・削除には頼らない
●デフォルト制約(デフォルト値)
o基本的には頼らない
o手動データ入力や、カラム追加時の互換性維持
まとめ
●ネーミング
o名は体を表す
o一貫性を保つ
●制約、データ型
oルールやポリシーを定める
o理由も含め明文化しておく
DB設計でこだわりたい 三つの要素
Takahiro YAMADA @yamadamn 2015/02/21
ご清聴いただき、ありがとうございました