はじめに
今回DB設計についての書籍を読み、今後作成するにあたりこアンチパターンを行わないように戒めとして記事にしました。
まだまだ初学者になりますのでおかしな部分あればご指摘いただければと思います。
アンチパターンについて自分なりの解釈を書き残しておきます。
まだ設計に関して学習始めたばかりなので今後ここに追記して具体性持たせることができればと思います。
アンチパターン
単一参照テーブル
多すぎるテーブルを1つにまとめてしまい、参照する際に検索は楽だが、応用性が全くないパターン
ダブルミーニング
列に違う意味を持った値を入れれるように更新してしまうパターン
非スカラ値
配列として入れれるようになったこともありカラムに複数の値を入れてしまうパターン
テーブル分割(水平分割)
テーブルを行で分割し売上を年度別で分けた例→年を跨いだ総売上など出せない。パーティション機能で代替可能
テーブル分割(垂直分割)
テーブルを列で分割したパターン。代替案として集約(データマート、サマリテーブルがある)。データマートは同じデータ持っているが使用頻度の高いものを小さなテーブルとしてもう1つ作ること。(マテリアライズドビューという機能で代替可能)サマリテーブルは平均や合計などよく参照するのであればその値を持ったテーブルを作ってしまうこと。どちらも更新のタイミングが遅いと統合性なくなるし、細かくしすぎるとデータ更新の負荷がかかり本末転倒になる場合もある。
不適切なキー
結合キーになる部分や主キーは不変のものである必要があるのに対し可変長文字列と固定長文字列がのデータ型が混在してしまうと2つは空白部分埋める違いなどがあるので整合性が取れない。最初から固定長文字列型に揃えておくべき。
ダブルマスタ
同じ列で同じ役割を持つテーブルが複数存在するパターン。企業の統廃合によって起こりがち。
おわりに
今回下記の書籍読ませていただき学んでおります!
実際の経験がないため今はまだ頭の中にインデックスとして残している状態なのでいざ設計し始めた時にこの記事に戻ってきて編集ができるよう精進いたします!
ありがとうございました!
達人に学ぶDB設計徹底指南書