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, VARCHAR

NCHAR, NVARCHAR

CLOB, 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
ご清聴いただき、ありがとうございました

DB設計でこだわりたい三つの要素