Modélisation de la BDD pour la constitution d'un article

Petit nouveau ! | 9 Messages

29 sept. 2010, 11:18

Salut, :)

Je souhaite créer une (ou plusieurs) table(s) (si besoin est) modélisant divers articles.
Par ailleurs, j'aimerais pouvoir effectuer facilement des recherches sur les titres, les liens, les citations, les auteurs, etc...
Enfin, dans l'idéal, je souhaiterais qu'il n'y ait pas de HTML au sein de mes champs vu que je passe par une mise en forme via XSL.

En premier lieu, j'ai donc pensé créer une simple table contenant des champs du type :

- id
- h1
- h2
- h3
- h4
- p
- blockquote
- a
- auteur
- date
etc...

Mais, rien qu'en écrivant cela, un problème me saute aux yeux : Il est commun, pour ne prendre que cet exemple, de voir un lien au sein d'un paragraphe ou d'un titre.
Je pourrais bien entendu segmenter de nouveau mon paragraphe en y incluant des "span", ce qui me donnerait un code du type :
<p>
    <span>ma phrase contenant</span>
    <a href="#">un lien</a>
    <span>très intéressant.</span>
</p>
mais avec un tel modèle, je me rends bien compte que la composition d'un article complet deviendrait, pour le moins, complexe et je ne suis pas certain du bien fondé de cette méthode.

Bref, l'exigence de ne pas insérer de code HTML me semble peu viable en définitive et j'ai tendance à penser qu'il vaut mieux créer une table à part contenant mes liens afin de faire mes recherches de manière aisée, quitte à dupliquer celui-ci au sein des paragraphes de ma table article lorsque le besoin s'en fait sentir. :?

En somme, j'imagine que bon nombre d'entre vous ont été confrontés à ce problème donc comment procédez-vous et à quel niveau de granularité vous arrêtez-vous ?

Merci à celles et ceux qui peuvent m'éclairer sur ce point.

Petit nouveau ! | 9 Messages

09 oct. 2010, 09:47

Bonjour,

Je me permets de relancer ce sujet car je suis toujours dans le flou quant à la bonne manière de procéder.

Pourtant, toute personne ayant eu à conserver un document HTML en base de données a forcément dû à faire à ce problème donc n'avez-vous vraiment aucune suggestion ?

Mammouth du PHP | 19672 Messages

09 oct. 2010, 11:41

Salut,
je n'ai personnellement jamais eu à me pencher sur ce point précis, néanmoins la manière dont j'aborderais ça est la suivante : comment est structuré un article ? Il contient un ou plusieurs éléments successifs. Chaque élément peut lui-même être découpé en sous-éléments et ce de façon récursive sans nombre précis de niveaux. On aboutit en bout de chaine à une chaine de texte. Même si on a affaire à une image, ce qui nous intéresse, c'est le nom de cette image, le chemin où on va la trouver, ses propriétés... et tout ça, ce sont des chaines de texte qui se rattachent entre elles. Cette chaine de texte a des propriétés particulières propres, elle se rattache à un élément lequel peut suivre ou précéder un autre élément de même niveau et les deux sont « enfants » d'un élément du niveau au dessus et on remonte comme ça jusqu'à l'article global.

Voilà, c'est la piste de départ que je suggère. Il faut bien entendu que ce soit le plus générique possible de façon à ce que tu puisses reconstruire l'article indépendamment du langage qui sera utilisé, HTML, XML/XSL ou n'importe quoi d'autre. Mais justement, cette liste de langages n'est pas exhaustive, mais présente des similitudes dans la manière de structurer un contenu. Là tu pourras définir des entités/associations pour construire ton modèle de données.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

10 oct. 2010, 19:22

Bonjour,

Pour ma part je stockerais le texte de l'article d'origine dans un fichier sur le disque et côté base de données je stockerais des tables d'index qui mémorise des mots sous forme de mot-clés avec pour chaque mot ses positions dans le texte d'origine ; et de même pour les liens et les autres objets non texte comme les images, ... Pour ces objets comme les images on peut aussi collecter un certain nombre de propriétés comme: la taille, la source, les mot-clés de recherche attachés, etc.

Pour construire l'index de mot-clés texte il faut développer un algorithme qui parcourt le texte original et qui collecte les mots (et leurs doublons) pour déterminer les propriétés adéquates comme les positions des mots, leurs casses, leurs attributs de mise en forme : couleur, police, taille, .... On pourra s'arrêter au niveau "mot" comme degré d'affinement, mais tu peux pousser plus loin jusque niveau "caractère".

Les objets non texte comme les images ainsi que les liens peuvent être traités à part et les sources peut être stockés sur le disque séparément de la base.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 9 Messages

11 oct. 2010, 18:19

Hello,

Je dois réviser encore un peu histoire d'être sûr de bien cerner la chose (n'ayant pas pratiqué SQL depuis un moment déjà).
Néanmoins, vos réponses me suggèrent quelques pistes auxquelles je n'aurais pas immédiatement pensé (voire pas du tout ! :mrgreen: ) donc merci pour votre aide. :)

J'essaierais de vous faire un retour dès lors que j'aurais trouvé le temps de mettre tout cela en pratique.