はじめに
システム開発において、DB設計は非常に重要な工程です。
ただ実務では、「とりあえずテーブルを作る」「後から考える」「動けばOK」という形で進んでしまいがちで、後から問題になるケースも少なくありません。
DB設計のミスは「パフォーマンス低下」「改修コスト増大」「バグの温床」などにつながります。
この記事では、現場でよく見るDB設計でやりがちなミスについてまとめます。
① 正規化されていない
よくあるのがデータの重複です。
例えば下記ように、本来別テーブルにすべき情報をそのまま持ってしまうケースです。
id | user_name | user_email
これを放置すると「更新漏れ」「データ不整合」が発生します。
理想は👇
・usersテーブル
・ordersテーブル
など、役割ごとに分けることです。
👉 データの一貫性を保つことが重要
② カラムの意味が曖昧
例えば
status INT
これだけだと、何のステータスか分からない。
さらに下記のように別管理されていると可読性が低くバグの原因になります。
1: active
2: inactive
3: pending
改善例👇
status VARCHAR(20)
または
is_active BOOLEAN
👉 カラム名と値で意味が分かる設計にする
③ NULLの扱いが曖昧
NULLを適当に使うと問題が起きます。
例えば、「未設定なのか」「存在しないのか」などの区別がつかなくなります。
その結果、条件分岐が複雑になったりバグが発生するケースが多いです。
👉 NULLを使う理由を明確にすることが重要です。
④ インデックスを考えていない
開発初期では問題なくても、データが増えると一気に遅くなるケースがあります。
例えば「検索が遅い」「JOINが重い」などです。
これはインデックス設計不足が原因のことが多いです。
よく使う条件にはインデックスを貼るなどの対策が必要です。
まとめ
DB設計でやりがちなミスは下記です。
・正規化されていない
・カラムの意味が曖昧
・NULLの扱いが雑
・インデックスを考えていない
DB設計は後から直すコストが非常に高いため、最初の設計が重要になります。
告知
もし興味があればですが、
案件に関わる中で一緒に開発できるエンジニアの方ともつながれたら嬉しいです。
・フリーランス
・副業
・業務委託
などで案件を探している方がいれば気軽にDMください。