はじめに
Laravelの学習を目的にホテル予約システムの作成をしました。これは設計段階の備忘録になります。
要件定義(管理画面)
ホテル予約システムに必要な要件を書き出します
ユーザー管理(マスターアカウント)
- ユーザー情報を閲覧、追加、編集、削除できる機能(CRUD)
- ユーザーアカウントの権限設定(管理者、スタッフなど)
客室管理
- 客室情報の閲覧、追加、編集、削除できる機能(CRUD)
- 料金設定、利用可能数、部屋タイプなどの設定管理機能
予約管理
- 予約情報の一覧表示、予約詳細表示、変更、キャンセル(CRUD)
料金設定
- 料金プランの管理機能
- セット料金、割引、限定商品などの登録管理(CRUD)
通知機能
- 予約を実施した場合の通知
- ユーザーからキャンセルされた場合の通知
セキュリティ
- システムを守るためのセキュリティ機能
詳細設計
ユーザー画面
管理者画面
それぞれCRUD機能を実装
データベース設計について
上記の機能に必要なテーブルを記述します
users(ユーザー)テーブル
- ユーザーの基本情報を記述します
(ユーザーID,名前,メールアドレス,パスワードなど) - ユーザーの権限
(管理ユーザー,一般ユーザーの役割を示すフィールド)
rooms(客室)テーブル
- 客室に関する情報を記述します
(部屋ID,部屋タイプ,料金,設備,利用可能数など)
reservations(予約)テーブル
- 予約に関する情報
(予約ID,ユーザーID,部屋,予約日,チェックイン,チェックアウト)
reviews(レビュー)テーブル
- レビューや評価に関する情報
(レビューID,ユーザーID,部屋ID,評価,コメントなど)
リレーション関係のテーブルについて
users(ユーザー)と reservations(予約)
- 一般ユーザーアカウントと予約情報を関連付けます
rooms(客室)と reservations(予約)
- 部屋と予約情報を関連付けします
テーブルについて
Users Table
Column | Data Type | Description |
---|---|---|
User ID | INT | ユーザーの一意の識別子 |
Name | VARCHAR | ユーザーの名前 |
VARCHAR | ユーザーのメールアドレス | |
Password | VARCHAR | パスワードのハッシュまたは暗号化 |
Role | VARCHAR | ユーザーの役割や権限を示すフィールド |
Rooms Table
Column | Data Type | Description |
---|---|---|
Room ID | INT | 客室の一意の識別子 |
Room Type | VARCHAR | 部屋の種類やタイプ |
Price | DECIMAL | 部屋の料金 |
Amenities | VARCHAR | 部屋の設備や提供されるもの |
Available Count | INT | 利用可能な部屋の数 |
Reservations Table
Column | Data Type | Description |
---|---|---|
Reservation ID | INT | 予約の一意の識別子 |
User ID | INT | 予約をしたユーザーのID |
Room ID | INT | 予約された部屋のID |
Reservation Date | DATE | 予約が行われた日付 |
Check-in Date | DATE | チェックインの日付 |
Check-out Date | DATE | チェックアウトの日付 |
Payment Info | VARCHAR | 支払いに関する情報 |
Reviews Table
Column | Data Type | Description |
---|---|---|
Review ID | INT | レビューの一意の識別子 |
User ID | INT | レビューをしたユーザーのID |
Room ID | INT | レビュー対象の部屋のID |
Rating | INT | レビューの評価 |
Comment | TEXT | レビューのコメントや内容 |