OracleDB、PorstgreSQL、DB2と様々なDBの中身を仕事で見てきて、DB設計に共通して良い悪いのパターンがあるのはなんとなく感じていました。そのパターンをうまく説明できずにいましたが、『達人に学ぶDB設計 徹底指南書』にそのパターンが書かれていました。
本書は、DBの正規化,インデックス設計などの体系的な話や、論理設計のノウハウが書かれた参考書となっています。特にバッドノウハウの章は個人的に有用な内容でした。過去に見てきたDB設計とバッドノウハウとが繋がって、理解の進みが早かったです。SQLを書く人からデータベースを設計する立場になる人へ向けた参考書だと思います。
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2013/08/07
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
実は、世の中のシステムには、正規化も何もかも無視した論理設計があふれかえっているのです。ほとんど無法地帯と言いたくなるような開発現場もあります。
特に身に染みたのが「ダブルミーニング」でした。ダブルミーニングとは、1つの列に対して2つの意味を持たせる設計で、例えばある列に対して2010年以前は「体重」、2010年以降は「年齢」を保持させるような設計です。
(例)特徴が体重or年齢
年月日 | ニックネーム | 特徴 |
---|---|---|
2008/12/20 | ほげ太 | 60 |
2009/12/20 | ぴよ彦 | 70 |
2010/12/20 | ふー子 | 25 |
2011/12/20 | ばず郎 | 30 |
このような列の値を取り扱うために、アプリケーション側では年月日を条件にした分岐処理を入れたりします。機能改修が進むにつれてこのような処理分岐はいたる所に拡散したりもするので、コードを複雑化させる要因にもなります。そして、この列値を移行するのにも結構なコストがかかったりします。
他にも、主キーや外部キーには固定長と不変性を持たせることの重要性や、アドホックな集計キーの取り扱い方など、設計に役立つ情報がたくさん載ってました。DB設計に着手する前に読み返したい一冊です。