TwitterのER図作成
フィヨルドブートキャンプのデータベースのプラクティスではTwitterのER図を作成しようという課題があります。これがまた難しかったので記録しておく。
参考書籍
まずは課題にとりかかる前に、3冊の本をこの順番に読んだ。
「楽々ERDレッスン」は全然楽じゃなくて難しかった。(でも何というか、読み物としておもしろかった。) 正規化は第3までしか読んでない。 最後の2冊はER図作成の課題をやりながら何度も読み返した。
設計手順
難しさの原因は設計に明確な正解がないことだと思うが、それぞれの本に記載されていた設計手順は以下の通り。
「達人に学ぶDB設計徹底指南書」より
- エンティティの抽出
- エンティティの定義
- 正規化
- ER図の作成
「楽々ERDレッスン」より
- イベントを見出す(行為:注文する、請求するなど)
- リソースを見出す(誰が、何を)
- テーブルの項目を入れていく
- リレーションシップを設定する
TwitterのER図作成
ざっくり要件
- 主要な機能が網羅されているか
- 正規化ができているか
- 他人がみて極端にわかりづらくなければOK
- 通常は英語なので英語で作成する(私はスネークケース、単数形で統一した)
苦労したこと
何からやればいいかわからなかった
とりあえずTwitterをさわりながら機能を書き出してみたけど、これをどうすれば...みたいな状態になった。機能を全部洗い出せばいいってわけじゃなくて、DBに必要かどうかの判断が必要。
中間テーブルと自己参照
進めていくうちに、中間テーブルと自己参照(再帰)を理解できていないから難しいんだなということがわかった。
中間テーブルとは、例えばツイートとユーザといいねの関係。 自己参照とは、ユーザとフォロワー、ミュート、リストの関係など。テーブル1つで表現する方法と2つにわける方法がある。
※フィヨルドの課題はこれからやる人もいるので、自分が作ったER図をバーン!と載せることは控えます。
他の人のER図
フィヨルドでは自分の課題にOKがもらえたら、先輩たちの提出物を見ることができるようになります。他の人のER図をのぞいてみると自分のよりも詳細に作り込んであるものが多かった。 明確な正解がないということがまた難しいところだけど、いろんなパターンがあることがまたおもしろい。
参考サイト
この次にはTwitterのURL設計の課題があります↓