Esta es la pregunta clásica del patrón de herencia de tablas y hay 3 soluciones establecidas:
Cada uno tiene pros y contras. Optó por la herencia de la tabla de clases, que es lo que la mayoría de los desarrolladores tienden a hacer de forma natural, ya que sigue el modelo de diseño del código y parece normalizado. Pero es el de peor desempeño, ya que requiere uniones frecuentes, las inserciones y las actualizaciones son costosas y la aplicación de la integridad de los datos es compleja. Estoy muy a favor del modelo de herencia de tabla única:una y solo una tabla, [Messages]
, por su sencillez y rendimiento en tiempo de ejecución en el patrón de acceso más frecuente (por ejemplo, mostrar mi 'bandeja de entrada' es una consulta simple y rápida). Le recomiendo que haga algunas pruebas con su modelo propuesto, bajo carga y con conjuntos de datos razonablemente grandes.