Imaginad que estéis desarrollando una aplicación en la que distintas entidades pueden mandar mensajes públicos e interactuar con los mensajes de otras entidades. Esas entidades pueden ser de varios tipos: usuarios simplemente, una administración pública, un centro de enseñanza, etc.
Para diseñar la BD se me ocurren dos opciones que creo que funcionarían pero no sé cuál es mejor o si hay alguna mejor aún que no se me haya ocurrido.
Opción 1: Tener una tabla por cada entidad. Para almacenar los mensajes que las entidades publican tendría que tener en la tabla donde almaceno los mensajes al menos dos campos para identificar a la entidad que lo publicó, su id y su tipo.
Opción 2: Crear una sola tabla (tbl_entidades, por ejemplo) de la que heredan el resto de entidades posibles. De esta forma, en la tabla donde se almacenan los mensajes sólo haría falta una clave foránea que apuntara a la id de la entidad que lo publicó. Esta opción me parece mejor que la anterior, pero el problema es que en la tabla de entidades no encuentro apenas atributos que sean comunes a todas las entidades. De hecho solo encuentro el
slug, porque ni el nombre creo que valiese la pena meterlo en esa tabla, aunque tanto usuarios como otras entidades tienen uno.
¿Cuál os parece mejor? ¿Hay alguna alternativa mejor que no se me haya ocurrido?
Si os parece mejor la opción 2, ¿hace falta que las tablas que heredan de la tabla de entidades tengan su propio id o con definir como clave primaria el id que apunta a la tabla entidades es suficiente?
Gracias