開発日記11日目:データベース設計完成!Gunma Naviの情報が形になり始めました!📊✨
群馬県民がもっと地元イベントを楽しめるように!イベント発見アプリ「Gunma Navi」を個人開発している🐮です!
🎮 今日達成した"ゲームで言うと"
「重要アイテムを入手して、次のステージへの扉が開いた状態」🔑🚪
🌟 今日のハイライト
✅ データベースのテーブル設計完了!
✅ 各テーブルのカラムとデータ型を決定!
✅ データベース構築の土台が完成!
🛠 今日の作業内容
-
データベースのテーブル設計
昨日設計したデータモデルを元に、具体的なデータベースのテーブル設計を行いました。使用するデータベースはMongoDBなので、正確にはコレクションとドキュメントの設計ですね。
-
ユーザーコレクション
-
イベントコレクション
-
コメントコレクション
-
カテゴリーコレクション
-
お気に入りコレクション
-
場所コレクション
-
-
各テーブル(コレクション)のカラム(フィールド)とデータ型の決定
各コレクションのフィールドと、そのデータ型を詳細に定義しました。
-
ユーザーコレクション
フィールド名 データ型 説明 _id
ObjectId 主キー username
String ユーザー名 email
String メールアドレス password
String パスワード(ハッシュ化) created_at
Date アカウント作成日時 -
イベントコレクション
フィールド名 データ型 説明 _id
ObjectId 主キー event_name
String イベント名 description
String イベント詳細 start_date
Date 開始日時 end_date
Date 終了日時 category_id
ObjectId カテゴリー参照ID(外部キー) location_id
ObjectId 場所参照ID(外部キー) created_at
Date イベント登録日時 -
コメントコレクション
フィールド名 データ型 説明 _id
ObjectId 主キー user_id
ObjectId ユーザー参照ID(外部キー) event_id
ObjectId イベント参照ID(外部キー) comment_text
String コメント内容 rating
Number 評価(1〜5) created_at
Date コメント投稿日時 -
カテゴリーコレクション
フィールド名 データ型 説明 _id
ObjectId 主キー category_name
String カテゴリー名 created_at
Date カテゴリー登録日時 -
お気に入りコレクション
フィールド名 データ型 説明 _id
ObjectId 主キー user_id
ObjectId ユーザー参照ID(外部キー) event_id
ObjectId イベント参照ID(外部キー) -
場所コレクション
フィールド名 データ型 説明 _id
ObjectId 主キー address
String 住所 latitude
Number 緯度 longitude
Number 経度 access_info
String アクセス方法 created_at
Date 場所登録日時
-
🔍 テーブル設計のポイント
-
データ型の選定
-
日付や日時はすべて
Date
型で統一し、時間帯によるイベントのフィルタリングを容易にしました。 -
緯度経度は
Number
型で保存し、地図表示や位置情報検索に対応。
-
-
パフォーマンスを意識した設計
-
頻繁に検索されるフィールド(
event_name
やcategory_id
など)にはインデックスを設定予定。 -
ユーザーのパスワードはセキュリティを考慮し、ハッシュ化して保存。
-
-
将来の拡張性
-
必要に応じてフィールドを追加できるよう、MongoDBのスキーマレスな特性を活かした設計。
-
お気に入りコレクション
を中間コレクションとすることで、多対多の関係を柔軟に管理。
-
🗾 群馬愛ある開発のこだわり
「イベント情報には、地元の人しか知らない豆知識フィールドを追加予定!
例えば、イベントの裏話やおすすめの楽しみ方など、群馬の魅力を深く知ってもらえる工夫を盛り込みます📚🍶」
💬 読者のみなさんに質問!
「アプリであったら便利だと思うデータ項目や機能はありますか?
例えば、イベントの混雑予想や、天気情報など。あなたのアイデアをぜひコメントで教えてください!😊」
💡 今日の気づきと学び
成功した点
-
具体的なテーブル設計が完了
- データ型やフィールド名を明確にしたことで、実装時のミスを減らせそうです。
-
パフォーマンスとセキュリティに配慮
- インデックス設定やパスワードのハッシュ化など、基盤部分での重要なポイントを押さえられました。
改善が必要な点
-
データの正規化と非正規化のバランス
- パフォーマンスと柔軟性を天秤にかけながら、最適な設計を探る必要があります。
-
バリデーションの設計
- データ入力時の検証ルールを詳細に決めておくことで、品質の高いデータを保持できます。
🚀 次回予告:システムアーキテクチャ設計とフロントエンド・バックエンドの連携
-
アプリ全体の基本的なシステムアーキテクチャを設計します。
-
フロントエンドとバックエンドの通信方法、データの流れを明確化!
-
いよいよアプリが動き始める準備段階に突入です!🔥
✨ 今日のひとこと
データベースの設計が完了し、アプリの土台がしっかりと固まりました!
コードを書き始めるのが待ち遠しい気持ちと同時に、設計の重要性を改めて実感しています。
群馬の素晴らしいイベント情報を効率的に提供できるよう、引き続き頑張ります!💪
最後までお読みいただきありがとうございます!
皆さんの応援やフィードバックが本当に励みになります。
コメントやいいね、お待ちしています!😊
明日も引き続き頑張りますので、よろしくお願いします!では、また明日〜!👋