Dans un composant forum question/réponse que je vous écris dans le cadre d'un site, j'ai deux tables qui semblent en théorie comme ceci (qui est, je veux dire les données conservées pour chaque entité):Dois-je combiner ces tables en une seule, ou les garder séparées?
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 (e.g. answer, comment to an answer etc.)
views
anonymous
La seule les vraies différences entre ces entités sont merge_id (si une question est fusionnée dans une autre, cet id référencera ledit question_id), suiveurs, et title. Les combiner en un semble un peu encombrant et gonflé pour moi, et semble commencer un peu dénormalisé je pense. Et, s'ils sont un, le corps et le titre devraient être nullable ce qu'ils ne devraient pas (je sais qu'il peut y avoir des sauvegardes dans le code).
Je pensais aussi d'avoir fil se composent des seuls attributs ne sont pas en poste qui ressemblerait à ceci:
THREAD
thread_id (or post_id which would be primary and foreign key refing POST)
title
merge_id
followers
mais qui ne se sent pas tout à fait raison non plus.
Aussi, si cela fait une différence, je prévois d'afficher les questions avec la réponse la plus élevée, assez souvent, dans le style de quora.
Des conseils de conception seraient les bienvenus.
(aussi, je les gardais quelqu'un générique (fil/post) de sorte que si nécessaire je peux utiliser ces tables pour un blog ou tout autre chose plus tard.)
https://www.postgresql.org/docs/9.6/static/tutorial-inheritance.html –
Ceci est une faq. Sous-typage de la base de données philipxy de stackoverflow.com de Google. – philipxy
la présentation de vos tables dans votre poste est plutôt étrange. Habituellement, on n'écrit pas côte à côte deux listes (de colonnes). Cela les rend difficiles à utiliser. Supposons que quelqu'un souhaite copier la liste des colonnes de la table des fils pour l'utiliser dans sa réponse. Un éditeur simple (fourni par la plupart des navigateurs) ne pouvait pas gérer cela efficacement. On doit copier les colonnes mot par mot. Les colonnes d'une ligne ne sont pas liées donc je ne vois aucun avantage à représenter cela de cette façon. – miracle173