MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Web et bases de données : un mariage nécessaire pour faire face aux défis des données massives Module 3 : Composantes d’une base de données relationnelles Les premiers chapitres de cette semaine vous ont permis de développer une vue globale de ce qu’est une base de données par le biais de sa définition et de ses caractéristiques. Nous plongerons maintenant plus avant dans la compréhension d’un modèle de données en examinant un modèle bien connu et très répandu, soit le modèle relationnel. C’est le modèle sous-jacent par exemple à Microsoft Access et MySQL. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 1 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Reprenons l’exemple d’une base de données pour gérer des contacts. Une telle base de données peut vous permettre, par exemple, d’afficher la liste de tous les contacts en ordre alphabétique de nom de famille, ou de faire une recherche parmi vos contacts pour identifier ceux dont l’anniversaire est en mars. Mais quelles sont les caractéristiques de cette base de données qui permettent ces opérations? Il y a entre autres la manière dont l’information y est structurée. Nous pourrions en représenter les données d’une manière très simple, qui vous sera familière, soit par une table de données. Cette table contient les informations permettant de décrire et d’agir sur la collection des contacts, qui sont un type d’entité. Elle met en lien chacun des individus, représentés par les lignes de la table, avec les informations pertinentes par rapport à la réalité représentée, soit ses coordonnées. La collection de contacts ainsi représentée est appelée une instanciation d’un type d’entité. Chacune des colonnes, qui représente une des caractéristiques, est appelée un attribut. Comme on peut rapidement le voir, les attributs peuvent correspondre à des données de différents types : du texte, des dates, ou même une adresse de courriel. C’est ce découpage de l’information en attributs de différents types qui permet entre autres de pouvoir trier les données par nom de famille, comme il y a un attribut Nom et que le système de base de données sait comment classer en ordre alphabétique du texte. De la même manière, c’est parce qu’il y a un attribut Naissance, dont les données ont été définies comme des dates, qu’il est possible de faire une recherche pour ne retrouver que les contacts nés en mars. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 2 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Ces actions sont possibles en raison des opérations que le modèle relationnel permet. Nous en avons nommé deux, soit le tri des valeurs d’un attribut comme le tri par date de naissance et la restriction à certaines valeurs d’un attribut, par exemple, pour ne retenir que les contacts né en mars. Il y en a bien d’autres, ainsi que d’autres caractéristiques du modèle relationnel, que nous illustrerons en utilisant cette fois un exemple un peu plus complexe qui exploite encore mieux toutes les possibilités de ce modèle. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 3 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Attardons-nous donc à présent à l’exemple d’Amazon, mais en le simplifiant un peu. Imaginons un site d’achat uniquement de livres, sur lequel il est possible de se créer un compte pour faire des achats, dont les livres proviennent de différents distributeurs (un même livre ne provenant toutefois que d’un seul distributeur). Un tel site permet, par exemple, de butiner dans le catalogue sur certains sujets, de faire des recherches sur les titres, ou de consulter le panier d’achat pour voir le montant total des éléments que l’on y a déposé. On y retrouve ainsi trois types d’entités : (1) les clients, (2) les livres et (3) les distributeurs. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 4 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Pour chacun des types d’entités, on pourrait retrouver une table de données où leurs différents attributs se retrouveront consignés, et ce pour chacun des “individus” qui font partie de la collection qu’elle représente. Comme pour l’exemple précédent, c’est en raison du découpage fin en attributs et des opérations supportées par le modèle relationnel qu’il est possible de faire des recherches précises dans le catalogue, pour consulter les livres sur un sujet particulier par exemple, qui est une opération de restriction, ou d’additionner le prix des livres déposés dans notre panier d’achat par le biais d’une opération de regroupement. Ce qui diffère du premier exemple est le fait que l’on retrouve ici trois types d’entités, comme la réalité représentée est plus complexe. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 5 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about De plus on retrouve des relations entre les types d’entités, comme on veut pouvoir associer, lors d’un achat, un client avec le livre acheté, et le livre, avec le distributeur. Le modèle relationnel permet en fait de représenter différents types de relations. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 6 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Examinons la relation entre les clients et les livres achetés. La première observation que l’on puisse faire est qu’un client pourrait acheter plusieurs livres. Et si on regarde la relation dans l’autre sens, un livre pourrait être acheté par plusieurs clients. En fait, nous venons ainsi de définir ce que l’on appelle la cardinalité de la relation. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 7 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about La relation entre Clients et Livres est ainsi une relation de cardinalité n-n – appelée aussi plusieurs à plusieurs. Il n’y a pas que des relations de cardinalité n-n. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 8 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Examinons maintenant la relation entre les distributeurs et les livres. Un distributeur pourra distribuer plusieurs livres. La Librairie des petits papiers, par exemple, pourrait distribuer L’ABC.D.BD ainsi que Vive le jardinage. Voilà le premier n de la relation. Par contre, un livre n’étant distribué que par un unique distributeur, la relation dans l’autre direction n’est pas multiple. L’ABC.D.BD n’est en effet distribué que par la Librairie des petits papiers. Ce n’est donc pas un n pour la relation en ce sens mais plutôt un 1. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 9 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about La relation entre Distributeurs et Livres sera donc de cardinalité 1-n, ou 1 à plusieurs. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 10 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Un dernier type de relation est celle de cardinalité 1-1. Imaginons qu’il y ait eu un besoin de conserver, pour chacun des clients, leur numéro de sécurité (ou d’assurance) sociale et que, pour des raisons de sécurité, nous voulions les conserver dans une table distincte ID assuré social. La relation ici sera de cardinalité 1-1, un client étant identifié par un seul numéro d’identification sociale et un numéro d’identification sociale identifiant un seul client. Et pourquoi faut-il s’interroger sur la cardinalité des relations? Parce que cette dernière a un impact sur la manière dont elle sera concrètement représentée dans le jeu des tables de données qui constitue la base de données. Il faut en effet pouvoir enregistrer dans la base de données les données qui rendent compte de la relation. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 11 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Commençons par nous attarder au cas des relations 1-n. Comment conserver le lien entre un livre et son distributeur? Simplement, en ajoutant dans la table de données Livres un attribut qui permettra de lier le livre à son distributeur décrit dans la table Distributeurs. Cet attribut est ce que l’on appelle une clé étrangère. Mais que doiton y mettre? Il faut trouver, dans la table Distributeurs, un attribut, ou une combinaison d’attributs, qui permet de représenter de manière unique chacun des distributeurs, ce que l’on appelle une clé primaire. Peut-on prendre le nom du distributeur? Non, deux distributeurs pourraient porter le même nom. Et pourquoi ne pas utiliser le courriel? Ce n’est peut-être pas le bon choix, deux distributeurs faisant partie d’une chaîne pourraient partager une même adresse de courriel générique. Dans le cas où il n’y a pas d’attribut qui permette de le faire, il est possible d’ajouter un attribut juste pour cette fin. Ce dernier, par exemple, pourrait simplement attribuer séquentiellement un nombre à chacune des lignes de la table Distributeurs. Comme toutes les tables de données doivent avoir une clé primaire, il faudra faire l’exercice pour les autres tables aussi. L’attribut IDdistributeur ajouté à la table Livres devient ainsi la clé étrangère qui permet de faire le pont entre un livre et son distributeur, en renvoyant à la clé primaire de la table Distributeurs. Le cas d’une relation 1-1 est assez similaire. Dans notre exemple, il s’agirait d’ajouter dans la table ID assuré social une clé étrangère pointant vers la clé primaire de la table Clients. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 12 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about L’attribut IDdistributeur ajouté à la table Livres devient ainsi la clé étrangère qui permet de faire le pont entre un livre et son distributeur, en renvoyant à la clé primaire de la table Distributeurs. Le cas d’une relation 1-1 est assez similaire. Dans notre exemple, il s’agirait d’ajouter dans la table ID assuré social une clé étrangère pointant vers la clé primaire de la table Clients. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 13 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about La relation n-n, quant à elle, fonctionne un peu différemment. Reprenons l’exemple de la relation entre les clients et les livres. Il faut pouvoir sauvegarder le fait que Paul a acheté L’ABC.D.BD ainsi que Les BDs pour les NULLs. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 14 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Nous ne pourrions ici reprendre l’idée précédente d’ajouter une clé étrangère, dans la table Clients, pour pointer vers la table Livres. Pourquoi? Parce que, dans le modèle relationnel, la valeur d’un attribut pour un individu ne peut contenir plusieurs valeurs à la fois et que Paul a acheté deux livres! Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 15 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Il faut plutôt créer une nouvelle table de données intermédiaire permettant de consigner les achats. Dans le cas qui nous intéresse ici, cette table de données inclurait une ligne par achat et l’on y retrouverait deux clés étrangères, une pointant vers la clé primaire de la table Clients pour identifier l’acheteur, l’autre vers la clé primaire de la table Livres pour identifier le livre acheté. Ceci montre bien qu’il est important de savoir comment un modèle de données structure les données et les manipule pour pouvoir y représenter, au mieux, une réalité donnée. Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 16 MOOC Architecture de l’information https://www.france-universite-numerique-mooc.fr/courses/ENSDeLyon/14002/session01/about Crédits • • [Réseau avec noeuds] By Calvinius [CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons [Autres images] Pixabay.com, licence CC0 Public Domain Christine Dufour, Université de Montréal, 21 avril 2015 CC-BY-SA (https://creativecommons.org/licenses/by-sa/3.0/fr/) 17