Tabela pentru mesaje private in Sql Server

Vreau sa creez un sistem de mesaje private intre useri si nu prea stiu cum sa fac entitatea, sau mai exact tabela/tabelele in baza de date. Am doua variante (img) !

Screenshot_13|661x500

API’ul este scris in ASP.NET Core si interogarile le fac cu Entity Framework. Pentru asta, nu cred ca ar fi diferenta prea mare daca am o tabela sau doua in baza de date (ar fi un Include in plus sau in minus)

Mai simpla parca ar fi varianta cu 2 tabele (Subiecte si Raspunsuri), dar parca n-as vrea sa cresc prea mult numarul de tabele din baza de date pentru chestii care pot fi comprimate intr-una singura. Ce nu-mi place la varianta cu o singura tabela, o sa am multe campuri NULL, mai ales pentru raspunsuri, unde Subject = NULL, iar in cazul subiectelor unde ParentId = NULL

O alta idee ce mi-a trecut prin minte … spatiul ocupat. Tineam minte de pe undeva, ca fiecare celula din tabela ocupa 1 UM (notez UM pentru ca nu stiu ce unitate de masura este :)) , si nu mai sunt sigur, dar parca celulele cu NULL nu ocupa nimic (daca e asa, spatiul ocupat in ambele variante 2tabele vs 1tabela este acelasi)

Deci, ce varianta este/ar fi practicata de voi? Si nu neaparat in cazul PMurilor, ci si in altele asemanatoare

Vei avea întotdeauna mesaje doar între doi utilizatori?

Tabel de conversatii + tabel de participanti la conversatie + tabel de mesaje (user_id + mesaj)

2 Likes

La alta varianta nu ma gandisem, ci strict la sistem PM. altceva ar insemna exact cum a detaliat Victor mai jos, conversatii, cu posibilitatea de a adauga noi useri in discutie. Cred ca varianta cea mai buna e cea a lui Victor, ar fi o dezvoltare mai completa decat ce am gandit eu :grin: multumesc