ift187 - hiver 2019 cours 1: introductioninfo.usherbrooke.ca/mlafond/ift187/ift187-c1.pdf · 2019....
TRANSCRIPT
![Page 1: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/1.jpg)
IFT187 - HIVER 2019
COURS 1: INTRODUCTION
Manuel Lafond
![Page 2: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/2.jpg)
Base de données (BD)
• Collection de données inter-reliées servant à
modéliser des aspects du monde réel.
• Les bases de données sont centrales à une
multitude d’applications informatiques.
• Sites web
• Santé (ex: le GRIIS)
• Gestion des entreprises
• Systèmes universitaires
• Bioinformatique
• Et beaucoup, beaucoup plus…
![Page 3: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/3.jpg)
Exemple de BD
• Modélisation d’un magasin de musique digitale
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Albums disponibles
• Chansons apparaissant sur un album
![Page 4: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/4.jpg)
Exemple de BD
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Nom, pays, année d’émergence
• Albums disponibles
• Nom, année de parution
• Chansons apparaissant sur un album
• Titre, no
![Page 5: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/5.jpg)
Exemple de BD
• Données à entreposer
• Informations sur les Artistes (ou groupes)
• Nom, pays, année d’émergence
• Albums disponibles
• Nom, année de parution
• Chansons apparaissant sur un album
• Titre, no
• Un Album a un ou plusieurs artistes
• Un Album contient plusieurs Chansons
• Une Chanson n’apparaît que sur un Album
![Page 6: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/6.jpg)
Comment entreposer?
• Première idée: fichiers CSV
• Un fichier par entité
• Une ligne par élément, représenté
par un n-uplet d’attributs
• Séparés par des “,”
• n-uplet = tuple en Anglais
• Plusieurs problématiques!
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvnom, annee
“Infinite”, 1996
“Kamikaze”, 2018
“Thanks me later”, 2010
...
Chanson.csv
...
![Page 7: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/7.jpg)
Comment entreposer?
• Le programme doit souvent
traiter tout le fichier pour
lire/écrire de l’information.
• Exemple:
• En quelle année Nicki Minaj a-t-elle
sorti son premier album?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
for ligne in file:
attributs = parse(ligne)
if attributs[0] == “Nicki Minaj”:
return attributs[2]
![Page 8: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/8.jpg)
Comment entreposer?
• Comment associer les
éléments entre eux?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvnom, annee
“Infinite”, 1996
“Kamikaze”, 2018
“Thanks me later”, 2010
...
![Page 9: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/9.jpg)
Comment entreposer?
• Comment associer les
éléments entre eux?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2010
...
![Page 10: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/10.jpg)
Comment entreposer?
• Comment associer les
éléments entre eux?
• Comment garantir l’intégrité
des associations?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
![Page 11: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/11.jpg)
Comment entreposer?
• Comment garantir que toutes
les données sont dans le bon
format
• ex: le domaine des années = les
entiers
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
![Page 12: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/12.jpg)
Comment entreposer?
• Que faire si un album a
plusieurs artistes?
Artiste.csvnom, pays, annee_depart
“Eminem”, “USA”, 1996
“Drake”, “USA”, 2008
“Nicki Minaj”,“USA”,2010
...
Album.csvartiste, nom, annee
“Eminem”,“Infinite”,1996
“Eninem”,“Kamikaze”,2018
“Drake”,“Thanks me
later”, 2O10
...
![Page 13: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/13.jpg)
Comment entreposer?
• Et si plusieurs applications différentes
ont besoin d’accéder à notre base de
données?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
![Page 14: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/14.jpg)
Comment entreposer?
• Et si plusieurs applications différentes
ont besoin d’accéder à notre base de
données?
• Comment gérer les accès concurrents?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
![Page 15: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/15.jpg)
Comment entreposer?
• Que faire s’il y a un crash au milieu d’un opération
d’écriture?
App Visiteur
(html/php)App Admin
(C++)
App Artiste
(python)
![Page 16: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/16.jpg)
La solution
• Système de gestion de base de données (SGBD)
SGBD
![Page 17: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/17.jpg)
La solution
• Système de gestion de base de données (SGBD)
• Logiciel servant à stocker, à manipuler et à partager des
informations dans une base de données
• En garantissant la qualité, la pérennité et la
confidentialité des informations, tout en cachant la
complexité des opérations.
![Page 18: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/18.jpg)
La solution
• Système de gestion de base de données (SGBD)
• Logiciel servant à stocker, à manipuler et à partager des
informations dans une base de données
• En garantissant la qualité, la pérennité et la
confidentialité des informations, tout en cachant la
complexité des opérations.
• Propriétés ACID: Atomicité, Cohérence, Isolation, Durabilité
• Voir https://fr.wikipedia.org/wiki/Propri%C3%A9t%C3%A9s_ACID
![Page 19: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/19.jpg)
Quelques avantages des SGBD
• 1) Séparation Application-Données
• Abstraction des mécanismes d’entreposage
• 2) Traitement efficace de requêtes
• Interrogation, ajout/modif/suppression
• 3) Vérification de contraintes d’intégrité
• 4) Auto-descriptivité
• Accès aux meta-données qui décrivent la structure de la BD.
• 5) Gestion de la concurrence (accès simultanés)
• 6) Gestion d’erreurs
• 7) Gestion des accès et des permissions
• ...
![Page 20: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/20.jpg)
Quelques avantages des SGBD
• 1) Séparation Application-Données
• Abstraction des mécanismes d’entreposage
• 2) Traitement efficace de requêtes
• Interrogation, ajout/modif/suppression
• 3) Vérification de contraintes d’intégrité
• 4) Auto-descriptivité
• Accès aux meta-données qui décrivent la structure de la BD.
• 5) Gestion de la concurrence (accès simultanés)
• 6) Gestion d’erreurs
• 7) Gestion des accès et des permissions
• ...
COMMENT?
Prenez IGE487
![Page 21: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/21.jpg)
Utilisateurs
Programmes
Applications
...
Données
(et schéma)
SGBD
![Page 22: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/22.jpg)
Types d'utilisateurs
• Administrateurs de DB (ADB, ou DBA en anglais)
• Concepteurs de BD
• Utilisateurs
• Divers niveaux de sophistication:
• Accès logicel (interface graphique, ligne de commande, …)
• Accès programmeur
• Accès direct à la BD
![Page 23: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/23.jpg)
Quand ne PAS utiliser un SGBD
• Application simple et données peu redondantes et peu
variables
• Attention au futur!
• Applications en temps réel
• (ex: analyse de signaux, jeux vidéo, quoique…)
• Systèmes embarqués avec espace disque/mémoire
restreint
• Utilisateur unique
• Requêtes sur objets complexes (image, vidéo, …)
![Page 24: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/24.jpg)
Modèles de données
• Un modèle de données est une description abstraite de
la représentation des données dans une BD.
• Un schéma sert à décrire un ensemble particulier de
données dans le modèle choisi.
![Page 25: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/25.jpg)
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
![Page 26: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/26.jpg)
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
La plupart des SGDB
(SQL, et newSQL)
![Page 27: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/27.jpg)
Modèles de données
• Relationnel
• Clé-valeur
• Graphes
• Document
• Colonnes
• Hiérarchique
NoSQL
(not only SQL)
AmazonS3,
Neo4J,
MongoDB,
Hbase,
…
La plupart des SGDB
(SQL, et newSQL)
![Page 28: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/28.jpg)
Le modèle relationnel
• Edgar F Codd
• Inventeur du modèle relationnel
• "A Relational Model of Data for
Large Shared Data Banks",
Communications of the ACM, 1970
• Prix Turing, 1981
![Page 29: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/29.jpg)
• Téléchargement de PostgreSQL (inclut pgAdmin4)
• https://www.postgresql.org/download/
• Comment utiliser pgAdmin4
• https://www.usherbrooke.ca/informatique/intranet/ressources-et-
documentation/logiciels-services-outils/postgresql/
• Hôte: bd-info3.dinf.usherbrooke.ca
• Port: 5432
![Page 30: IFT187 - HIVER 2019 COURS 1: INTRODUCTIONinfo.usherbrooke.ca/mlafond/IFT187/IFT187-C1.pdf · 2019. 1. 8. · Base de données (BD) •Collection de données inter-reliées servant](https://reader034.vdocuments.site/reader034/viewer/2022051912/6003249ea13f5024f86c628f/html5/thumbnails/30.jpg)
• Quelques particularités du type SERIAL
• https://stackoverflow.com/questions/787722/postgresql-
autoincrement
• Tables inexistantes à cause des guillemets:
• https://stackoverflow.com/questions/6331504/omitting-the-double-
quote-to-do-query-on-postgresql
• Solution: pas de majuscules dans vos noms de table