0% ont trouvé ce document utile (0 vote)
72 vues49 pages

Cours BDD 0 Intro

Transféré par

El kamar-channel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
72 vues49 pages

Cours BDD 0 Intro

Transféré par

El kamar-channel
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

BASES DE

DONNÉES
INTRO
INTRODUCTION
QUI SUIS-JE ?

• Florent Béjina
• Formation DUT Informatique & M2 Gestion de Systèmes d’Information
• Plus de 10 ans dans le développement Web et Mobile Hybride
• Entrepreneur et Tech-lead
• Votre prof’ pour ce semestre ! (yeah!)

• Email : florent@[Link]
• Téléphone : 08 36 65 65 65
LE BUT DE CE COURS EST VOUS
APPRENDRE À CONCEVOIR ET MANIPULER
UNE BASE DE DONNÉES DANS LE CADRE
DE VOS ACTIVITÉS PROFESSIONNELLES
FUTURES…
…PAS DE FAIRE DE VOUS DES BARBUS
EXPERTS ADMINISTRATEURS
DU COUP, QU’EST CE QU’ON VA VOIR
ENSEMBLE CE SEMESTRE ?
• Les principes de base des bases de données RELATIONNELLES, à savoir
– Un peu d’histoire
– Un peu de théorie (algèbre relationnelle)
• Une mise en pratique sur un SGBD (PostgreSQL)
– Un peu de SQL (SELECT / FROM / WHERE / CREATE / UPDATE / etc.)
– Un peu plus de SQL (CREATE TABLE, GRANT, etc…)
– Toujours plus de SQL (TRIGGER / FUNCTIONS / PLSQL)
• Une entrevue sur les ORMs
• Un peu de théorie sur les bases de données noSQL, si on a le temps
MAIS PLUS GLOBALEMENT

Apprendre :
1. La conception de bases de données
– Point de départ : description informelle d’une application
– Abstraction et optimisation du cahier des charges (modélisation)
– Création d’entités comprises par le système (extraction des relations de la base de données)
– Optimisation des relations (normalisation)
2. L’utilisation d’un SGBD
– Ecrire des requêtes dans un langage (SQL) compris par le SGBD (Oracle, PostgreSQL, MySQL,,
etc.)
DES QUESTIONS ?
NON ?
C ’ É TA I T T E L L E M E N T P R É V I S I B L E
ALORS C’EST
PARTI !
UN TOUT PETIT PEU D’HISTOIRE

LA « DONNÉE » AVANT L’INFORMATIQUE

• La donnée est ici définie comme une information, qu’il est intéressant (/ nécessaire?) de stocker, pour une
réutilisation future (consultation, modification, calcul, preuve, etc…).
• Par extension on pourrait dire que la base de données est le support qui va accueillir les données. Le SGBD
(système de gestion de base de données) sont les outils déployés autour de ce support afin d’effectuer des
actions.
• Les premières traces de données (plus ou moins) standardisées datent d’environ -3400 av. JC, à l’invention de
l’écriture cunéiforme.
• Cette écriture aurait servi, entre autres, en tout premier lieu aux comptables de l’époque, pour noter les
transactions marchandes (les 3 vaches du vieux Mc Donald contre 7 chameaux d’Aladdin, le 10 novembre -
3069)
• Le premier livre de compte était né. Ce support est première pierre à l’édifice de la blockchain et du Bitcoin.
• La donnée a toujours été un concept important. L’écriture sur des tablettes en argile est le premier support
de données (pensé comme tel).

Liens intéressants :
- What was the first (known) math mistake ? [Link]
- Comment la comptabilité mésopotamienne a conduit à la première langue littéraire - [Link]
UN TOUT PETIT PEU D’HISTOIRE

QUELLE FORME PEUT PRENDRE UN SUPPORT


DE DONNÉES ?

Potentiellement, un support de données peut prendre un tas de forme


• Un fichier Excel
• Un cahier
• Une étagère, une bibliothèque
• Une anti-sèche
• Une dossier avec plein de fichiers à l’intérieur, plus ou moins organisés, avec chacun sa donnée.
UN TOUT PETIT PEU D’HISTOIRE

LES LIMITES D’UN SUPPORT DE DONNÉES

Problématique :
Combien de temps ça me prendrait si,
tout de suite, avec ce genre de support
de données, je devais savoir à quelle
heure part le prochain TER pour
Compiègne.

Réponse : la galère
« L’INTELLIGENCE
N’EST PAS L A
CAPACITÉ DE STOCKER
D E S I N F O R M AT I O N S ,
MAIS DE SAVOIR OÙ
LES TROUVER »
A L B E RT E I N S T E I N
UN TOUT PETIT PEU D’HISTOIRE

