コミュニティ
記事
トピックス
に質問
学ぶ
コース
プログラミング辞典
ツールライブラリ
開発ツール
公式サイト
PHP ライブラリ
JS特殊効果
サイト素材
拡張プラグイン
レジャー
ゲームのダウンロード
ゲームのチュートリアル
日本語
简体中文
English
繁体中文
日本語
한국어
Melayu
Français
Deutsch
Login
singup
数据库设计 - mongodb 如何设计包含收支明细的数据库?
阿神
2017-04-21 11:19:13
0
1
874
用一个集合还是分成两个集合?
如果用一个集合,收和支里包含的不同类型的数据怎么处理?
如果分成两个集合,要显示收支明细,怎么查询?
1
0
0
阿神
闭关修行中......
全員に返信
(1)
返信します
近い
巴扎黑
2017-04-21 11:21:13
1棟
直感的なアイデア:
コレクションを使用する場合、各文書には、文書タイプが収入の詳細であるかサポートの詳細であるかを識別するフィールドが必要です。
2 つのコレクションを使用する場合、収入と支出の詳細を表示するときは、2 つのクエリを通じて収入のコレクションと支出のコレクションを別々にクエリし、それらを結合して表示する必要があります。
質問にある具体的でない要件を詳しく分析してみましょう:
コレクションの場合、各収益と支出の記録はコレクション内に配置されるドキュメントです。さまざまな種類のデータについては、ドキュメントは自由なスキーマであり、データの保存に問題があるわけではありません。データを処理して表示するには、収入と支出の詳細のデータ構造とフィールド構成を適切に定義する必要があります。クエリの場合、時間に基づいてクエリを実行し、収入と支出のタイプを識別するフィールドに応じて結果を個別に表示できます。
2 つのコレクションに分割する場合、異なる種類のデータを保存しても問題はありません。現時点では、コレクションは基本的にリレーショナル データベース内の 2 つの異なるテーブルであり、それぞれに干渉することなく独自のデータが含まれます。通常、mongodb から収入明細と支出明細を 2 回に分けて取り出し、それらを時系列にマージして並べ替える必要があります。ソートのワークロードは mongodb からアプリケーション側に転送されます。
どちらのオプションにもそれぞれ長所と短所があります。データの量がそれほど大きくない場合は、コレクションに保存され、アクセスが簡単な最初のオプションを使用することをお勧めします。結局のところ、アプリケーションの拡張はデータベースの拡張よりも便利です。
個人的な意見としては、データ量が多くない場合は、コレクションに保存される最初のソリューションを使用することをお勧めします。データ量が多い場合は、さまざまな期間の収入と支出の詳細を保存できます。フロントエンドに表示する場合、時間帯に応じて複数のコレクションを表示します。この場合、時間の経過とともにコレクションを水平方向に増やすだけで済み、クエリの際にデータ アクセス コードを変更する必要はなく、クエリの期間に応じて異なるコレクションを切り替えるだけで済みます。シンプルかつ効率的。
いいねを押す
+0
返信を追加
关闭回复
阿神
返事
人気のトピック
詳細>
CakePHP チュートリアル
Laravel チュートリアル
PHP チュートリアル
Java チュートリアル
人気の記事
PEPUコインは100倍コインになるのでしょうか?
使いやすく安全な通貨取引プラットフォームのトップ 10 信頼性の高い通貨取引ソフトウェア アプリのトップ 10。
C の .h (ヘッダー) ファイルと .cpp (コード) ファイルの違いは何ですか?
文字列の不変性を考慮すると、JavaScript 文字列ビルダーは必要ですか?
ルマ島: プロペラの見つけ方
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)
1423294
PHP 入門チュートリアル 1: 1 週間で PHP を学ぶ
4268797
JAVA 初心者向けビデオチュートリアル
2536694
最新の ThinkPHP 5.1 ワールドプレミアビデオチュートリアル (PHP エキスパートになるための 60 日間のオンライン トレーニング コース)
1423294
JAVA 初心者向けビデオチュートリアル
2536694
Little Turtle のゼロベースの Python 学習入門ビデオ チュートリアル
507482
Web フロントエンド開発の簡単な紹介
215867
PSビデオチュートリアルをゼロからマスターする
890447
[Web フロントエンド] Node.js クイック スタート
7475
海外のWeb開発フルスタックコースの完全なコレクション
5974
Go言語実践GraphQL
4938
550W ファンマスターが JavaScript をゼロから段階的に学習します
697
Python マスター Mosh、基礎知識ゼロの初心者でも 6 時間で始められる
24743
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
[フォームボタン] jQuery エンタープライズ メッセージ フォームの連絡先コード
[プレイヤーの特殊効果] HTML5 MP3 オルゴール再生効果
[メニューナビゲーション] HTML5 クールなパーティクル アニメーション ナビゲーション メニューの特殊効果
[フォームボタン] jQuery ビジュアル フォームのドラッグ アンド ドロップ編集コード
[プレイヤーの特殊効果] VUE.JS 模倣 Kugou 音楽プレーヤー コード
[html5特殊効果] 古典的な HTML5 プッシュ ボックス ゲーム
[画像の特殊効果] 画像効果を追加または削減するための jQuery スクロール
[フォトアルバム効果] CSS3 個人アルバム カバー ホバー ズーム効果
[ブートストラップ テンプレート] 有機果物と野菜のサプライヤー Web テンプレート Bootstrap5
[バックエンドテンプレート] Bootstrap3 多機能データ情報バックグラウンド管理レスポンシブ Web ページ テンプレート-Novus
[ブートストラップ テンプレート] 不動産リソース サービス プラットフォーム Web ページ テンプレート Bootstrap5
[ブートストラップ テンプレート] シンプルな履歴書情報 Web テンプレート Bootstrap4
[ブートストラップ テンプレート] ブートストラップ レスポンシブ ワイドスクリーン ブック教育 Web サイト テンプレート-DREAMLIFE
[バックエンドテンプレート] MAC スタイルのレスポンシブ ブルー エンタープライズ CMS バックグラウンド管理システム テンプレート
[バックエンドテンプレート] レスポンシブなグラデーション雰囲気の背景管理システムのウェブサイトのテンプレート-usinessbox
[ブートストラップ テンプレート] レスポンシブな野菜と果物の店のウェブサイト テンプレート-Organio
[PNG素材] かわいい夏の要素のベクター素材 (EPS+PNG)
[PNG素材] 4 つの赤い 2023 卒業バッジ ベクター素材 (AI+EPS+PNG)
[バナー画像] 歌う鳥と花がいっぱいのカートデザイン春のバナーベクター素材(AI+EPS)
[PNG素材] 金色の卒業帽ベクター素材(EPS+PNG)
[PNG素材] 黒と白のスタイルの山アイコン ベクター素材 (EPS+PNG)
[PNG素材] 異なる色のマントと異なるポーズを持つスーパーヒーローのシルエットベクター素材(EPS+PNG)
[バナー画像] フラット スタイルの植樹祭バナー ベクター素材 (AI+EPS)
[PNG素材] 9つのコミックスタイルの爆発するチャットバブルベクター素材(EPS+PNG)
[フロントエンドテンプレート] 室内装飾クリーニングおよび修理サービス会社のウェブサイトのテンプレート
[フロントエンドテンプレート] フレッシュカラーの個人履歴書ガイドページテンプレート
[フロントエンドテンプレート] デザイナーのクリエイティブな仕事の履歴書 Web テンプレート
[フロントエンドテンプレート] 現代のエンジニアリング建設会社のウェブサイトのテンプレート
[フロントエンドテンプレート] 教育サービス機関向けのレスポンシブ HTML5 テンプレート
[フロントエンドテンプレート] オンライン電子書籍ストア モールのウェブサイト テンプレート
[フロントエンドテンプレート] IT テクノロジーがインターネット企業の Web サイト テンプレートを解決します
[フロントエンドテンプレート] パープルスタイル外国為替取引サービスウェブサイトテンプレート
直感的なアイデア:
2 つのコレクションに分割する場合、異なる種類のデータを保存しても問題はありません。現時点では、コレクションは基本的にリレーショナル データベース内の 2 つの異なるテーブルであり、それぞれに干渉することなく独自のデータが含まれます。通常、mongodb から収入明細と支出明細を 2 回に分けて取り出し、それらを時系列にマージして並べ替える必要があります。ソートのワークロードは mongodb からアプリケーション側に転送されます。-
- どちらのオプションにもそれぞれ長所と短所があります。データの量がそれほど大きくない場合は、コレクションに保存され、アクセスが簡単な最初のオプションを使用することをお勧めします。結局のところ、アプリケーションの拡張はデータベースの拡張よりも便利です。
個人的な意見としては、データ量が多くない場合は、コレクションに保存される最初のソリューションを使用することをお勧めします。データ量が多い場合は、さまざまな期間の収入と支出の詳細を保存できます。フロントエンドに表示する場合、時間帯に応じて複数のコレクションを表示します。この場合、時間の経過とともにコレクションを水平方向に増やすだけで済み、クエリの際にデータ アクセス コードを変更する必要はなく、クエリの期間に応じて異なるコレクションを切り替えるだけで済みます。シンプルかつ効率的。