Bonjour,
Je poursuis la création de mon CMS maison sous node.js et j'ai une question existentielle. Voici ma problématique : j'ai créé un template pour mes articles, ce dernier s'est trouvé si proche du template pour les topics de forums (là aussi une option que je développe) que je n'ai aucune différence de rendu entre les deux templates (exemple en dur ici vs ici). Et surtout les données de tables sont strictement les mêmes :
D'où ma question du moment : dois-je garder les deux tables séparées ou les fusionner en gardant une colonne pour les départager au moment d'une interrogation SQL sur cette unique table ?
Je suis tenté par la première solution pour son aspect pratique. Ce qui me gêne alors c'est la redondance, en même temps je serais moins limité si je devais étendre l'une ou l'autre table dans une direction spécifique...
Modifié par Olivier C (25 Jun 2024 - 13:23)
Je poursuis la création de mon CMS maison sous node.js et j'ai une question existentielle. Voici ma problématique : j'ai créé un template pour mes articles, ce dernier s'est trouvé si proche du template pour les topics de forums (là aussi une option que je développe) que je n'ai aucune différence de rendu entre les deux templates (exemple en dur ici vs ici). Et surtout les données de tables sont strictement les mêmes :
CREATE TABLE __article (
_id INT GENERATED BY DEFAULT AS IDENTITY,
_name VARCHAR(255) NOT NULL, -- titre
_alternative_headline VARCHAR(255) NULL, -- titre secondaire
_slug VARCHAR(255) UNIQUE NOT NULL, -- slug basé sur le titre
_content TEXT NULL, -- contenu
_created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- date de création
_modified_at TIMESTAMP NULL, -- date de révision
_type VARCHAR(30) NULL, -- article, page, etc...
_description VARCHAR(1000) NULL, -- contenu utilisé pour la balise meta description ; pas de limitation car les politiques des moteurs de recherche changent dans le temps.
_author_id INT NOT NULL, -- créateur du post (contributeur principal)
_status SMALLINT DEFAULT 1, -- brouillon = 0, publié = 1, privé = 2, refusé = 3, corbeille = 9
_is_readable BOOLEAN DEFAULT true, -- l'article peut être lu
_is_commentable BOOLEAN DEFAULT false, -- les commentaires sont activés
_is_visible_comments BOOLEAN DEFAULT true, -- les commentaires sont visibles
_add JSONB NULL, -- permet de stocker des données en vue des microdonnées (clef-valeurs sur une convention schema.org)
PRIMARY KEY (_id),
FOREIGN KEY (_author_id) REFERENCES __person(_id) ON DELETE SET NULL, -- CONSTRAINT __article__person_fkey
CONSTRAINT lowercase_and_hyphens_only CHECK (_slug ~ '^[a-z0-9-]+$') -- Minuscules anglaises, chiffres et tirets uniquement
);
D'où ma question du moment : dois-je garder les deux tables séparées ou les fusionner en gardant une colonne pour les départager au moment d'une interrogation SQL sur cette unique table ?
Je suis tenté par la première solution pour son aspect pratique. Ce qui me gêne alors c'est la redondance, en même temps je serais moins limité si je devais étendre l'une ou l'autre table dans une direction spécifique...
Modifié par Olivier C (25 Jun 2024 - 13:23)