Bonjour,
j'ai lu attentivement l'article de sqlPro sur les métadonnées. Il est fort intéressant et se rapproche de ce que j'aimerais mettre en place.
Cependant, j'ai quelques questions :
Il est sous-entendu dans l'article que ce modèle est extrèmement rapide, ma question est donc : Pourquoi inclure des métadonnées dans différentes tables ? Ne pourrait-on pas se contenter d'avoir uniquement n tables composées de clés avec 1 table qui contient les métadonnées de toutes les autres ?
Ex: (très simplifié, 1 objet possède 1 droit et 1 bibliographie)
Table Objet : [Id], titre, etat, [droitId], [biblioId]
Table Droit : [Id], Titre, mentionObligatoire, ConditionsDutilisation
Table Biblio : [Id], Titre, Editeur, Auteur, Fournisseur
Pourrait-être représenté comme cela:
Table Objet : [Id], [droitId], [biblioId]
Table Droit : [Id]
Table Biblio : [Id]
Table Meta: [IdTable], [IdElement],Valeur
Cette représentation est-elle plus rapide ? La table Meta ne risque-t'elle pas de devenir trop grande (500.000 enregistrements c'est trop ? Je travaille avec Postgres sur un serveur bi-processeur avec 2Go).
En prenant un tel système, vaut-il mieux commencer directement à mettre toutes les données dans la table Meta OU mettre les données dans la table correspondante et garder la table Meta pour le cas ou il faudrait rajouter des infos ?
Y-a-t'il un intérèt de mettre dans la table Meta une infos comme le titre (différent pour chaque objet, 512 car. max donc la taille du champs metaValeur sera aussi de 512) ?
Les requêtes SQL ne risquent pas d'être à rallonge si on veut à chaque fois afficher toutes les infos de chaque objet qui correspond à certains critères ?
Je veux dire par là que la solution me paraît intéressante pour une recherche multicritère mais assez lourde lorsque l'on veux à chaque fois obtenir toutes les infos. Je me trompe ?
Merci de bien vouloir m'éclairer,
Borndead.
P.S. Si quelqu'un a des liens sur le sujet, je suis preneur
Partager