Ditt schema ser helt okej ut, du kanske ser att de andra (inklusive jag själv idag) kom med ungefär samma struktur tidigare (Lagra meddelanden från olika chattar i en enda databastabell , Databasschema för en-till-en och gruppchatt , Skapa en privat trådad meddelandesystem som facebook och gmail ). Jag skulle verkligen vilja notera att din visuella representation är den bästa av allt, den är så lätt att förstå och följa :)
Generellt sett tycker jag att det är meningsfullt att ha "rum" ("chatta", "konversation") även om du inte har några specifika egenskaper för tillfället (som det kan vara name
, posting_allowed
, type
(dvs. om du återanvänder den liknande strukturen inte bara för privata meddelanden och chattar utan d.v.s. för offentliga inlägg med kommentarer) och så vidare. En enkel tabell med det enda index-ID:t bör vara supersnabb och ha nära noll overhead, men det kommer att tillåta förlängning ganska enkelt utan att behöva ändra all befintlig kod (dvs. en dag bestämmer du dig för att lägga till ett name
till chattar). Håller rums-ID-logiken "dold" inom participants
Tabellen kommer inte att vara transparent och inte heller effektiv (dvs. när du behöver hitta nästa ID för chatten), jag skulle inte rekommendera det.