0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MongoDBで作る群馬県民のためのアプリ、基盤が固まった日!

Posted at

開発日記11日目:データベース設計完成!Gunma Naviの情報が形になり始めました!📊✨

群馬県民がもっと地元イベントを楽しめるように!イベント発見アプリ「Gunma Navi」を個人開発している🐮です!


🎮 今日達成した"ゲームで言うと"

「重要アイテムを入手して、次のステージへの扉が開いた状態」🔑🚪


🌟 今日のハイライト

✅ データベースのテーブル設計完了!

✅ 各テーブルのカラムとデータ型を決定!

✅ データベース構築の土台が完成!


🛠 今日の作業内容

  1. データベースのテーブル設計

    昨日設計したデータモデルを元に、具体的なデータベースのテーブル設計を行いました。使用するデータベースはMongoDBなので、正確にはコレクションとドキュメントの設計ですね。

    • ユーザーコレクション

    • イベントコレクション

    • コメントコレクション

    • カテゴリーコレクション

    • お気に入りコレクション

    • 場所コレクション

  2. 各テーブル(コレクション)のカラム(フィールド)とデータ型の決定

    各コレクションのフィールドと、そのデータ型を詳細に定義しました。

    • ユーザーコレクション

      フィールド名 データ型 説明
      _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 場所登録日時

🔍 テーブル設計のポイント

  1. データ型の選定

    • 日付や日時はすべてDate型で統一し、時間帯によるイベントのフィルタリングを容易にしました。

    • 緯度経度はNumber型で保存し、地図表示や位置情報検索に対応。

  2. パフォーマンスを意識した設計

    • 頻繁に検索されるフィールド(event_namecategory_idなど)にはインデックスを設定予定。

    • ユーザーのパスワードはセキュリティを考慮し、ハッシュ化して保存。

  3. 将来の拡張性

    • 必要に応じてフィールドを追加できるよう、MongoDBのスキーマレスな特性を活かした設計。

    • お気に入りコレクションを中間コレクションとすることで、多対多の関係を柔軟に管理。


🗾 群馬愛ある開発のこだわり

「イベント情報には、地元の人しか知らない豆知識フィールドを追加予定!
例えば、イベントの裏話やおすすめの楽しみ方など、群馬の魅力を深く知ってもらえる工夫を盛り込みます📚🍶」


💬 読者のみなさんに質問!

「アプリであったら便利だと思うデータ項目や機能はありますか?
例えば、イベントの混雑予想や、天気情報など。あなたのアイデアをぜひコメントで教えてください!😊」


💡 今日の気づきと学び

成功した点

  • 具体的なテーブル設計が完了

    • データ型やフィールド名を明確にしたことで、実装時のミスを減らせそうです。
  • パフォーマンスとセキュリティに配慮

    • インデックス設定やパスワードのハッシュ化など、基盤部分での重要なポイントを押さえられました。

改善が必要な点

  • データの正規化と非正規化のバランス

    • パフォーマンスと柔軟性を天秤にかけながら、最適な設計を探る必要があります。
  • バリデーションの設計

    • データ入力時の検証ルールを詳細に決めておくことで、品質の高いデータを保持できます。

🚀 次回予告:システムアーキテクチャ設計とフロントエンド・バックエンドの連携

  • アプリ全体の基本的なシステムアーキテクチャを設計します。

  • フロントエンドとバックエンドの通信方法、データの流れを明確化!

  • いよいよアプリが動き始める準備段階に突入です!🔥


今日のひとこと

データベースの設計が完了し、アプリの土台がしっかりと固まりました!
コードを書き始めるのが待ち遠しい気持ちと同時に、設計の重要性を改めて実感しています。
群馬の素晴らしいイベント情報を効率的に提供できるよう、引き続き頑張ります!💪


最後までお読みいただきありがとうございます!

皆さんの応援やフィードバックが本当に励みになります。
コメントやいいね、お待ちしています!😊

明日も引き続き頑張りますので、よろしくお願いします!では、また明日〜!👋

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?