Aller au contenu

Organisation d'une base de connaissance


Neiflheim

Sujets conseillés

Bonjour à tous :)

Bon voila après 2 semaines de reflexions et de recherches intenses je me retourne vers vous !

Contexte : un site ou seront mis en ligne des cours sur l'environnement, mais avant de créer la structure j'essaye de penser à tout et je bloque sur un aspect important.

J'utilise php/mysql, et les cours seront mis dans une base mysql afin de pouvoir mieux la gérer.

Imaginons quelques champs simples à renseigner : chapitre (1, 2, 3...), sous chapitre (1,1 1,2 1,3), contenu, bibliographie.

Si un membre rajoute un chapitre 1 puis chapitre 2 jusque la tout vas bien, on peux réaliser un tri par ordre croissant avec les champs chapitre et sous chapitre.

Et la le probleme arrive, si on veux intercaler un chapitre entre 2 chapitre existants, on est obligé de tour rencoder pour le décalage...

Avait vous une idée pour permettre ce genre de programmation? code, structure, ...

Merci d'avance pour vos conseils :P

Lien vers le commentaire
Partager sur d’autres sites

Le plus propre est probablement de renuméroter les suivants. Ca peut se faire en une seule ligne de SQL, donc ce n'est pas spécialement difficile.

Sinon tu peux utiliser une stratégie relativement simple, mais qui a ses limites: au départ tu numérotes par multiples de 10000 (par exemple). Si jamais tu dois insérer quelque chose, alors tu utilises des multiples de 1000, et ainsi de suite. Ou alors par dichotomie, tu prends la moyenne des valeurs avant et après - ce qui est généralement plus simple, et atteindra a priori ses limites plus tard. Mais quoi qu'il arrive à un moment donné tu sera coincé.

Une autre option (mais probablement plus difficile à implémenter au niveau SQL pour faire les opérations habituelles genre tri, pagination, ceci dit je n'ai jamais essayé), est de ne pas stocker un ordre absolu, mais uniquement un ordre relatif, i.e. tel chapitre est "après" un autre et "avant" un troisième.

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse jcaron :)

La deuxieme méthode que tu a cité j'y avais pensé, mais c'est un peu brutal et par la suite ca sera le bordel ^^

Tu me propose la renumérotation des suivants, cette méthode m'interesse.

As tu une vague idée de la structure de la requete mysql a créer?

Car je pense qu'il faudra faire une boucle pour incrémenter?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...