Railsを勉強して、いざwebサービスを開発しようとなった段階で、DB設計について何も分からない状態の自分に気づいたので、Railsと並行して勉強しているDB設計の基礎についてまとめていきたいと思う。
#そもそもデータベースの「データ」って何?
データベース設計を学ぶ前にそもそもデータって何?
データ=あるフォーマットに揃えられた事実の事。
例えば、Userをデータ化しようとした時に考える事として、どのような属性を定義するかを考える必要がある。それは、氏名、年齢や職業、好きな食べ物や好きな音楽だったりする。
それら定義したデータをある文脈や視点から加工したり、集約したりしたものが「情報」となる。
自分は音楽が好きなので、「Spotify」のレコメンド機能を例に挙げると、ユーザーがストリーミング再生した音楽の履歴データそれ自身は「この日、このユーザーはこういう音楽を何分間聴いた」という事実を語っているに過ぎない。
しかし、サービス提供者は、次々とユーザーの好みの音楽を紹介し、アプリの滞在時間を伸ばして、サブスクリプション契約までコンバージョンさせたいと考える。
「このユーザーのアプリ滞在時間を伸ばし、サブスクライブする為に、どんな音楽をレコメンドすれば、良いだろう?」という問いがあったとして、それに対する答えが「情報」となる。
それはただ単にデータを眺めていても答えを導き出すことはできない。すなわちデータがないとそもそもその答えを導き出す仮説も生み出すことができない。
「このバンドが好きなユーザーは他にどんなバンドを好きになる傾向があるか」、「どのような時間帯にどんな音楽を聴くのか」など、データと分析、解釈を合わせて、初めて情報が浮かび上がってくる。
自分たちが日々使っているあらゆるwebサービスは自分自身のデータを提供しながら、色々な情報を受け取っている。
ユーザーに有益な情報を提供する為にもデータベース設計はちゃんと理解しないといけないなと思ったところで今回は終わります。