SOLUTION POTENTIELLE : UN SYSTÈME DE


GESTION DE SUPPORT DE DONNÉES ?

On peut imaginer le système de gestion de support de données, comme les règles qui régissent
l’organisation au sein du support de données.
Ex:
- Ranger des livres, des contacts, des mots dans un dictionnaire, par ordre alphabétique
- Numéroter des pages d’un livre, et créer un index (comme une encyclopédie)
- Nommer des fichiers avec une date (1995-12-01_TER_Paris_Asgard.txt)

Ces règles permettent ensuite d’ajouter, récupérer ou modifier des données existantes, plu
facilement.
O K F L O R E N T,
C’EST SUPER TON HISTOIRE,
MAIS C’EST « SO 1920 » TES
EXEMPLES LÀ !
UN TOUT PETIT PEU D’HISTOIRE

ET PUIS UN JOUR : L’INFORMATIQUE


Hey
Et si Michel
!
les o on utilis
rdin a
ateu it
rs ?

Ingénieur de
1960 qui a
une idée !
LE SYSTÈME DE GESTION
DE BASE DE DONNÉES
EN 2022 : À QUOI ÇA SERT UNE BASE DE
DONNÉES
Notre réalité est à présent en grande partie numérique. Nos loisirs, nos outils de travail, nos
services utilisent dans l’extrême majorité des bases de données.
Le bases de données servent :
• À peu près pour tout sur le WEB (réseaux sociaux / VOD / recherche / e-commerce / forums /
messagerie / etc…)
• Entrainer des Intelligence Artificielles
• Gérer nos emails
• Faire des calculs statistiques
• Des jeux vidéos
• Gérer notre argent
• Etc…
UNE BASE DE DONNÉES C’EST QUOI ?

Base de données :
– C’est une collection importante de données
– Elle modélise d’habitude (une partie d’)une entreprise ou d’un organisme. Ex:
• Entités : Vols, avions, pilotes
• Relations : Le pilote Florent Béjina assure le vol 1988 avec un A380.

Vol

Pilote Avion
LA GESTION DE BASE DE DONNÉES, C’EST
QUOI ?
La gestion de base de données, est un pack de logiciels qui facilite la manière de :
- Trouver des données (recherche)
- Créer et modifier des données
- S’assurer de la cohérence des données
- Protéger ses données :
- Contre les accès interdits (rôles et permissions)
- Des pannes (redondance)
- Des autres programmes et utilisateurs (priorités et concurrence)
SGBD : ENVIRONNEMENT SIMPLIFIÉ
Requête

SGBD

Logiciels du
SGBD

Logiciel pour exécuter les requêtes

Logiciel pour accéder aux données


stockées

Définition de la
Base de données
base de données
stockées
(métadonnées)
POURQUOI UTILISER UN SGBD

Nature autodescriptive du système de base de données. Un


Définition de la
base de données catalogue (appelé métadonnées) stocke la description
(métadonnées) d’un BD particulière

Indépendance des données. En théorie, pas besoin de


Base de
données savoir comment la BD est implémentée pour accéder au
stockées données
POURQUOI UTILISER UN SGBD

• Le fonctionnement des applications est indépendant de la manière dont les


données sont structurées et stockées :
– changement de l’ordre des enregistrements
– ajout ou modification de colonnes
– ajout ou modification d’indexes
• Les requêtes ne changent pas lorsque les structures physiques changent
– Un des plus gros avantages des SGBD
POURQUOI UTILISER UN SGBD
• Accès efficace
– requêtes optimisées
• Réduction du temps passé à développer des applications
– les requêtes peuvent être exprimées de manière déclarative, pas besoin d’indiquer comment les
exécuter
• Intégrité et sécurité des données
– des contraintes sur les données peuvent être imposées de manière automatique. Ex:
• Tous les étudiants doivent avoir un numéro étudiant unique (INE)
• Deux étudiants ne peuvent pas avoir le même INE (unicité)
• Un étudiant ne peut avoir qu’une seule note par cours
• etc.
• Accès concurrent, récupération des pannes
– une multitude d’utilisateurs peuvent accéder à la BD en même temps sans interférence
• Rapidité - même quand le volume des données est massif
(TL;DR) POURQUOI UTILISER UN SGBD
• Masses de données persistantes
– téraoctets de données survivant à l’exécution des programmes
• Stockage et accès multi-utilisateurs
– contrôle de la concurrence
• Sécurité
– résistance aux pannes (hardware, software, courant, utilisateurs malveillants)
• Facilité d’utilisation
– opérations sur les données indépendantes de l’implémentation physique, langages de requête de
haut niveau (déclaratifs)
• Efficacité
– milliers de requêtes et mises à jour par seconde
• Fiabilité
– 99,9999% de fiabilité (e.g., systèmes bancaires)
SGBD : SÉPARATION DES COUCHES

