🗄️

ちょこっとデータモデリング入門

2024/10/30に公開

データモデリングとは、必要なデータとそれらの関係性を定義し、最終的にデータベースを設計することです。
データベースは一度設計すると、刷新が非常に難しいので、最初の設計を慎重に行う必要があります。なので、エンジニアを目指す人は学んでおいた方がいいかもしれません。

データモデリングには

  • 概念データモデリング
  • 論理データモデリング
  • 物理データモデリング

の3種類があり、これらの手順によってデータベースを設計します。

ECサイトを作る場合を想定して、これらの手順を説明していきます。

概念データモデリング

まず最初に行うことは、エンティティを抽出し、概念データモデルを作ることです。エンティティは、特定のデータの集まりの名称です。ECサイトでは、商品、顧客、注文、業者などの情報が必要ですよね。これらがエンティティです。

そして、エンティティの関連性を定義して、概念データモデルを作っていきます。これらのエンティティは単体では成り立ちません。顧客がどの業者からどの商品を注文したのかという情報が必要になるからです。

なので、商品、顧客、注文、業者はどのように関連するのかをしっかり定義していきます。しっかり定義できれば、例えば、業者Aは商品Bと商品Cを販売していて、顧客Aは商品Bを〇月〇日に注文したという情報をキャッチできるようになります。

エンティティの関連性を定義しないと、そういった情報を適切にキャッチすることが難しくなります。「注文が入ったけど、だれが注文したんだ?どの商品を買ったんだ?てか、その商品は誰が売ってんだ?」と混乱状態になることでしょう。

論理データモデリング

概念データモデルを定義したら、エンティティを深掘りし、論理データモデルを定義します。顧客とだけ言われても、その人が誰なのかさっぱりの状態です。一人ひとりをしっかり判別するため、更に情報が必要になります。

エンティティを深掘ることによって名前、性別、年齢といった情報が出てきたとします。これらの情報をアトリビュートといいます。もちろん、他のエンティティも深掘りしてアトリビュートを出していき、論理データモデルを作ります。

物理データモデリング

論理データモデルが出来たら、物理データモデルを作ります。
顧客エンティティに名前・性別・年齢アトリビュートがあるとして、アトリビュートは「名前」「性別」「年齢」という日本語名ではデータベースで定義できません。英語に変換する必要があります。name, gender, ageという風に変換します。他のアトリビュートもこれを行います。

また、これらのアトリビュートの型や制約を指定します。名前は、基本的に文字列で表現できるはずです。数値が含まれることはないと思います。なので、このアトリビュートはString型で、名前の長さは20文字までにしよう、という風に型と制約を指定します。他のアトリビュートも同じように行います。

終わりに

これらの手順を踏んだら、最終的にデータベースの設計を行う訳です。
もちろん、ここに記載していない内容もありますが、ちょこっと入門ということで、ひとまずここで終わりにします。

参考

https://xica.net/xicaron/data-modeling/
https://zenn.dev/umi_mori/books/331c0c9ef9e5f0/viewer/110b8e
https://aws.amazon.com/jp/compare/the-difference-between-logical-and-physical-data-model/

GitHubで編集を提案

Discussion