見出し画像

The Web Developer Bootcamp 2023 セクション44/61

はじめに
MongoDBは、Webアプリケーションによく使われるNoSQLデータベースです。SQLデータベースと比較して、データの構造化方法に柔軟性と自由度がありますが、これは同時に、データを構造化する最適な方法を見つけ出すことが困難であることも意味します。このブログ記事では、MongoDBでデータエンティティ間のさまざまな関係をモデル化する方法と、参照、埋め込み、正規化という概念について説明します。

SQL リレーションシップ
SQLデータベースは、あるテーブルの情報を別のテーブルで参照したり、新しい関係テーブルを作成することで、関係をモデル化します。例えば、SQLデータベースでは、特定の投稿をユーザーに関連付けるために、ユーザーテーブルを投稿テーブルで参照することができます。多対多の関係は、SQLデータベースでは第3のテーブルを使ってモデル化されます。

MongoDBと1対多のリレーションシップ
MongoDB では、関係は情報を埋め込むか、情報を参照するかのどちらかでモデル化されます。一対多の関係は、ウェブ開発ではコメントやレビュー、投稿といったユーザーとその関連データを扱うときによく使われます。MongoDBでは、1対多の関係は、「多」の数によって、1対少、1対多、1対多の3つに大別されます。どのような構造にするかは、データ量と効率化の必要性から判断する必要があります。

MongooseとMongoDBのスキーマ設計
Mongooseは、MongoDBと連携するための便利な方法を提供する人気のNode.jsライブラリです。スキーマを定義し、Mongooseのモデルメソッドを使用して、関連するデータを含むユーザーのモデルを作成する方法を提供します。MongoDBでは、MongoDB公式ブログが提供するMongoDBスキーマ設計の6つの経験則があり、MongoDBで利用できる柔軟性と選択肢を理解するのに役立ちます。これらのルールには、情報を埋め込むことを優先する、無制限に成長する配列を避ける、非正規化する際に読み書き比を考慮する、などがあります。

まとめ
結論として、MongoDBにおけるリレーションシップは厄介ですが、参照、埋め込み、正規化の概念を理解することで、データをどのように構造化するかという意思決定の指針となります。MongoDBの使い方やスキーマ設計の指針となるべき大原則は、データがどのように使われ、アクセスされ、どのような情報が頻繁に、一緒に必要とされるかです。決まったルールはなく、それぞれの状況に応じて、参照、埋め込み、双方向参照、データの複製など、データをどのように構造化するかを決定する必要があります。時間をかけて練習すれば、MongoDBのスキーマ設計をマスターするのは簡単なことでしょう。

次のページへ

前のページへ

まとめページへ

「超勇敢なウサギ」へ

この記事が気に入ったらサポートをしてみませんか?