nitiation aux bases de donnees ycee ellevue cours
TRANSCRIPT
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 1/7
COURS 6 : REVISIONS BASES DE DONNEES
1. INTRODUCTION ........................................................................................................................................... 1 1.1. Principe de lâarchitecture .......................................................................................... 1 1.2. Organisation dâune Base de donnĂ©es ........................................................................ 2
2. OPERATEURS ................................................................................................................................................ 4 2.1. Opérateurs simples ................................................................................................... 4 2.2. Opérateurs complexes .............................................................................................. 4
3. SYNTAXE SQL ............................................................................................................................................... 5 4. CONSULTATION DâUNE BASE DE DONNEES EN PYTHON ............................................................... 7
Compétences attendues :
Client/serveur architecture trois-tiers Vocabulaire des bases de données : relation, attribut, domaine, schéma de relation ; notion de clé
primaire
Opérateurs usuels sur les ensembles dans un contexte de bases de données : union, intersection,
différence.
OpĂ©rateurs spĂ©cifiques de lâalgĂšbre relationnelle : projection, sĂ©lection (ou restriction), renommage,
Jointure symĂ©triques ou simples, produit et division cartĂ©siennes ; fonctions dâagrĂ©gation : min,
max,somme, moyenne, comptage
1. INTRODUCTION
Les bases de données appartiennent aux systÚmes informatiques qui nous aident à gérer des données trÚs diverses.
Nous avons donc, dâun cĂŽtĂ©, un serveur de donnĂ©es quelque part sur la Toile, avec des disques magnĂ©tiques et
leurs pistes qui gardent prĂ©cieusement des sĂ©quences de bits, des structures dâaccĂšs compliquĂ©es comme des index
ou des arbres-B, des hiĂ©rarchies de mĂ©moires avec leurs caches et, de lâautre, un utilisateur.
Un moteur de recherche de la Toile ne fait pas autre chose, seulement il le fait sur un systĂšme de fichiers Ă lâĂ©chelle
de la planÚte. Les systÚmes qui gÚrent aussi des données mais qui sont bien plus sophistiqués que les systÚmes de
fichiers : les systÚmes de gestion de bases de données. (SGBD)
Ce sont des logiciels complexes, rĂ©sultats de dizaines dâannĂ©es de recherche et de dĂ©veloppement. Ils permettent Ă
des individus ou des programmes dâexprimer des requĂȘtes pour interroger des bases de donnĂ©es ou pour les
modifier. Nous nous focaliserons ici sur les plus rĂ©pandus dâentre ces systĂšmes, les systĂšmes relationnels, parmi
lesquels nous trouvons :
- des logiciels commerciaux trĂšs rĂ©pandus comme celui dâOracle ;
- et des logiciels libres trÚs utilisés comme MySQL.
1.1. Principe de lâarchitecture
Abstraction : le systÚme doit organiser et présenter les données de façon intuitive et permettre de les
manipuler en restant Ă un niveau abstrait sans avoir Ă considĂ©rer des dĂ©tails dâimplĂ©mentation.
Indépendance : nous distinguons trois niveaux, physique, logique et externe. Le but est de pouvoir modifier
un niveau (par exemple, ajouter un nouvel utilisateur externe avec de nouveaux besoins) sans modifier les
autres niveaux.
UniversalitĂ© : capturer toutes les donnĂ©es dâune entreprise, dâun groupe, dâune organisation quelconque,
pour tout type dâapplications
Une premiÚre architecture est celle des systÚmes client/serveur. La base de données est gérée sur un serveur.
Lâapplication tourne sur une autre machine, le client. De plus en plus, cette architecture se complique avec
lâintroduction dâun troisiĂšme âtiersâ , une machine qui gĂšre lâinterface, typiquement un navigateur Web.
On appelle SGBD un systÚme de gestion de base de données, en anglais DBMS (Data Base Management System).
Nous pouvons noter différentes évolutions générées par des améliorations dans les matériels disponibles :
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 2/7
lâaccroissement des performances notamment fondĂ©es sur les mĂ©moires vives de plus en plus massives, et
des mémoires flash encore plus massives ;
lâutilisation de plus en plus de parallĂ©lisme massif dans des grappes de machines pour traiter dâĂ©normes
volumes de donnĂ©es. On parle parfois de âbig dataâ ;
pour simplifier la gestion de donnĂ©es, on tend Ă la dĂ©porter dans les nuages (le cloud), câest-Ă -dire Ă mettre
ses données dans des grappes de machines gérées par des spécialistes comme Amazon.
1.2. Organisation dâune Base de donnĂ©es
Généralement, une base de données s'organise de la maniÚre suivante :
BASE DE DONNEES/DATABASE TABLE(S)/TABLE(S) CHAMPS/FIELD(S)
VALEUR(S)/VALUE(S)
Les Ă©lĂ©ments d'une base de donnĂ©es sont rangĂ©s en tables, qui elles-mĂȘmes contiennent des champs qui peuvent
avoir plusieurs valeurs.
Le modĂšle le plus courant pour reprĂ©senter les bases de donnĂ©es est le modĂšle relationnel, qui utilise lâalgĂšbre
relationnelle.
Dans le modÚle relationnel, les données sont organisées en tableaux à deux dimensions que nous appellerons des
relations. à la différence des mathématiciens, nous supposons les relations de taille finie.
Une table ou relation est donc un tableau fini à deux dimensions, dans lequel les éléments de chaque colonne sont
tous de mĂȘme type.
Une colonne est appelée attribut.
Ă chaque attribut est associĂ© un domaine đ·đ = đđđ(đŽđ), gĂ©nĂ©ralement Ă©gal Ă un type
usuel, comme des chaĂźnes de caractĂšres, oĂč des adresses postales, des dates, des entiers
positifs, des noms propres, etc
Exemple des films en créant la base de données CINEMA
FILM SEANCES
Titre RĂ©alisateur Acteur Titre Salle Heure
Interstallar C. Nolan Matthew McConaughey La famille BĂ©lier 1 19 :00
Imitation Game M.Tyldum Matthew Goode Imitation Game 2 20 :00
La famille Bélier E. Lartigau François Damiens Interstellar 3 19 :15
Le Hobbit 3 P. Jackson Martin Freeman Interstellar 3 22 :30
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 3/7
Donner 3 attributs avec 3 domaines différents :
-
-
-
Plus gĂ©nĂ©ralement, on appelle schĂ©ma relationnel đ = (đŽ1, ⊠, đŽđ) un ensemble fini dâattributs, et alors une table
ou relation est un ensemble fini de n-uplets de đ·1 à ⊠à đ·đ.
On peut aussi noter đ = ((đŽ1, đ·1), . . ., (đŽđ, đ·đ)), et đ (đ) pour une relation đ de schĂ©ma relationnel đ. Par
exemple :
đ = ((đŽđđĄđđąđ; đđđ„đĄđ); (đ Ă©đđđđ đđĄđđąđ; đđđ„đĄđ); (đđđđđ; â); (đ»đđąđđ; â)) â¶
LâaritĂ© dâun schĂ©ma relationnel est son nombre dâattributs.
Donner le schĂ©ma relationnel et lâaritĂ© de FILM :
Une clef permet de diffĂ©rencier toutes les lignes de la table đ .
On peut citer comme exemple le numĂ©ro dâabonnĂ©, ou le numĂ©ro de film mais pas le nom du rĂ©alisateur, ni du film.
Dans le cas oĂč la clef est constituĂ©e dâun unique attribut, on parle dâidentifiant.
On choisit en gĂ©nĂ©ral une clef particuliĂšre quâon appelle clef primaire.
Exemple CINEMA : Ici il nây a pas encore de clĂ© ! Il faudra donner une clĂ© primaire Ă chacun des films.
LâalgĂšbre relationnelle consiste en un petit nombre dâopĂ©rations de base qui, appliquĂ©es Ă des relations, produisent
de nouvelles relations. Ces opĂ©rations peuvent ĂȘtre composĂ©es pour construire des expressions algĂ©briques de plus
en plus complexes.
Pour rĂ©pondre Ă la question OĂč et Ă quelle heure puis-je voir un film avec Francois Damiens ?, et pour faciliter la
lisibilitĂ© de ces formules logiques, on peut exprimer une requĂȘte en dĂ©finissant prĂ©cisĂ©ment la forme du n-uplet
(nommĂ©e res) en lui affectant les variables libres que lâon cherche Ă obtenir :
đđđ (đ , â), âđĄ, đ ; (đčđŒđżđ (đĄ, đ," đčđđđđđđđ đ·đđđđđđ ") ⧠đđžđŽđđ¶đžđ(đĄ, đ , â))
LâintĂ©rĂȘt de ce procĂ©dĂ© est quâon peut ensuite rĂ©utiliser les n-uplets rĂ©sultats exactement comme sâil
sâagissait dâune relation. Câest ce quâon appelle le mĂ©canisme des vues.
Une vue est une relation, qui au lieu dâĂȘtre stockĂ©e dans la base de donnĂ©es, est dĂ©finie
intentionnellement.
Un utilisateur de la base de donnĂ©es peut lâutiliser comme nâimporte quelle autre relation.
En pratique, les machines utilisent le langage SQL (pour Structured Query Language) qui exprime
diffĂ©remment les mĂȘmes questions. Par exemple la question prĂ©cĂ©dente sâexprime en SQL comme une
REQUETE :
SELECT salle, heure FROM Film, Seance WHERE Film.titre = Seance.titre AND acteur= "Francois Damiens"
Par la suite, nous allons donc Ă©tudier comment Ă©crire en algĂšbre relationnelle la question qui nous sert dâexemple. Il
nous faudra trois opĂ©rations, la jointure, la sĂ©lection et la projection, que nous composerons dans lâexpression
suivante de lâalgĂšbre relationnelle :
đžđ»đ” = đđ đđđđ,âđđąđđ (đđĄđđĄđđ(đđđđĄđđąđ = "đčđđđđđđđ đ·đđđđđđ ")(đčđŒđżđ) ) â đđžđŽđđ¶đžđ)
LâopĂ©ration de sĂ©lection, dĂ©notĂ©e đ, filtre une relation, ne gardant que les n-uplets satisfaisant une condition, ici
acteur = ," đčđđđđđđđ đ·đđđđđđ ". LâopĂ©ration de projection, dĂ©notĂ©e đ, permet aussi de filtrer de lâinformation dâune
relation mais cette fois en Ă©liminant des colonnes. LâopĂ©ration peut-ĂȘtre la plus exotique de lâalgĂšbre, la jointure,
dĂ©notĂ©e â, combine des n-uplets de deux relations.
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 4/7
2. OPERATEURS
2.1. Opérateurs simples
2.1.1. Union, intersection, différence
Soit đ 1(đ) et đ 2(đ) deux relations de mĂȘme schĂ©ma relationnel đ.
Alors les relations đ 1 âȘ đ 2, đ 1 â© đ 2 đđĄ đ 1 â đ 2, appelĂ© respectivement union, intersection, diffĂ©rence de đ 1 et de
đ 2, sont les relations de schĂ©ma relationnel đ qui contiennent les lignes qui appartiennent respectivement Ă đ 1 ou Ă
đ 2, Ă đ 1 et Ă đ 2, Ă đ 1 mais pas Ă đ 2.
2.1.2. Projection
Soit đ une table de schĂ©ma relationnel đ = (đŽ1, ⊠, đŽđ) et soit đâČ = (đŽđ1; , ⊠, đŽđđ) une partie de đ, câest-Ă -dire
quâon ne garde que certains attributs. La projection de đ đ đąđ đâČ est la table :
đđâČ(R) = {(đđŽđ1, ⊠, đđŽđđ), đ â đ }
2.1.3. SĂ©lection
Si đŽ est un attribut de đ , đđĄ đ un Ă©lĂ©ment du domaine de đŽ alors on appelle sĂ©lection ou restriction de đ selon la
condition đŽ = đ, la relation contenant les lignes de đ satisfaisant la condition đŽ = đ.
đđŽ=đ(đ ) = {đ â đ , đ. đŽ = đ}
2.1.4. Renommage
Soit đŽđ un attribut de đ . On peut changer son nom, on dit quâon renomme son nom en đ” ⶠđđ”âđŽ(đ ) est la relation
đ dans laquelle on a juste changĂ© le nom de đŽđ đđ đ”.
2.2. Opérateurs complexes
2.2.1. Produit et division cartésienne
Soit đ (đ) đđĄ đ âČ(đâČ) deux relations. On note đ âȘ đâČ lâunion de đ et de đâČ sâils sont disjoints (đâČâČ = đ â đâČ Ă©quivaut Ă đâČâČ = đ + đâČ et â© đâČ = â ).
On dĂ©finit alors le produit cartĂ©sien đ Ă đ âČ comme Ă©tant la relation de schĂ©ma đ â đâČ contenant les couples
(đ, đâČ) tels que đ â đ đđĄ đâČ â đ âČ.
Si
đ = (đŽ1 , ⊠, đŽđ) đđĄ đâČ = (đ”1 , ⊠, đ”đ)
alors đ Ă đ âČ admet pour schĂ©ma đ â đâČ = (đŽ1 , ⊠, đŽđ , đ”1 , ⊠, đ”đ), et
đ Ă đ âČ = {(đ„1 , ⊠, đ„đ, đŠ1, ⊠, đŠđ) | (đ„1, ⊠, đ„đ) â đ đđĄ (đŠ1, ⊠, đŠđ) â đ âČ}
2.2.2. Jointure symétrique
Cette opĂ©ration, dĂ©notĂ© â, sâapplique Ă deux relations quelconques I et J dâattributs V et W, respectivement, et
produit une relation dâattributs đ âȘ đ :
đŒ â đœ = {đĄ đ đąđ đ âȘ đ |đđ đđ„đđ đĄđ đŁ â đŒ đđĄ đ€ â đœ, đĄ|đ = đŁ đđĄ đĄ|đ = đ€}
Quand đđđ(đ) = đđđ(đ), đŒ â đœ = đŒ â© đœ (câest lâintersection ensembliste classique),
Quand đđđ(đ) â© đđđ(đ) = â ; alors đŒ â đœ est le produit cartĂ©sien de I et J, dĂ©notĂ© đŒ Ă đœ.
Ici on ne considĂšre que les jointures symĂ©triques đđđ(đ) = đđđ(đ) donc la relation est
đŒ â đœ = {(đ, đâČ) â đŒ Ă đœ | đ. đ = đâČđ} = đđ=đ(đŒ Ă đœ )
2.2.3. Fonctions dâagrĂ©gation : min, max, somme, moyenne, comptage
On regroupe les lignes dâune relation selon un critĂšre puis on applique la fonction. Ceci produit une nouvelle table.
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 5/7
Soit đ une relation de schĂ©ma đ. Soit đŽ đđĄ đ” deux attributs de đ , câest Ă dire deux Ă©lĂ©ments de đ. On note
đŽđŸđ(đ”)(đ ) la table obtenue :
- On regroupe les lignes qui ont le mĂȘme attribut đŽ, ce qui forme des agrĂ©gats,
- puis on applique la fonction đ sur les agrĂ©gats, ce qui crĂ©e une table dont les attributs sont đŽ đđĄ đ(đ”).
Plus gĂ©nĂ©ralement, soit đŽ1; ⊠; đŽđ đđĄ đ”1; ⊠; đ”đ des attributs de đ , đđĄ đ1 ; ⊠; đđ des fonctions dâagrĂ©gation sur les
đ”đ . On note đŽ1; ⊠; đŽđđŸđ1(đ”1); ⊠; đđ(đ”đ)(đ ) la table obtenue en agrĂ©geant selon les đŽđ (tous les đŽđ doivent ĂȘtre Ă©gaux), et
en appliquant les fonction đđ sur les agrĂ©gats.
3. SYNTAXE SQL
LâalgĂšbre relationnelle fait partie des fondements des bases de donnĂ©es relationnelles, utilisĂ© en interne par le
SGBD pour Ă©valuer les requĂȘtes. Le langage SQL quant Ă lui est destinĂ© aux utilisateurs du SGBD et, Ă lâheure
actuelle, est le langage standard dâinterrogation. Il marie dâune certaine façon lâalgĂšbre relationnelle et le calcul
relationnel de n-uplets.
Le langage de dĂ©finition de donnĂ©es permet la modification du schĂ©ma dâune base de donnĂ©es. Il propose trois
opérations : la création (CREATE), la suppression (DROP) et la modification (ALTER). Par exemple, la création
dâune table a pour syntaxe :
CREATE TABLE (table) ((définitions de colonnes) [( contraintes de table)]).
Le langage DDL permet de spĂ©cifier quâun ensemble dâattributs est clĂ© primaire (PRIMARY KEY), quâune
sĂ©quence dâattributs est clĂ© Ă©trangĂšre (FOREIGN KEY/REFERENCES). Il permet aussi de contraindre le
domaine dâun attribut (CHECK) ou quâun ensemble dâattributs ne contient pas de valeur manquante (NOT NULL).
Enfin, il permet, Ă la maniĂšre de PRIMARY KEY, de prĂ©ciser quâun ensemble dâattributs ne contient pas de
doublons (UNIQUE) ; à la différence de PRIMARY KEY, il est possible de spécifier plusieurs UNIQUE sur la
mĂȘme table.
Exemple CINEMA : table SALLES
CREATE TABLE SALLES( Nom VARCHAR(30) PRIMARY KEY, Adresse VARCHAR(255) UNIQUE NOT NULL, Telephone VARCHAR(10) );
Lâattribut Nom est
Maintenant que les tables sont créées on peut insérer des données :
INSERT INTO salles VALUES(âABC, â51 rue des Ecolesâ, â0561545160â);
Le dernier aspect du langage SQL que nous Ă©tudierons est lâinterrogation des donnĂ©es grĂące Ă lâinstruction
SELECT :
SELECT (liste dâexpressions) FROM (liste de tables) WHERE (conditions) GROUP BY (liste dâattributs) HAVING (conditions) ORDER BY (liste dâattributs)
Les rĂŽles des trois premiĂšres lignes sont les suivants :
La clause SELECT spécifie le schéma de sortie (projection).
La clause FROM précise les tables impliquées et leurs liens (produit cartésien et jointures).
La clause WHERE fixe les conditions que doivent remplir les n-uplets résultats (sélection).
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 6/7
Les trois derniĂšres clauses nous font sortir du calcul et de lâalgĂšbre relationnelle :
La clause GROUP BY comment regrouper des n-uplets (agrégation) ?
La clause HAVING impose une condition sur les groupes (i.e. permet dâĂ©liminer lâintĂ©gralitĂ© dâun
groupe, en se basant sur la valeur dâun agrĂ©gat calculĂ© sur ce groupe).
Enfin ORDER BY définit les critÚres de tris des résultats.
La clause SELECT est suivie dâune liste dâexpressions qui reprennent les opĂ©rations de lâalgĂšbre relationnel. Le
tableau suivant regroupe ces expressions les plus courantes :
AVG() pour calculer la moyenne dâun set de valeur.
COUNT() pour compter le nombre de lignes concernées.
MAX() pour récupérer la plus haute valeur.
MIN() pour récupérer la plus petite valeur.
SUM() pour calculer la somme de plusieurs lignes.
C4: INITIATION AUX BASES DE DONNEES LYCEE BELLEVUE
Fabien Hospital 7/7
4. CONSULTATION DâUNE BASE DE DONNEES EN PYTHON
Il est possible dâinterroger la base de donnĂ©es en utilisant Python. Pour cela, on utilise le formalisme suivant :
import os # Import des commandes permettant de gĂ©rer les rĂ©pertoires de travail os.chdir(âC:/Users/Revisions Bddâ) # on se place dans le rĂ©pertoire ou se trouve la base de donnĂ©e import sqlite3 # Import des commandes permettant de manipuler la base de donnĂ©es basesql = u"aeroports.db3" # Base de donnĂ©es initiale cnx = sqlite3.connect(basesql ) curseur = cnx.cursor () requete = "SELECT * FROM airports" curseur .execute(requete)
Le prĂ©fixe u permet dâimporter les fichiers encodĂ©s en UTF-8. Dans
une certaine mesure, les caractÚres spéciaux sont alors pris en compte.
Le curseur est un objet contenant le rĂ©sultat de la requĂȘte. Pour visualiser la premiĂšre entitĂ© de la requĂȘte, la syntaxe
est la suivante :
data = curseur.fetchone() print (data)
Attention, Ă chaque utilisation de fetchone(), lâentitĂ© est supprimĂ©e du curseur. Pour parcourir chacune des entitĂ©s,
on peut utiliser la syntaxe suivante :
for cur in curseur : print (cur)
Attention, cette opĂ©ration peut sâavĂ©rer maladroite si la requĂȘte a un grand nombre dâentitĂ©s.
Donner la requĂȘte SQL qui dĂ©termine le nombre de bases dâhydravion existantes. En utilisant la fonction
dâagrĂ©gation COUNT pour obtenir un rĂ©sultat Ă©quivalent
requete2 =
Donner la requĂȘte SQL ainsi que son expression en algĂšbre relationnelle qui permet de trouver liste des villes
françaises (iso_country=âFRâ) hĂ©bergeant de telles bases.
requete3 =