Dit is de klassieke vraag over het overervingspatroon van tabellen en er zijn 3 gevestigde oplossingen:
Elk heeft voor- en nadelen. Je ging met de Class Table Inheritance, wat de meeste ontwikkelaars van nature doen, omdat het het ontwerpmodel van de code volgt en het er genormaliseerd uitziet. Maar is de slechter presterende, omdat het frequente joins vereist, invoegingen en updates duur zijn en de handhaving van de gegevensintegriteit complex is. Ik ben voorstander van het Single Table Inheritance-model:één en slechts één tabel, [Messages]
, vanwege zijn eenvoud en runtime-prestaties in het meest voorkomende toegangspatroon (bijv. Toon mijn 'inbox' is een eenvoudige en snelle query). Ik raad je aan om wat te testen met je voorgestelde model, onder belasting en met redelijk grote datasets.