Web et bases de données : un mariage

publicité
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
Téléchargement