To jest klasyczne pytanie dotyczące wzorca dziedziczenia tabeli i istnieją trzy ustalone rozwiązania:
Każdy ma plusy i minusy. Poszedłeś z dziedziczeniem tabel klas, które większość programistów w naturalny sposób robi, ponieważ jest zgodne z modelem projektowania kodu i wygląda na znormalizowane. Ale jest gorszy, ponieważ wymaga częstych łączeń, wstawiania i aktualizacje są drogie, a wymuszanie integralności danych jest skomplikowane. Zdecydowanie preferuję model dziedziczenia pojedynczej tabeli:jedna i tylko jedna tabela, [Messages]
, za jego prostotę i wydajność w czasie wykonywania w najczęstszym wzorcu dostępu (np. pokaż, że moja 'skrzynka odbiorcza' to proste i szybkie zapytanie). Zalecam przeprowadzenie kilku testów z proponowanym modelem, pod obciążeniem i z rozsądnie dużymi zestawami danych.