Bonsoir,
Ton application manipule 3 types d'objets : catégorie, article et page.
L'objectif est de parvenir à une représentation de ces trois types d'objets qui soit à la fois la plus conforme possible à la réalité et la plus facile à manipuler possible.
Voyons les relations entre les types d'objets (i.e. la table et la classe), par ex entre article et catégorie:
- 1 article appartient à une catégorie (on va simplifier, et supposer qu'il n'appartient qu'à une seule et unique catégorie)
- une catégorie contient un ou plusieurs articles.
Dans la conception de tes tables, cela suppose que chaque table article garde une référence à la catégorie à laquelle il appartient. C'est idCategorie dans ta table. Mais pour marquer cette relation, pour la renforcer, il faut imposer des contraintes : chaque article doit appartenir à une catégorie (même si cette catégorie est 'non classé'). idCategorie doit donc être définie comme étant une foreign key (clé étrangère), et référencer directement une catégorie de la table Categorie.
Les clés étrangères ne sont possible que si ta table est en innoDB. Regarde la doc pour plus de détails sur les clés étrangères. Ça t'asure par exemple qu'aucune catégorie n'est malencontreusement effacée alors qu'elle contient encore des articles, ou à contrario que la suppression d'une catégorie détruit tous les articles liés, ou qu'aucun article sans Catégorie ne soit écrit, etc...
Du côté de la représentation objet, la relation article->catégorie se manifeste par le fait que chaque objet article détient une référence sur sa catégorie:
, et tu accède à la catégorie de la page à partir de cet idCatégorie par le traditionnel getter
public function getIdCategory()
Tu te serviras ensuite de l'ID ainsi retourné pour effectuer une recherche sur la catégorie correspondante dans la table.
L'objectif est donc qu'à partir d'un article, tu puisses retrouver la catégorie à laquelle il appartient, modifier cette catégorie voire plus tard ajouter une nouvelle catégorie. Donc, tu ne peux pas créer une classe article sans référence à sa catégorie, c'est-à-dire complètement autonome.
Je suppose que c'est ce que tu entends par indépendance : isoler totalement chaque classe et ne pas les pourvoir de références à d'autres objets. Dans ton cas, ce n'est pas , à mon avis, recommandé.
Partager