前のパートに戻る 完了して次のパートへ  

  1-4 データベース設計

次にデータベースのテーブル設計について考えます。

どの種類のデータベースを使うか

データベースにはいくつか種類があり、代表的なものは以下の3つです。

今回はRDBを選びます。 理由は次の2つ。

  • 商品やカートの情報は決まっていて変化しない。
  • Laravelでデータを扱う基本的な方法がRDBを使う事を前提としている。

無料で使えるRDBの中でも人気のあるmysqlを使っていきます。

テーブルの種類を洗い出す


データを格納するテーブルの種類を洗い出していきます。 機能リストを元に考えると以下のテーブルが必要になるでしょう。

  • ログインユーザー情報
  • 商品情報
  • カート

実際のECサイトではこの他に「カテゴリ情報」や「レビュー」「注文履歴」など他にも様々なデータが必要ですが、今回はデモなので省く事にします。

次にそれぞれのテーブルの構造を考えていきましょう。

ログインユーザー情報


ログインユーザー情報については、実はLaravelがあらかじめ用意してくれています。

Laravelが用意しているユーザーに関するテーブル2つあります。 定義を見て見ましょう。

ユーザー情報

ユーザー名やメールアドレス、パスワードなど、ユーザー登録に必要な情報は全てそろっています。

さらにメールアドレス確認機能で使うemail_verified_atや、

2回目からパスワード入力を省略する機能(Remember Me)を使うためのremember_tokenなども自動的に実装されます。

パスワードリセット用情報

パスワードリセット用のテーブルもあらかじめ定義されています。

この教材では意識する事はありませんが、一応見ておきます。

パスワードリセットでユーザーが入力したメールアドレスと、自動生成されたトークンが保存されるようになっています。

商品情報


商品情報についは今回のアプリでは以下のように定義します。

商品情報もかなり簡略化しています。

実際のECサイトでは「詳細説明」「商品コード」「在庫数」などが必要になるでしょう。 余裕があれば自分自身で機能を追加してみてください。

カート内の商品情報


カート内の商品情報は以下のようにします。

カート内の商品情報はユーザーIDと商品IDを持っています。

これによって、カートが誰のもので、どの商品をカートに入れているのかが分かるようになります。

ユーザー、商品、カート内の商品のように相互に関連しているデータを表した図をER図といって、設計の際に使われます。

最後にPlantUMLでER図を書いてみます。

ER図を書く


ER図は図1-4-1のようになります。

ユーザーはカート内の商品を複数持ち、

カート内の商品は商品の情報を一つだけ持つという事を意味しています。

remember_tokenなどのデータ構造とあまり関係ない部分は省いています。)

図1-4-1 ER図

ER図を書く事で、データベース全体の構造が視覚的に理解できます。

表や文字だけでは表現しずらいデータ間の関連が表現できるので、他の開発者に説明したり、自分自身が設計を理解するのに役立つでしょう。

参考までに、以下はPlantUMLのコードです。

@startuml

entity ユーザー {
    + ユーザーID
    --
    ユーザー名
    メールアドレス
    パスワード
    電話番号
    FAX番号
}

entity 商品 {
    + 商品ID
    --
    商品名
    価格
}

entity カート内の商品 {
    + カート内の商品ID
    --
    # ユーザーID
    # 商品ID
    数量
}

ユーザー -o{ カート内の商品
カート内の商品 }o-|| 商品

@enduml

設計に関しては以上となります。

次はいよいよLaravelの開発環境の構築をしていきます。

議論

0 質問

このコースの評価は?