Skema Anda terlihat baik-baik saja, Anda mungkin melihat yang lain (termasuk saya hari ini) datang dengan struktur yang kurang lebih sama sebelumnya (Menyimpan pesan dari obrolan yang berbeda dalam satu tabel database , Skema database untuk obrolan pribadi dan grup , Membuat pribadi berutas sistem pesan seperti facebook dan gmail ). Saya benar-benar ingin mencatat bahwa representasi visual Anda adalah yang terbaik, sangat mudah dipahami dan diikuti :)
Secara umum, saya pikir memiliki "ruangan" ("obrolan", "percakapan") masuk akal bahkan jika Anda tidak memiliki properti khusus saat ini (karena mungkin name
, posting_allowed
, type
(yaitu jika Anda menggunakan kembali struktur serupa tidak hanya untuk pesan dan obrolan pribadi, tetapi juga untuk pos publik dengan komentar) dan seterusnya. Tabel tunggal dengan ID indeks tunggal harus super cepat dan memiliki hampir nol overhead, namun akan memungkinkan ekstensi cukup mudah tanpa perlu mengubah semua kode yang ada (yaitu suatu hari Anda memutuskan untuk menambahkan name
untuk mengobrol). Menjaga logika roomID "tersembunyi" di dalam participants
tabel tidak akan transparan dan tidak efisien (yaitu ketika Anda perlu menemukan ID obrolan berikutnya), saya tidak akan merekomendasikannya.