En un componente del foro de preguntas/respuestas que estoy escribiendo como parte de un sitio, tengo dos tablas que teóricamente se ven así (es decir, quiero que se mantengan dichos datos para cada entidad):
THREAD POST thread_id post_id type_id (question) writer_id writer_id thread_id title parent_id body (optional) post_body followers date merge_id upvotes date dnvotes upvotes replies dnvotes views replies post_type_id (eg answer, comment to an answer etc.) views anonymousLas únicas diferencias reales entre estas entidades son merge_id (si una pregunta se fusiona con otra, esta identificación hará referencia a dicha pregunta), seguidores y título. Combinarlos en uno me parece un poco engorroso e hinchado, y creo que parece estar comenzando un poco desnormalizado. Y, si son uno, tanto el cuerpo como el título tendrían que ser anulables, lo cual no deberían (sé que puede haber salvaguardas en el código).
También pensé en hacer que el hilo consistiera solo en los atributos que no están en la publicación, que se verían así:
THREAD thread_id (or post_id which would be primary and foreign key refing POST) title merge_id followerspero eso tampoco se siente del todo bien.
Además, si hace alguna diferencia, planeo mostrar las preguntas junto con la respuesta de mayor rango con bastante frecuencia, al estilo de quora.
Cualquier consejo de diseño sería muy apreciado.
(Además, los mantendré como alguien genérico (hilo/publicación) para que, si es necesario, pueda usar estas tablas para un blog o cualquier otra cosa más adelante).
Me parece que estas deberían ser dos tablas separadas.
Para ayudarte con la decisión, infórmate de cómo los vas a utilizar.
Si los trata de la misma manera en sus consultas SQL y, por lo general, no le importa si algo es una publicación o un hilo, tendría sentido usar una sola tabla. Si los trata de manera diferente (lo que esperaría), use dos tablas.