Saya membuat API yang tenang. Saya berjuang untuk memutuskan cara terbaik untuk merancang tabel database saya di sekitar sumber daya saya.
Awalnya, saya pikir tabel per sumber daya akan menjadi cara yang baik untuk pergi, tetapi saya sekarang khawatir bahwa ini akan menghasilkan tabel secara eksponensial lebih besar semakin jauh ke bawah rantai sumber daya yang Anda tuju.
Sebagai contoh, bayangkan saya memiliki tiga sumber daya - pengguna, klien, penjualan. Pengguna adalah pelanggan api saya, klien adalah pelanggan pengguna, dan penjualan adalah pembelian yang dilakukan oleh setiap klien ke akun pengguna.
Sumber daya penjualan diakses sebagai berikut
GET /users/{userID}/clients/{clientID}/sales/{salesID}
Jadi jika ada 10 pengguna, masing-masing dengan 10 pelanggan, dan untuk setiap pelanggan ada 10 penjualan, ukuran tabel semakin besar semakin jauh ke bawah rantai sumber daya yang kami tuju.
Saya cukup yakin bahwa SQL dapat mengatasi tabel besar, tapi saya tidak yakin bagaimana membaca dan menulis akan memperlambat segalanya. Contoh di atas mungkin tidak menggambarkannya, tetapi api saya akan memiliki semakin banyak menulis dan membaca lebih lanjut di rantai sumber daya yang kita tuju. Karena itu saya punya skenario di mana tabel terbesar di database saya, akan dibaca dan ditulis lebih dari kali tabel kecil.
Gabungan tabel juga diperlukan sebelum menjalankan kueri. Alasannya adalah bahwa saya mengizinkan setiap pengguna untuk memiliki klien dengan nama yang sama. Untuk menghindari kesalahan data klien, tabel pengguna dan tabel klien digabungkan dengan {userID}. Ini juga berlaku untuk penjualan. Akankah bergabung dengan meja besar dan menjalankan membaca dan menulis memperlambat lebih lanjut?