データベースモデル

created:

updated:

thumbnail

システム開発する時に、テーブル設計をすることがあると思う。データベースモデルの良否が、アプリの出来に大きく影響を与えるので重要だ。これがうまくできてないと、SQLが複雑になったり、欲しい情報を集計するのがかなり大変になったりする。また、業種によっては、こういうデータモデルをするものだというのが決まっていたりする。

データベースモデルとは

データベースモデルは業務から発生した情報をどのようにデータベースに保存するか、テーブルの形で設計したもので、業務をどのように捉えているかを反映するものだと思う。企業によって、多少は業務が違うものの、共通する部分があり、知見として共有されている。これを知っているかどうかで設計の出来が変わってくる。過去に会計システムからの出力データを触るツールを作ったことがあるのだが、それまで会計システムの赤黒伝票というものを知らなかったので、初めて知ったときは驚いたし、面白く感じた。会計システムでは間違って作った情報(赤伝票)は削除はせず、新しい情報(黒伝票)で訂正処理をする。

事例

このツイートで、Redmineのデータ構造が良いって言ってたのでちょっと見てみた。

Redmine Data model ある程度複雑で複数の組織が存在するシステムの情報をどう管理しているか多少は分かる。興味があれば元のサイトを見てみて欲しい。こういう情報でとても便利なのが、このDatabase Answers(archive)というサイト。いろんな業界のデータモデルが紹介されているので、まずはここから該当する業種のデータモデルを拾って、たたき台とするのは良さそう。残念ながら、今はArchiveしか残ってないので更新されない。

本だといくつか参考になるものがあるので興味がある人にはうってつけ。ただ、システムをいくつか作った経験がないとなるほど、と腑に落ちないのではないか。データモデル大全はお話からスタートするので、分かりやすくていい。ちょっと本のボリュームが多いので、全部は読み切れないかも。後は、SQLアンチパターンもダメな事例が出てくるので、身につまされていいと思う。