MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Web et bases de données Module 4 : Exemple de composantes relationnelles sur un site Web Christine Dufour, Université de Montréal, 14/04/15 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) [D2] Essayons maintenant de retrouver, par l’observation, les principales composantes du modèle relationnel que nous venons d’identifier au sein d’un site Web bien connu, Wikipedia. La réalité représentée ici est celle d’une encyclopédie universelle en ligne et collaborative. [D3] On se doute bien que la structure relationnelle de la base de données derrière Wikipedia est complexe, impliquant plusieurs types d’entités. Un coup d’œil sur la schématisation de cette structure (http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/MediaWiki_1.20_%2844edaa2%29_database_schema.svg/2500px-MediaWiki_1.20_%2844edaa2%29_database_schema.svg.png) nous le confirme : on y retrouve quelque 50 tables de données représentant plusieurs types d’entités. Parmi les principaux types d’entités, on a d’une part, les articles, et, d’autre part, les utilisateurs. [D3/1] La complexité de ces types d’entités entraîne une décomposition de chacun d’eux en plusieurs tables de données, chaque table représentant des attributs en lien avec une facette du type d’entité. [D4] Au niveau des articles, on se doute bien qu’il faudra pouvoir conserver comme informations des métadonnées sur les articles comme leur date de création, par exemple, ainsi que la langue. On voudra aussi conserver le contenu des articles comme tel, mais pas uniquement la dernière version. Une des caractéristiques d’un wiki étant en effet de pouvoir retracer l’historique des modifications, il faut garder traces de toutes les versions des articles. Finalement, on voudra conserver des métadonnées sur les révisions telles que la date de modification. Ces informations pourraient être découpées en tables de données de différentes manières. [D4/1] Dans la version actuelle de MediaWiki, qui est le logiciel libre sur lequel Wikipédia est construit, ces informations se retrouvent dans trois tables : [D4/2] une table page pour les métadonnées sur les articles, [D4/3] une table text pour le contenu des articles tant courant que les versions précédentes, [D4/4] et une table revision pour les métadonnées sur les révisions des pages. [D5] Le type d’entité Utilisateurs est aussi découpé en plusieurs tables de données afin de pouvoir, entre autres, conserver les informations sur un utilisateur, lui accorder les droits qui lui reviennent au niveau de la manipulation des pages et de la gestion de la base de données, et garder des traces des articles qu’il veut suivre. Dans MediaWiki, il s’agit des tables user, user_groups et watchlist. [D6] On retrouve des relations entre les tables définissant un type d’entité, par exemple, entre les tables page et text, pour un article, ou entre les tables user et user_groups. [D6/1] Il y a aussi des relations entre des tables définissant un type d’entité et des tables d’un autre type d’entité. C’est le cas entre la table user et la table revision et ce afin d’associer l’auteur d’une révision à l’article révisé. [D6/2] La cardinalité des relations varie en fonction de la réalité représentée. La relation entre les tables user et user_groups est probablement de cardinalité n-n comme un utilisateur pourrait appartenir à plusieurs groupes et qu’un groupe est associé à plusieurs utilisateurs. [D6/3] On soupçonne que la relation entre les tables user et revision est de cardinalité 1-n, un utilisateur pouvant apporter plusieurs modifications, mais une modification à un temps t ne pouvant avoir été le fait que d’un seul utilisateur. [D7] Le modèle relationnel que nous venons d’explorer demeure le modèle le plus utilisé aujourd’hui dans bien des contextes. Défini mathématiquement en 1970 par un informaticien britannique, Edgar Frank « Ted » Codd, une de ses forces réside en ce qu’il a été défini formellement avant toute mise en oeuvre concrète, contrairement à plusieurs modèles de données qui l’ont précédé. Ce modèle est doté d’un langage normalisé d’interrogation appelé SQL pour Structured Query Language qui permet de manipuler les données. Notons aussi qu’il s’accompagne de plusieurs méthodologies permettant de modéliser un contexte dans ce cadre comme le modèle entités-relations et MERISE, pour n’en nommer que deux. [D7/1] Les besoins d’une architecture distribuée et à grande échelle comme le Web ont mené à la création d’autres modèles de données, le modèle relationnel ne pouvant toujours y répondre de manière optimale. Parmi ces autres modèles de données se retrouvent les familles NoSQL qui seront couverts dans le prochain chapitre.