• Séparation du problème de la gestion de données en trois « couches » :


– Externe – Traitements (calcul, affichage, ...) ⇒ Programmes
– Logique – Représentation logique des données ⇒ SGBD
– Interne – Représentation physique des données ⇒ SGBD

• Une couche est un ensemble de sous-problèmes bien définis :


– Indépendance traitements/représentation logique des données :
• vues externes cachent les détails de l’organisation logique
– Indépendance représentation logique/représentation physique :
• schéma logique cache les détails du stockage physique (organisation sur disque, index, ...)
UTILISATEURS D’UN SGBD

• Utilisateur final :
– accède la BD par des formes d’écran, des interfaces applicatives ou, pour les plus experts, des
requêtes
• Développeur d’applications :
– conçoit et implémente des applications qui accèdent la BD
– construit (avec l’utilisateur) le schéma conceptuel
– définit et gère le schéma logique et les vues
– conçoit et implémente des applications qui accèdent la BD
• Administrateur BD :
– gère le schéma physique et règle les performances, charge et organise la BD
– gère la sécurité et la fiabilité
LANGAGES ET INTERFACES D’UN SGBD

• Langages de conception : E/A (Entité/Association), UML


– Utilisation : conception haut-niveau d’applications (données et traitements)
• Langages base de données : SQL, XQuery, SPARQL, ...
– langages déclaratifs : l’utilisateur spécifie quoi (et non comment)
– puissance d’expression limitée (par rapport à un langage de programmation comme C ou Java)
– utilisation : définition schémas, interrogation et mises-à-jour, administration
• Langages de programmation : PL/SQL, Python, JavaScript, Java...
– langages impératifs avec une interface SQL
– langage complet (au sens d’Alan Turing)
– utilisation : programmation d’applications complètes
PRÉCISIONS SUR LE LANGAGE SQL

• Langage de Définition de Données (LDD)


– pour définir les schémas externes (vues), logiques et physiques ex : CREATE TABLE CLIENT(NOM
varchar, TEL integer) ;
• Langage de Manipulation de Données (LMD)
– langage déclaratif pour interroger (langage de requêtes) et mettre à jour les données
• Ex :
– SELECT NOM FROM CLIENT ;
– INSERT INTO CLIENT VALUES(Dupont, 0143270771) ;

– peut être autonome (par ex. SQL seul) ou intégré dans un langage de programmation,
• Ex : travers une API (Application Programming Interface) comme JDBC (Java DataBase Connectivity)
UN TOUT PETIT PEU D’HISTOIRE

LE PASSAGE À L’INFORMATIQUE

• Le premier ordinateur (qui se différencie vraiment de la grosse calculette) a été inventé en


1949.
• Les premiers SGBD ont été créé vers 1960.
• La définition même de l’informatique est « la théorie et traitement de l’information à
l’aide de programmes mis en œuvre sur ordinateur »
• Il est important de comprendre l’état de l’informatique de l’époque pour comprendre la
notion de modèle relationnel, et surtout de la forme normale.

Liens intéressants :
- Les machines à calculer [Link]
- The imitation game (2014)
BRÈVE HISTOIRE
D U M AT É R I E L
I N F O R M AT I Q U E N U L
1900 – 1950
L’ È R E D E
L’ I N F O R M AT I Q U E
E N C A RTO N
La carte perforée

La version de la carte perforée


d’Hollerith consistait en 80 colonnes
contenant chacune 12 points de
perforation, pour une capacité de
stockage maximum de 960
octets. Les cartes perforées
connurent leur plus grand succès
dans les années 1930-1950, après
quoi elles furent progressivement
remplacées par les bandes
magnétiques.

Capacité de stockage : 0,00069 Mo


1950 – AJD
L E S TO C K A G E
MAG N ÉT I Q U E
La bande magnétique

Le premier ordinateur américain


commercialisé, l’UNIVAC I de 1951,
était aussi doté du tout premier
appareil de stockage par bande
magnétique, l’UNISERVO I. Cette
bande longue de 365 mètres était
capable d’enregistrer près de 50
octets par centimètre sur ces huit
pistes, à une vitesse de données de
12800 caractères à la seconde. Cela
représentait une capacité de stockage
encore inégalée de 1840 ko de
capacité brute et 1230 ko de
capacité effective.

