数据库设计 - mongodb 如何设计包含收支明细的数据库?
阿神
阿神 2017-04-21 11:19:13
0
1
883
  • 用一个集合还是分成两个集合?
  • 如果用一个集合,收和支里包含的不同类型的数据怎么处理?
  • 如果分成两个集合,要显示收支明细,怎么查询?
阿神
阿神

闭关修行中......

membalas semua(1)
巴扎黑

Idea intuitif:

  • Jika koleksi digunakan, maka setiap dokumen perlu mempunyai medan untuk mengenal pasti sama ada jenis dokumen adalah butiran pendapatan atau butiran sokongan;
  • Jika dua kutipan digunakan, apabila memaparkan butiran pendapatan dan perbelanjaan, anda perlu menanyakan kutipan pendapatan dan kutipan perbelanjaan secara berasingan melalui dua pertanyaan, dan kemudian menggabungkannya untuk paparan
Mari analisa keperluan tidak khusus dalam soalan anda secara terperinci:

    Untuk koleksi, setiap rekod hasil dan perbelanjaan adalah dokumen yang diletakkan dalam koleksi Bagi jenis data yang berbeza, dokumen tersebut adalah skema percuma, jadi tiada masalah dalam penyimpanan data dan perbelanjaan. Cara memproses dan memaparkan jenis data yang berbeza memerlukan anda mentakrifkan struktur data dan komposisi medan butiran pendapatan dan perbelanjaan. Untuk pertanyaan, koleksi adalah sangat mudah Anda boleh membuat pertanyaan berdasarkan masa, dan kemudian memaparkan keputusan secara berasingan mengikut medan mengenal pasti pendapatan dan perbelanjaan
  • Jika anda membahagikannya kepada dua koleksi, tidak menjadi masalah untuk menyimpan jenis data yang berbeza, kerana anda menyimpannya secara berasingan Pada masa ini, koleksi itu pada dasarnya adalah dua jadual yang berbeza dalam hubungan db, masing-masing mengandungi datanya sendiri tanpa campur tangan antara satu sama lain; Untuk pertanyaan, lebih menyusahkan, anda perlu mengeluarkan butiran pendapatan dan perbelanjaan dari mongodb dalam dua kali mengikut masa, dan kemudian menggabungkan dan menyusun kedua-duanya dalam susunan kronologi masa, beban kerja pengisihan dipindahkan dari mongodb ke bahagian aplikasi.
Kedua-dua pilihan mempunyai kebaikan dan keburukan mereka sendiri Jika jumlah data yang anda miliki tidak terlalu besar, adalah disyorkan untuk menggunakan pilihan pertama, yang disimpan dalam koleksi dan mudah diakses Jika jumlah data adalah besar, anda boleh menggunakan pilihan kedua Pindahkan tekanan ke bahagian aplikasi Lagipun, pengembangan aplikasi lebih mudah daripada pengembangan pangkalan data.

Pendapat peribadi saya adalah menggunakan penyelesaian pertama, yang disimpan dalam koleksi Jika jumlah data tidak besar, tidak ada tekanan jika jumlah data adalah besar, butiran pendapatan dan perbelanjaan masa yang berbeza tempoh boleh disimpan dalam beberapa kali mengikut masa, apabila dipaparkan pada bahagian hadapan, dipaparkan mengikut tempoh masa. Dalam kes ini, apabila masa berlalu, anda hanya perlu meningkatkan koleksi secara mendatar, dan kod akses data tidak perlu ditukar Apabila membuat pertanyaan, anda hanya perlu menukar koleksi yang berbeza mengikut tempoh masa pertanyaan, iaitu mudah dan cekap.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan