8796 sujets

Développement web côté serveur, CMS

bonjour!

je sais pas si mon message a sa place ici mais je tente...

pour mon projet pro BTS info je fais un CMS en php/mysql, j'ai un soucis sur le plan conceptuel : dans la BDD un article peut être lié à une ou plusieurs catégories, et des catégories peuvent être liées entre elles par une filiation.

genre un article qui parle de tournois de tennis appartient à la catégorie tennis, elle-même appartient à la catégorie sport. Je voudrais avoir une certaine souplesse dans cette gestion. Mon prof de systèmes avancés m'a parlé d'identifiant relatif mais j'ai fait des recherches et cela me semble pas convenir à mon cas.

Vous avez une petite idée ?
Salut Chris Smiley cligne ,

effectivement Merise (Hubert pour les intimes Smiley lol ) n'aime pas trop qu'une entité appartienne à elle-même... Concrêtement - et quand on n'a vraiment pas d'autre choix - on s'en sort en employant diverses ruses plus ou moins 'propres' et plus ou moins contraignantes dans la pratique...

A moins (et il me semble que c'est ton cas Smiley murf ) de pouvoir créer une nouvelle entité 'parente', ce qui simplifie la vie (= le développement) et fait plaisir à Hubert.

Dans ton exemple il semble bien que tennis soit une sous-catégorie de sport, non ? Smiley rolleyes

Du coup, en créant une nouvelle entité 'sous-catégorie' et en rajoutant une relation (0,n) <--> (1,1) avec l'entité 'catégorie', ton article n'a plus qu'à pointer vers la sous catégorie tennis pour que le lien vers la catégorie sport soit également réalisé. Et dans le cas d'une catégorie sans sous-ensemble, l'article pointera directement sur la catégorie...

A+
Heyoan a écrit :

Du coup, en créant une nouvelle entité 'sous-catégorie' et en rajoutant une relation (0,n) <--> (1,1) avec l'entité 'catégorie'


tu veux plutôt dire ? :

'sous-catégorie' (1,1) <--> (0,n) avec l'entité 'catégorie'

Heyoan a écrit :

ton article n'a plus qu'à pointer vers la sous catégorie tennis pour que le lien vers la catégorie sport soit également réalisé. Et dans le cas d'une catégorie sans sous-ensemble, l'article pointera directement sur la catégorie...


merci de m'avoir éclairer sur la question Smiley smile je suis toujours un peu dans l'obscurité

1) je voudrais en fait qu'une sous-catégorie appartienne à plusieurs catégories et inversement, ce qui ne marche pas avec la contrainte d'intégrité fonctionnelle que tu m'as présenté ?

2) on pourrait avoir une infinité niveau de catégories (dans l'ex 2 seulement)

3) de même si on supprime une sous catégorie au milieu de catégories d'un autre niveau, je souhaite que la relation entre l'article et les catégories restantes soit toujours présente, donc que l'article ait une relation directe avec chaque sous catégorie;

Comment s'appelle ce type de relation sur un schéma MCD Merise ?
Et seulement après, quelle commande MySQL utiliser ?
ChrisG a écrit :
tu veux plutôt dire ? :

'sous-catégorie' (1,1) <--> (0,n) avec l'entité 'catégorie'
Oui, c'est bien ce que je veux dire Smiley cligne


ChrisG a écrit :

1) je voudrais en fait qu'une sous-catégorie appartienne à plusieurs catégories et inversement, ce qui ne marche pas avec la contrainte d'intégrité fonctionnelle que tu m'as présenté ?

2) on pourrait avoir une infinité niveau de catégories (dans l'ex 2 seulement)

3) de même si on supprime une sous catégorie au milieu de catégories d'un autre niveau, je souhaite que la relation entre l'article et les catégories restantes soit toujours présente, donc que l'article ait une relation directe avec chaque sous catégorie
Tu as un exemple de ce que tu pourrais avoir ? Et tu es sûr de ne pas pouvoir faire autrement ? Parce que là tu t'embarques dans un MCD de folie ! Smiley fou ... Et ça rique d'alourdir méchamment ton code !
re Smiley smile

en fait pour le même exemple; si on fait un article sur un tournois de tennis mis dans la catégorie sport. Puis quelque temps après on se rend compte qu'on a pas mal d'articles sur le tennis et donc on crée une sous-catégorie tennis. Donc l'article dans "tennis" lui même dans "sport". Puis quelques mois après on constate que la hiérarchie est mal conçue, on supprime "tennis", on met a la place sport de raquette, et on le met aussi bien dans la catégorie sport collectif que sport individuel (du même niveau hiérarchique).

Voilà j'espère que je m'exprime bien. Il faut que la structure SQL tienne ces contraintes..
Re' aussi Smiley biggrin ,

Tu es en train de décrire la vraie difficulté d'une analyse : prévoir les développements possibles dans le temps et donc voir tout de suite grand quitte à commencer petit ! Smiley confus

Cela dit, la hiérarchisation d'articles que tu décris ressemble bien à l'un des cas justifiant qu'on "triche" un peu avec Merise : on n'aurait plus qu'une seule entité catégorie avec un id_categorie et un id_categorie_parente renseigné (si sous-catégorie de n-ième niveau) ou non (si 1er niveau). Ce système est très souple mais complique un peu le code et d'autre part je ne sais pas comment ça se définit dans un MCD Smiley rolleyes ...

Dans la même veine voir aussi l'algorythme des arbres à index intervalaires donné par QuentinC dans un autre post.

A+