Capacité de stockage : 1,23 Mo


1956
LA PREMIÈRE
MAC HIN E D E
S TO C K AG E
Le RAMAC 305

Il s'agissait d'un disque dur d'une


capacité de 5 Mo qui tenait d'ailleurs
plus d'une machine que du disque dur
tel qu'on le connaît aujourd'hui. Ses
dimensions étaient de 1,52 m x 0,74
m x1,72m. Ce meuble contenait 50
disques ayant un diamètre de 24
pouces (à peu près 61 cm.
L'ensemble pesait plus d'une
tonne. Il en coûtait 50 000
dollars par an pour disposer d'un
tel disque dur !

Capacité de stockage : 5 Mo
1960
LE CEC PDP-1
Possédait un interpréteur LISP

Entre 4K et 64K de mémoire vive

A créé un des tout premiers jeux


vidéo « spacewar! »

Il coûtait120.000 $
MAIS COMMENT
FAIRE BIEN AVEC SI
PEU DE MOYENS ?
EXEMPLE NAÏF
Numéro de vol Pilote Avion Vile de départ Vile d'arrivée Heure de départ Heure d'arrivée
1234 Jean Michel A380 Paris Marseille 10h 11h
2345 Jean Marc A380 Marseille Paris 11h 12h
3456 Jean Eude A380 Paris Toulouse 10h 11h
4567 Jean Bon B747 Toulouse Paris 11h 12h
5678 Jean Michel A380 Paris Marseille 10h 11h
6789 Jean Eude A380 Paris Toulouse 11h 12h
7890 Jean Michel B747 Paris Zurich 10h 11h30
8901 Jean Marc B747 Zurich Paris 11h 12h30
9012 Jean Bon A380 Toulouse Paris 10h 11h

Problèmes :
- Duplication de données
- Listing compliqué
- Comment faire pour renseigner une autre dimension de données, par exemple inscrire le salaire d’un pilote
LE MODÈLE RELATIONNEL

• Une base de données se compose de tables (relations)


• Les colonnes de chaque table sont nommées par des attributs
• Chaque attribut est associé à un domaine (ensemble de valeurs admissibles)
• Les données dans chaque table sont constituées par l’ensemble des rangées/lignes (tuples)
fournissant des valeurs pour les attributs
• Pas d’ordre sur les tuples (relations = ensembles non ordonnés)
– Caque tuple est indépendant, leur ordre d’apparition dans une liste n’a aucune signification
• (en général) ordre sur les valeurs des attributs dans un tuple
– L’ordre des attributs est généralement défini. On regroupera les dates ensemble par exemple.
EXEMPLE CORRIGÉ
Pilote Ville Avion
Id_pilote nom_pilote salaire id_ville nom_ville Id_avion type_avion nom_avion capacite

1 Jean Michel 120000 1 Paris 1 A380 Dora 800

2 Jean Marc 120000 2 Marseille 2 B747 Betty 460

3 Jean Eude 120000 3 Zurich

4 Jean Bon 100000 4 Toulouse

Vols
id_vol Id_pilote Id_avion Id_ville_depart Id_ville_arrivee heure_depart heure_arrivee

1234 1 1 1 2 10h 11h

2345 2 1 2 1 11h 12h

3456 3 1 1 4 10h 11h

4567 4 2 4 1 11h 12h

5678 1 1 1 2 10h 11h

6789 3 1 1 4 11h 12h

7890 1 2 1 3 10h 11h30

8901 2 2 3 1 11h 12h30

9012 4 1 4 1 10h 11h


SCHÉMA D'UNE RELATION :
« DÉCLARATION DE TYPE »
• Nom de la relation Avion
• Ensemble des attributs Id_avion type_avion nom_avion capacite

1 A380 Dora 800


• Domaine de chaque attribut
2 B747 Betty 460
• Contraintes d’intégrité

Exemple : AVION(id_avion, type_avion, nom_avion, capacite) I

- id_avion : entier obligatoire


- type_avion : valeur parmi A380, B747, B777,
- nom_avion : chaîne de caractères limitée à 30
- capacite : entier < 1000
TYPE D’ATTRIBUT

• Au moins un attribut par relation (table)


• Chaque attribut d’une relation a un nom
• L’ensemble des valeurs admises pour chaque attribut est appelé le domaine de l’attribut
• Les valeurs d’attributs doivent normalement être atomiques (i.e., indivisibles)
• Jamais deux attributs identiques (nom, domaine)

• Parfois la valeur spéciale NULL est incluse dans le domaine


– NULL = absence de valeur
– NULL ≠ 0
– NULL ≠ chaîne de caractères vide
BASES DE DONNÉES

• Une base de données se compose de plusieurs relations.


• L’information qui concerne une application est divisée en parties, chaque relation stockant une
partie de l’information
– pilote : stocke l’information sur les pilotes
– avion : stocke l’information sur les avions
– vol : stocke l’information sur les vols (dont le pilote et l’avion du vol)

• Stocker toute l’information dans une seule relation comme airfrance(plnum, plnom, salaire,
avnum, avnom, capacité, volnum, villedep, villearr, heuredep, heurearr) est possible mais pas
souhaitable :
– entraîne répétition de l’information et valeurs de données nulles
CONTRAINTES D’INTÉGRITÉ
Une contrainte d’intégrité est une condition (logique) qui doit être satisfaite par
les données stockées dans la BD.

• Exemple : pour qu’un pilote apparaisse dans la relation Vol il faut qu’il apparaisse dans la
relation Pilote.

• But : maintenir la cohérence / l’intégrité de la BD :


– Vérifier / valider automatiquement (en dehors de l’application) les données lors des mises à jour :
insertions, modifications, effacements
– Déclencher automatiquement des mises à jour entre tables pour maintenir la cohérence globale

• Exemples : clefs primaires, clefs étrangères


CLEFS PRIMAIRES

• La clé primaire d’une relation R est l’attribut ou l’ensemble des attributs (avec le moins
d’attributs possible) qui identifie de manière unique chaque tuple de la relation.
• Exemple :
– ID_PLOTE est la clé primaire de PILOTE car (on suppose que) chaque pilote possède un numéro
unique.
• A la slide 39, les clés primaires étaient soulignées.
• Il n’y a qu’une seule clé primaire par relation.
• La valeur des attributs clefs primaires ne peut jamais être nulle dans aucun tuple de R

Note : on peut aussi requérir que des attributs n’appartenant pas à la clef primaire soient non
nuls.
CLEFS PRIMAIRES

Exemple de relation avec une clef primaire composée de plusieurs attributs :

INE SESSION UE NOTE


62-B-19 2021-2022-1 BD3 6
62-B-19 2021-2022-2 BD3 19
67-G-19 2021-2022-1 BD3 10
… … …

• Clef primaire : (INE, SESSION, UE)


• Chaque étudiant ne peut avoir qu’une note par session pour chaque UE.
DÉPENDANCE D’INCLUSION

Exemple : tous les vols sont assurés par des avions déjà recensés dans la base de données.

• Dépendance d’inclusion "E inclus dans F"


– entre un sous-ensemble d’attributs E d’une relation R et un autre F d’une relation S
– notée R.E ⊆ S.F
• Si et Seulement Si
l’ensemble des valeurs de chaque tuple de R pour les attributs de E est inclus dans l’ensemble
des valeurs de chaque tuple de S pour les attributs de F.
DÉPENDANCE D’INCLUSION
Avion
On a Id_avion type_avion nom_avion capacite
Vol.id_avion ⊆ Avion.id_avion 1 A380 Dora 800
Car toutes les valeurs de Vol.id_avion sont
2 B747 Betty 460
dans Avion.id_avion

Vols
id_vol Id_pilote Id_avion Id_ville_depart Id_ville_arrivee heure_depart heure_arrivee

1234 1 1 1 2 10h 11h

2345 2 1 2 1 11h 12h

3456 3 1 1 4 10h 11h

4567 4 2 4 1 11h 12h

5678 1 1 1 2 10h 11h

6789 3 1 1 4 11h 12h

7890 1 2 1 3 10h 11h30

8901 2 2 3 1 11h 12h30

9012 4 1 4 1 10h 11h


CLEFS ÉTRANGÈRES

Exemple de clef étrangère :


id_avion est clef étrangère de Vol car
• On a la dépendance d’inclusion : Vol.id_avion ⊆ Avion.id_avion (clef étrangère en partie
gauche & clef primaire en partie droite)
• Et id_avion est clé primaire de Avion
AUTRES TYPES CONTRAINTES D’INTÉGRITÉ

Outre les contraintes d’intégrité définies par les clés primaires / étrangères, on peut implémenter
d’autre types de contraintes.

Il existe d’autres types de contraintes plus fines :


• "tous projets cumulés, un même employé ne peut travailler plus de 56h par semaine"
• "le salaire d’un employé ne peut jamais être baissé"
⇒ langages de spécification de contraintes
⇒ triggers, ASSERTIONS

Vous aimerez peut-être aussi