Les bases de données. L un des objectifs de l informatique est le traitement de grandes quantité d informations.

Documents pareils
Langage SQL : créer et interroger une base

Le langage SQL Rappels

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

SQL Historique

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

1 Introduction et installation

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Les bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

Olivier Mondet

Bases de données relationnelles

CREATION WEB DYNAMIQUE

Création et Gestion des tables

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Introduction au Système de Gestion de Base de Données et aux Base de Données

Le langage SQL (première partie) c Olivier Caron

PHP 5. La base de données MySql. A. Belaïd 1

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

TD n 10 : Ma première Base de Données

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Le Langage De Description De Données(LDD)

Le Langage SQL version Oracle

Cours SQL. Base du langage SQL et des bases de données

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Compétences Business Objects

16H Cours / 18H TD / 20H TP

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

1. Base de données SQLite

Les BASES de DONNEES dans WampServer

TP3 : Creation de tables 1 seance

Bases de données Cours 4 : Le langage SQL pour ORACLE

Pour les débutants. langage de définition des données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

TP Contraintes - Triggers

Introduction aux Bases de Données 2004/2005

Partie 0 : Gestion des tablespace et des utilisateurs... 3

MySQL / SQL EXEMPLES

Bases de données élémentaires Maude Manouvrier

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

I4 : Bases de Données

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

FileMaker 13. Guide de référence SQL

Application web de gestion de comptes en banques

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Introduction à JDBC. Accès aux bases de données en Java

Cours Bases de données 2ème année IUT

Vincent Augusto

INTRODUCTION AU DATA MINING

I. MySQL : Serveur et SGBD

Systèmes de Gestion de Bases de Données

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Optimisation SQL. Quelques règles de bases

1 Position du problème

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

OpenPaaS Le réseau social d'entreprise

Cours: Administration d'une Base de Données

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Cours 4 : Agrégats et GROUP BY

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

A QUOI SERVENT LES BASES DE DONNÉES?

Historisation des données

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Structured Query Language

INTRODUCTION : Données structurées et accès simplifié

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Bases de données Outils de gestion

1/ Présentation de SQL Server :

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

WEB DEVELOPER SGBD SYSTEME DE GESTION DE BASES DE DONNEES L étudiant sera capable :

BTS/CGO P10 SYSTEME INFORMATION Année

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Devoir Data WareHouse

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Pratique et administration des systèmes

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

A QUOI SERVENT LES BASES DE DONNÉES?

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Bases de Données Avancées

IFT3030 Base de données. Chapitre 1 Introduction

Objectifs du TP : Initiation à Access

LE LANGAGE SQL2 1. INTRODUCTION

Présentation Windows Azure Hadoop Big Data - BI

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Transcription:

Introduction Les bases de données Les bases de données L un des objectifs de l informatique est le traitement de grandes quantité d informations. Une solution efficace pour organiser une grande quantité d informations est la base de données relationnelle. Les outils permettant d interagir avec ces bases de données sont appelés systèmes de gestion de bases de données (SGBD). Il en existe de nombreux, beaucoup d entre eux utilisant, pour interagir avec les données, le langage SQL (Simple Query Language). Exemples : MySQL, Oracle, PostGreSQL, SQLite... G. Dewaele Bases de données relationnelles 16 mai 2017 1 / 72

Introduction Les bases de données Les tables Une base de données regroupe un ensemble de tables, lesquelles peuvent être représentées sous la forme de tableaux bi-dimensionnels. TABLE Avions : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 2 / 72

Introduction Les bases de données Les tables Une base de données comprend généralement plus d une table, et les systèmes de gestions de base de données permettent de croiser les données de plusieurs tables. TABLE Compagnies : Code Compagnie Modèle Nombre AF Air France 777-200 25 AF Air France A321-200 15 AF Air France A330-200 15 AF Air France A340-300 12 AC Air Canada 777-200 6 AC Air Canada A321-200 10 AC Air Canada CRJ-100 51 G. Dewaele Bases de données relationnelles 16 mai 2017 3 / 72

Introduction Les bases de données Attributs et domaines Chaque colonne d une table correspond à un attribut. L ensemble des valeurs possibles pour un attribut est appelé domaine de l attribut (chaîne de caractères, valeur numérique, booléen, etc) TABLE Avions : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 4 / 72

Introduction Les bases de données Attributs manquants Certaines «cases» d une table peuvent être vides. (En pratique, elles contiennent une valeur spéciale, NULL, ne faisant pas partie du domaine de l attribut en question). TABLE Avions : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 5 / 72

Introduction Les bases de données Enregistrements Les lignes de la tables sont généralement appelées enregistrements. TABLE Avions : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 6 / 72

Introduction Objectifs Objectifs d une base de données Les bases de données permettent de stocker une grande quantité de données de différentes natures, et de les mettre en relation afin de répondre à des questions variées et complexes : Quel est le bi-moteur encore en service avec la plus grande capacité? Combien de modèles d Airbus contient la flotte d Air France? Quels sont les fabricants d avions qui proposent un modèle permettant d effectuer Paris - Pékin sans escale? Quelle est la dix-septième compagnie dont le nom ne commance pas par «A» ayant le plus d avions pouvant transporter entre quatre-vingt-sept et cent onze passagers? Et globalement, toutes ces questions qui vous empêchent de dormir la nuit. G. Dewaele Bases de données relationnelles 16 mai 2017 7 / 72

Principe Principe des requêtes Le langage SQL permet de transcrire ces questions sous la forme de requêtes qui pourront être comprises par la base de donnée. Le résultat d une requête doit impérativement avoir la forme d une table (qui peut-être réduite à une seule case). Quels sont les fabricants d avions ont fourni des appareils biréacteurs actuellement en service dans la flotte d Air France? SELECT DISTINCT A.Fabricant FROM Avions AS A JOIN Compagnies AS C ON A.Modèle = C.Modèle WHERE A.Moteurs = 2 AND C.Compagnie = Air France G. Dewaele Bases de données relationnelles 16 mai 2017 8 / 72

Projection, sélection Projections On peut sélectionner certains attributs en effectuant une projection grâce au mot-clé SELECT : SELECT Modèle, Moteurs FROM Avions Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 9 / 72

Projection, sélection Suppression des doublons Le mot-clé DISTINCT, placé derrière le mot-clé SELECT, permet d éliminer les doublons dans le résultat : SELECT DISTINCT Fabricant, Moteurs FROM Avions Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 10 / 72

Projection, sélection Calculs Il est possible de créer temporairement des attributs supplémentaires en utilisant des expressions : SELECT Modèle, Places/Moteurs FROM Avions Modèle Fabricant Moteurs Places Autonomie Pl./Mot. 737-900 Boeing 2 215 5926 107.5 777-200 Boeing 2 440 14307 220 A321-200 Airbus 2 220 5926 110 A330-200 Airbus 2 380 13890 190 A340-300 Airbus 4 440 13705 110 CRJ-100 Bombardier 2 50 1574 25 G. Dewaele Bases de données relationnelles 16 mai 2017 11 / 72

Projection, sélection Sélection sur critère booléen On peut également effectuer des sélections, c est-à-dire ne conserver que les enregistrements vérifiant une expression booléenne grâce au mot-clé WHERE : SELECT Modèle, Fabricant, Moteurs, Planes, Autonomie FROM Avions WHERE Places > 250 Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 12 / 72

Projection, sélection Sélection sur critère booléen Pour obtenir la totalité des attributs, on peut utiliser «*» : SELECT * FROM Avions WHERE Places > 250 Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 13 / 72

Projection, sélection Expressions booléennes utiles Pour savoir si un attribut figure parmi un ensemble de valeurs, on dispose du mot-clé IN : SELECT * FROM table WHERE nom IN (val1, val2, val3) Pour identifier les «cases vides» (attribut non présent dans un enregistrement), on utilisera IS NULL (ou IS NOT NULL) : SELECT * FROM table WHERE nom IS NOT NULL Pour faire des recherches sur une partie d une chaîne, on peut utiliser LIKE, le caractère % pouvant remplacer n importe quelle suite de caractères : SELECT * FROM table WHERE nom LIKE % Dupont G. Dewaele Bases de données relationnelles 16 mai 2017 14 / 72

Projection, sélection Opérateurs booléens Les opérateurs booléens OR, AND et NOT permettent de combiner les expressions booléennes : SELECT * FROM Avions WHERE Places > 250 AND Moteurs = 2 Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 15 / 72

Projection, sélection Sélection et projection Il est bien entendu possible de combiner sélection et projection : SELECT Modèle, Moteurs FROM Avions WHERE Places > 250 AND Moteurs = 2 Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 16 / 72

Organisation des résultats Tri des résultats Pour ordonner les résultats, on peut utiliser le mot-clé ORDER BY : (on peut utiliser une expression, et les attributs n ont pas besoin d être sélectionnés) SELECT Modèle, Moteurs FROM Avions ORDER BY Places Modèle Fabricant Moteurs Places Autonomie CRJ-100 Bombardier 2 50 1574 737-900 Boeing 2 215 5926 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 777-200 Boeing 2 440 14307 A340-300 Airbus 4 440 13705 G. Dewaele Bases de données relationnelles 16 mai 2017 17 / 72

Organisation des résultats Tri des résultats Le mot-clé DESC permet d obtenir les résultats dans l ordre décroissant : SELECT Modèle, Moteurs FROM Avions ORDER BY Places DESC Modèle Fabricant Moteurs Places Autonomie 777-200 Boeing 2 440 14307 A340-300 Airbus 4 440 13705 A330-200 Airbus 2 380 13890 A321-200 Airbus 2 220 5926 737-900 Boeing 2 215 5926 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 18 / 72

Organisation des résultats Limitation du nombre de résultats On peut ne conserver que les n premiers résultats avec le mot-clé LIMIT : SELECT Modèle, Moteurs FROM Avions ORDER BY Places LIMIT 3 Modèle Fabricant Moteurs Places Autonomie CRJ-100 Bombardier 2 50 1574 737-900 Boeing 2 215 5926 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 777-200 Boeing 2 440 14307 A340-300 Airbus 4 440 13705 G. Dewaele Bases de données relationnelles 16 mai 2017 19 / 72

Organisation des résultats Décalage On peut ignorer les n premiers résultats avec le mot-clé OFFSET : SELECT Modèle, Moteurs FROM Avions ORDER BY Places OFFSET 2 LIMIT 3 Modèle Fabricant Moteurs Places Autonomie CRJ-100 Bombardier 2 50 1574 737-900 Boeing 2 215 5926 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 777-200 Boeing 2 440 14307 A340-300 Airbus 4 440 13705 G. Dewaele Bases de données relationnelles 16 mai 2017 20 / 72

Aggrégation Compter La fonction COUNT permet d effectuer des décomptes dans le résultat de la requête : SELECT COUNT(*) FROM Avions Modèle Fabricant Moteurs Places Autonomie COUNT 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 6 G. Dewaele Bases de données relationnelles 16 mai 2017 21 / 72

Aggrégation Compter Les «cases» vides (contenant NULL) ne sont pas comptées. COUNT(Moteurs) compte les enregistrements pour lesquels l attribut Moteur n est pas vide. COUNT(Moteurs, Places) compte les enregistrements pour lesquels les attributs Moteur et Places ne sont pas tous les deux vides. COUNT(*) compte tous les enregistrements. G. Dewaele Bases de données relationnelles 16 mai 2017 22 / 72

Aggrégation Compter les valeurs uniques Il est possible de dénombrer les différentes valeurs prises par l attribut, grâce à DISTINCT : SELECT COUNT(DISTINCT Fabricant) FROM Avions Modèle Fabricant Moteurs Places Autonomie COUNT 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 3 G. Dewaele Bases de données relationnelles 16 mai 2017 23 / 72

Aggrégation Compter avec condition Si l on combine une sélection et un décompte, seuls sont comptés les enregistrements respectant la condition : SELECT COUNT(*) FROM Avions WHERE Moteurs = 2 Modèle Fabricant Moteurs Places Autonomie COUNT 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 5 G. Dewaele Bases de données relationnelles 16 mai 2017 24 / 72

Aggrégation Valeur maximale Il est également possible de déterminer la plus grande valeur d un attribut grâce au mot-clé MAX : SELECT MAX(Places) FROM Avions WHERE Autonomie < 10000 Modèle Fabricant Moteurs Places Autonomie MAX(Pl.) 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 220 G. Dewaele Bases de données relationnelles 16 mai 2017 25 / 72

Aggrégation Autres fonctions Diverses fonctions sont disponibles : MAX : retourne le plus grand élément MIN : retourne le plus petit élément SUM : retourne la somme des éléments AVG : retourne la moyenne des éléments VARIANCE : retourne l écart-type des éléments... La disponibilité de ces fonctions peut varier d un système de gestion de bases de données à l autre. G. Dewaele Bases de données relationnelles 16 mai 2017 26 / 72

Aggrégation Mélanger attributs et fonctions Le résultat devant être une table, mélanger attributs et fonctions peut donner une erreur, ou un résultat partiellement «aléatoire». La requête suivante est admise avec SQLite, mais pas avec Oracle SQL : SELECT Modèle, MAX(Places) FROM Avions Modèle Fabricant Moteurs Places Autonomie MAX(Pl.) 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 440 G. Dewaele Bases de données relationnelles 16 mai 2017 27 / 72

Aggrégation Grouper Il est possible de regrouper les valeurs identiques d un attribut, grâce au mot-clé GROUP BY : SELECT Fabricant FROM Avions GROUP BY Fabricant Modèle Fabricant Moteurs Places Autonomie 737-900 2 215 5926 Boeing 777-200 2 440 14307 A321-200 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 28 / 72

Aggrégation Grouper Le résultat doit rester une table, aussi sélectionner des attributs non-groupés ne fonctionne pas toujours : SELECT Modèle, Fabricant FROM Avions GROUP BY Fabricant Modèle Fabricant Moteurs Places Autonomie 737-900 2 215 5926 Boeing 777-200 2 440 14307 A321-200 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 29 / 72

Aggrégation COUNT, MIN, MAX... et groupes Les fonctions telles que COUNT ou MAX agissent sur les groupes : SELECT Fabricant, COUNT(*) FROM Avions GROUP BY Fabricant Modèle Fabricant Moteurs Places Autonomie COUNT 737-900 2 215 5926 Boeing 777-200 2 440 14307 A321-200 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 4 440 13705 CRJ-100 Bombardier 2 50 1574 1 2 3 G. Dewaele Bases de données relationnelles 16 mai 2017 30 / 72

Aggrégation Groupes sur plusieurs critères Il est possible de regrouper les enregistrements sur plusieurs attributs : SELECT Fabricant, MIN(Places) FROM Avions GROUP BY Fabricant, Moteurs Modèle Fabricant Moteurs Places Autonomie MIN(Pl.) 737-900 215 5926 Boeing 2 777-200 440 14307 A321-200 220 5926 Airbus 2 A330-200 380 13890 215 220 A340-300 Airbus 4 440 13705 440 CRJ-100 Bombardier 2 50 1574 50 G. Dewaele Bases de données relationnelles 16 mai 2017 31 / 72

Aggrégation Filtrer les groupes De la même façon que l on peut sélectionner des enregistrements, on peut filtrer les groupes grâce au mot-clé HAVING : SELECT Fabricant, MIN(Places) FROM Avions GROUP BY Fabricant, Moteurs HAVING MIN(Places) > 215 Modèle Fabricant Moteurs Places Autonomie MIN(Pl.) 737-900 215 5926 Boeing 2 777-200 440 14307 A321-200 220 5926 Airbus 2 A330-200 380 13890 215 220 A340-300 Airbus 4 440 13705 440 CRJ-100 Bombardier 2 50 1574 50 G. Dewaele Bases de données relationnelles 16 mai 2017 32 / 72

Aggrégation Double filtrage WHERE et HAVING peuvent être utilisés dans une même requête (WHERE agit avant le regroupement, HAVING après) : SELECT Fabricant, MIN(Places) FROM Avions WHERE Autonomie > 10000 GROUP BY Fabricant, Moteurs HAVING MIN(Places) > 215 Modèle Fabricant Moteurs Places Autonomie MIN(Pl.) 737-900 215 5926 Boeing 2 777-200 440 14307 A321-200 220 5926 Airbus 2 A330-200 380 13890 440 380 A340-300 Airbus 4 440 13705 440 CRJ-100 Bombardier 2 50 1574 50 G. Dewaele Bases de données relationnelles 16 mai 2017 33 / 72

Aggrégation Ordre des éléments Il convient de conserver les éléments de la requête dans un ordre logique, correspondant à la chronologie des opérations : WHERE avant GROUP BY HAVING après GROUP BY ORDER BY après les opérations de sélection OFFSET / LIMIT en dernier La projection (SELECT) est la dernière opération effectuée, elle n est placée en tête que par commodité pour la lecture. G. Dewaele Bases de données relationnelles 16 mai 2017 34 / 72

Aggrégation Exemple de requête combinant tous les éléments SELECT Fabricant, MIN(Places) FROM Avions WHERE Autonomie > 10000 GROUP BY Fabricant, Moteurs HAVING MIN(Places) > 215 ORDER BY MIN(Places) DESC OFFSET 2 LIMIT 1 Modèle Fabricant Moteurs Places Autonomie MIN(Pl.) 737-900 215 5926 Boeing 2 777-200 440 14307 A321-200 220 5926 Airbus 2 A330-200 380 13890 440 380 A340-300 Airbus 4 440 13705 440 CRJ-100 Bombardier 2 50 1574 50 G. Dewaele Bases de données relationnelles 16 mai 2017 35 / 72

Sous-requêtes Sous-requêtes Le résultat d une requête peut servir dans une autre requête. On place la sous-requêtre entre parenthèses. Pour une sous-requête renvoyant une valeur, dans une expression : SELECT * FROM Avions WHERE Places > (SELECT AVG(Places) FROM Avions) : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 36 / 72

Sous-requêtes Sous-requêtes Pour une sous-requête renvoyant une «liste» (table réduite à un seul attribut), dans une expression booléenne, avec le mot-clé IN : SELECT Modèles FROM Avions WHERE Fabricant IN (SELECT DISTINCT Fabricant FROM Avions WHERE Places > 400) Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 37 / 72

Sous-requêtes Sous-requêtes Enfin, une sous-requête renvoyant une «table» peut servir de table : SELECT AVG(TMin) FROM (SELECT Fabricant, MIN(Places) AS TMin FROM Avions GROUP BY Fabricant) Modèle Fabricant Mot. Places Auton. TMin AVG(TM.) 737-900 2 215 5926 Boeing 777-200 2 440 14307 215 A321-200 2 220 5926 A330-200 Airbus 2 380 13890 220 A340-300 4 440 13705 CRJ-100 Bombardier 2 50 1574 50 On remarquera le AS pour nommer une colonne de la sous-requête. 161.33 G. Dewaele Bases de données relationnelles 16 mai 2017 38 / 72

Jointures Combiner les tables Le plein intérêt des systèmes de gestion de bases de données ne se révèle que lorsque l on croise les informations de plusieurs tables. Ils permettent la création de tables temporaires regroupant les informations de plusieurs tables. Il existe plusieurs façons de regrouper les tables, la plus simple étant un produit cartésien : 1 x A a B b 2 y 3 z A a 1 x B b 1 x A a 2 y B b 2 y A a 3 z B b 3 z G. Dewaele Bases de données relationnelles 16 mai 2017 39 / 72

Jointures Combiner les tables TABLE Avions : TABLE Compagnies : Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 Code Compagnie Modèle Nombre AF Air France 777-200 25 AF Air France A321-200 15 AF Air France A330-200 15 AF Air France A340-300 12 AC Air Canada 777-200 6 AC Air Canada A321-200 10 AC Air Canada CRJ-100 51 G. Dewaele Bases de données relationnelles 16 mai 2017 40 / 72

Jointures Produit cartésien de deux tables TABLE Avions, Compagnies : Avions Compagnies Modèle Fabricant Moteurs Places Autonomie Code Compagnie Modèle Nombre 737-900 Boeing 2 215 5926 AF Air France 777-200 25 777-200 Boeing 2 440 14307 AF Air France 777-200 25 A321-200 Airbus 2 220 5926 AF Air France 777-200 25 A330-200 Airbus 2 380 13890 AF Air France 777-200 25 A340-300 Airbus 4 440 13705 AF Air France 777-200 25 CRJ-100 Bombardier 2 50 1574 AF Air France 777-200 25 737-900 Boeing 2 215 5926 AF Air France A321-200 15 777-200 Boeing 2 440 14307 AF Air France A321-200 15 A321-200 Airbus 2 220 5926 AF Air France A321-200 15 A330-200 Airbus 2 380 13890 AF Air France A321-200 15 A340-300 Airbus 4 440 13705 AF Air France A321-200 15 CRJ-100 Bombardier 2 50 1574 AF Air France A321-200 15 737-900 Boeing 2 215 5926 AF Air France A330-200 15 777-200 Boeing 2 440 14307 AF Air France A330-200 15 A321-200 Airbus 2 220 5926 AF Air France A330-200 15 A330-200 Airbus 2 380 13890 AF Air France A330-200 15 A340-300 Airbus 4 440 13705 AF Air France A330-200 15 CRJ-100 Bombardier 2 50 1574 AF Air France A330-200 15........................... (et 24 autres) G. Dewaele Bases de données relationnelles 16 mai 2017 41 / 72

Jointures Rendre cohérent produit cartésien Puisque les tables peuvent avoir des attributs portant le même nom, on fait précéder le nom de l attribut par le nom de la table pour les distinguer (Avions.Modèle, Compagnie.Code, etc.) La table obtenue par le produit cartésien de deux tables n a fréquemment guère de sens. En effet, Si un même attribut est présent dans les deux tables (ici Avions.Modèle et Compagnie.Modèle), il est plus logique de ne s intéresser qu aux lignes où les deux attributs sont les mêmes. G. Dewaele Bases de données relationnelles 16 mai 2017 42 / 72

Jointures Rendre cohérent le produit cartésien SELECT * FROM Avions, Compagnies WHERE Avions.Modèle = Compagnie.Modèle Avions Compagnies Modèle Fabricant Moteurs Places Autonomie Code Compagnie Modèle Nombre 737-900 Boeing 2 215 5926 AF Air France 777-200 25 777-200 Boeing 2 440 14307 AF Air France 777-200 25 A321-200 Airbus 2 220 5926 AF Air France 777-200 25 A330-200 Airbus 2 380 13890 AF Air France 777-200 25 A340-300 Airbus 4 440 13705 AF Air France 777-200 25 CRJ-100 Bombardier 2 50 1574 AF Air France 777-200 25 737-900 Boeing 2 215 5926 AF Air France A321-200 15 777-200 Boeing 2 440 14307 AF Air France A321-200 15 A321-200 Airbus 2 220 5926 AF Air France A321-200 15 A330-200 Airbus 2 380 13890 AF Air France A321-200 15 A340-300 Airbus 4 440 13705 AF Air France A321-200 15 CRJ-100 Bombardier 2 50 1574 AF Air France A321-200 15 737-900 Boeing 2 215 5926 AF Air France A330-200 15 777-200 Boeing 2 440 14307 AF Air France A330-200 15 A321-200 Airbus 2 220 5926 AF Air France A330-200 15 A330-200 Airbus 2 380 13890 AF Air France A330-200 15 A340-300 Airbus 4 440 13705 AF Air France A330-200 15 CRJ-100 Bombardier 2 50 1574 AF Air France A330-200 15........................... (et 24 autres) G. Dewaele Bases de données relationnelles 16 mai 2017 43 / 72

Jointures Jointures On préférera effectuer une jointure interne des tables grâce au mot-clé JOIN (ou INNER JOIN) SELECT * FROM Avions JOIN Compagnies ON Avions.Modèle = Compagnie.Modèle Avions Compagnies Modèle Fabricant Moteurs Places Autonomie Code Compagnie Modèle Nombre 777-200 Boeing 2 440 14307 AF Air France 777-200 25 A321-200 Airbus 2 220 5926 AF Air France A321-200 15 A330-200 Airbus 2 380 13890 AF Air France A330-200 15 A340-300 Airbus 4 440 13705 AF Air France A340-300 12 777-200 Boeing 2 440 14307 AC Air Canada 777-200 6 A321-200 Airbus 2 220 5926 AC Air Canada A321-200 10 CRJ-100 Bombardier 2 50 1574 AC Air Canada CRJ-100 51 G. Dewaele Bases de données relationnelles 16 mai 2017 44 / 72

Jointures Jointures Une jointure interne donne le même résultat qu un filtrage sur un produit cartésien, mais généralement plus rapidement. On peut joindre plus de deux tables : SELECT * FROM table1 JOIN table2 ON table1.x = table2.y JOIN table3 ON table2.z = table3.t Il existe d autres jointures, notamment pour les cas où les éléments d une table n ont pas de correspondance dans l autre table. Le produit cartésien est un type de jointure (CROSS JOIN) G. Dewaele Bases de données relationnelles 16 mai 2017 45 / 72

Jointures Alias On peut utiliser AS pour définir des alias pour les noms des tables : SELECT * FROM Avions AS a JOIN Compagnies AS c ON a.modèle = c.modèle Avions / a Compagnies / c Modèle Fabricant Moteurs Places Autonomie Code Compagnie Modèle Nombre 777-200 Boeing 2 440 14307 AF Air France 777-200 25 A321-200 Airbus 2 220 5926 AF Air France A321-200 15 A330-200 Airbus 2 380 13890 AF Air France A330-200 15 A340-300 Airbus 4 440 13705 AF Air France A340-300 12 777-200 Boeing 2 440 14307 AC Air Canada 777-200 6 A321-200 Airbus 2 220 5926 AC Air Canada A321-200 10 CRJ-100 Bombardier 2 50 1574 AC Air Canada CRJ-100 51 Requis si l on joint plusieurs fois la même table. G. Dewaele Bases de données relationnelles 16 mai 2017 46 / 72

Opérations ensemblistes Combiner les requêtes SELECT * FROM Avions WHERE Places > 250 Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 SELECT * FROM Avions WHERE Fabricant = Airbus Modèle Fabricant Moteurs Places Autonomie 737-900 Boeing 2 215 5926 777-200 Boeing 2 440 14307 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 CRJ-100 Bombardier 2 50 1574 G. Dewaele Bases de données relationnelles 16 mai 2017 47 / 72

Opérations ensemblistes Union de requêtes (Req 1 Req 2 ) 777-200 Boeing 2 440 14307 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 SELECT * FROM Avions WHERE Places > 250 UNION SELECT * FROM Avions WHERE Fabricant = Airbus 777-200 Boeing 2 440 14307 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 A321-200 Airbus 2 220 5926 G. Dewaele Bases de données relationnelles 16 mai 2017 48 / 72

Opérations ensemblistes Conditions à respecter Il doit y avoir le même nombre de colonnes, et les colonnes doivent être de même type, mais pas nécessairement contenir les mêmes attributs. Les lignes apparaîssant dans les deux requêtes ne sont retournées qu une seule fois (utiliser UNION ALL sinon). G. Dewaele Bases de données relationnelles 16 mai 2017 49 / 72

Opérations ensemblistes Intersection de requêtes (Req 1 Req 2 ) 777-200 Boeing 2 440 14307 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 SELECT * FROM Avions WHERE Places > 250 INTERSECT SELECT * FROM Avions WHERE Fabricant = Airbus A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 G. Dewaele Bases de données relationnelles 16 mai 2017 50 / 72

Opérations ensemblistes Différence de requêtes (Req 1 Req 2 ) 777-200 Boeing 2 440 14307 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 A321-200 Airbus 2 220 5926 A330-200 Airbus 2 380 13890 A340-300 Airbus 4 440 13705 SELECT * FROM Avions WHERE Places > 250 MINUS (ou EXCEPT) SELECT * FROM Avions WHERE Fabricant = Airbus 777-200 Boeing 2 440 14307 G. Dewaele Bases de données relationnelles 16 mai 2017 51 / 72

Création et modification de tables Création Création d une table Le mot-clé CREATE permet de créer une table. On spécifie la liste des attributs et leur domaine (INTEGER pour un entier, VARCHAR pour une chaîne de caractères, FLOAT pour un réel, BOOLEAN pour une valeur booléenne...) CREATE TABLE IF NOT EXISTS Avions ( Modèle VARCHAR(6) NOT NULL PRIMARY KEY, Fabricant VARCHAR(12), Moteurs INTEGER, Places INTEGER, Autonomie FLOAT ); G. Dewaele Bases de données relationnelles 16 mai 2017 52 / 72

Création et modification de tables Création Taille et précision des attributs Certains types ont des arguments pour préciser la longueur maximale, par exemple les chaînes de caractères. VARCHAR(6) correspond à des chaînes d au plus 6 caractères. Pour les entiers, le chiffre n indique que le nombre de caractères lors de l affichage, mais pas les valeurs admises. INTEGER(2) peut contenir des entiers de plus de deux chiffres (selon le SGBD), mais certains affichages seront réduits à deux chiffres. DECIMAL(5,2) ou NUMERIC(5,2) désigne un nombre a virgule avec au plus 5 chiffres, dont deux après la virgule (donc de 999.99 à +999.99). G. Dewaele Bases de données relationnelles 16 mai 2017 53 / 72

Création et modification de tables Création Clés primaires Il est fréquent que l on ait besoin de pouvoir faire référence à un enregistrement dans une table de manière unique. On peut définir une clé primaire qui est un attribut (ou un groupe d attributs) qui ne peut (peuvent) pas prendre plusieurs fois la (les) même(s) valeur(s) dans la table. Cette unicité est garantie par le SGBD. Pour une clé primaire constituée d un unique attribut : Modèle VARCHAR(6) NOT NULL PRIMARY KEY Pour une clé primare consistant en un groupe d attributs : Modèle VARCHAR(6) NOT NULL, Fabricant VARCHAR(12) NOT NULL, PRIMARY KEY(Modèle, Fabricant) G. Dewaele Bases de données relationnelles 16 mai 2017 54 / 72

Création et modification de tables Création Clés primaires Il y a au plus une clé primaire (primary key) par table. Si aucun attribut ou groupe d attributs n est satisfaisant pour cet usage, on utilise souvent un entier à cet effet (sans sens particulier, mais unique pour chaque enregistrement). Un enregistrement ne peut avoir «NULL» pour un attribut faisant partie d une clé primaire. G. Dewaele Bases de données relationnelles 16 mai 2017 55 / 72

Création et modification de tables Création Autres clés Il n y a pas de contrainte particulière sur les valeurs des autres attributs d un enregistrement, excepté : on peut empêcher que les enregistrements puisse ne pas avoir de valeur pour un attribut donné en indiquant NOT NULL dans la définition de l attribut ; on peut limiter les valeurs possibles d un attribut aux valeurs présentes dans une autre table en définissant une relation de clé étrangère. G. Dewaele Bases de données relationnelles 16 mai 2017 56 / 72

Création et modification de tables Création Clés étrangères Il est fréquent que certains attributs apparaissent dans plusieurs tables pour permettre des jointures (pas nécessairement sous le même nom!) Pour diminuer les risques de données incorrectes, on peut déclarer ces relations, en spécifiant qu un attribut d une table fait référence à un attribut (souvent une clé primaire) d une autre table. C est ce que l on appelle clé étrangère (foreign key), définie par : FOREIGN KEY (attribut) REFERENCES autre table(attribut) Seules les valeurs effectivement prises par l attribut dans l autre table seront acceptées pour l attribut concerné. G. Dewaele Bases de données relationnelles 16 mai 2017 57 / 72

Création et modification de tables Création Clés étrangères Par exemple, pour la table Compagnie : CREATE TABLE IF NOT EXISTS Compagnie ( Code VARCHAR(6) NOT NULL PRIMARY KEY, Compagnie VARCHAR(18), Modèle VARCHAR(6), Nombre INTEGER, FOREIGN KEY (Modèle) REFERENCES Avion(Modèle) ); Avions Modèle (PK) Fabricant Moteur Places Autonomie Compagnies Code (PK) Compagnie Modèle (FK) Nombre G. Dewaele Bases de données relationnelles 16 mai 2017 58 / 72

Création et modification de tables Création Clés étrangères et jointures Les clés étrangères suggèrent une jointure possible : CREATE TABLE IF NOT EXISTS Compagnie (... FOREIGN KEY (Modèle) REFERENCES Avion(Modèle) ); FROM Compagnie JOIN Avion ON Compagnie.Modèle = Avion.Modèle G. Dewaele Bases de données relationnelles 16 mai 2017 59 / 72

Création et modification de tables Modification d une table Ajouter ou supprimer des attributs On peut ajouter des attributs : ALTER TABLE nom de la table ADD nom nouvel attribut type nouvel attribut Ou bien en supprimer : ALTER TABLE nom de la table DROP nom attribut Le renommage est possible, mais la syntaxe dépend du SGBD. (Très vraisemblablement non-exigible) G. Dewaele Bases de données relationnelles 16 mai 2017 60 / 72

Création et modification de tables Modification d une table Ajouter des enregistrements Pour ajouter une série d enregistrements : INSERT INTO nom de la table (attribut 1, attribut 2, attribut 3 ) VALUES (valeur 1 A, valeur 2 A, valeur 3 A), (valeur 1 B, valeur 2 B, valeur 3 B), (valeur 1 C, valeur 2 C, valeur 3 C); Si l on ne précise pas de liste d attributs, il faut tous les préciser, dans l ordre. G. Dewaele Bases de données relationnelles 16 mai 2017 61 / 72

Création et modification de tables Modification d une table Modifier/supprimer des enregistrements Pour modifier une série d enregistrements : UPDATE nom de la table SET attribut = nouvelle valeur WHERE expression booléenne Pour supprimer une série d enregistrements : DELETE FROM nom de la table WHERE expression booléenne La condition WHERE... permet de choisir quels enregistrements seront mis à jour ou supprimés. Sans condition, tous les enregistrements sont mis à jour/supprimés! G. Dewaele Bases de données relationnelles 16 mai 2017 62 / 72

Algèbre relationnelle Présentation Principe de l algèbre relationnelle SQL n est pas le seul langage pour manipuler des bases de données. Pour décrire des opérations sur des bases de données de façon générale (et démontrer des propriétés sur ces bases), on dispose d une algèbre relationnelle. Dans ce cadre, plutôt que de tables, on parle de relations entre les données (chaque enregistrement d une table constitue un ensemble de données mises en relation). G. Dewaele Bases de données relationnelles 16 mai 2017 63 / 72

Algèbre relationnelle Présentation Notations On dispose de notations pour les différentes opérations : Projection d une relation R sur des attributs a 1, a 2 SELECT DISTINCT a1, a2 FROM R Sélection dans R selon une condition cond. SELECT * FROM R WHERE cond. π a1,a 2 (R) σ cond. (R) Produit cartésien de R 1 et R 2 R 1 R 2 R1, R2 ou R1 CROSS JOIN R2 Jointure de R 1 et R 2 sur cond. R 1 cond. R 2 R1 JOIN R2 ON cond. G. Dewaele Bases de données relationnelles 16 mai 2017 64 / 72

Algèbre relationnelle Présentation Notations (suite) On dispose de notations pour les différentes opérations : Union de deux relation R 1 et R 2 R 1 R 2 Intersection de deux relation R 1 et R 2 R 1 R 2 Différence entre deux relation R 1 et R 2 R 1 R 2 Par ailleurs, dans les expressions booléennes, on note généralement le ET logique, le OU logique, le NON logique. G. Dewaele Bases de données relationnelles 16 mai 2017 65 / 72

Algèbre relationnelle Présentation Utilisation Par exemple, la notation : π C.Compagnie,A.Modele (σ A.Autonomie>10000 (C C.Modele=A.Modele A)) où C et A représentent les relations liées aux tables Compagnie et Avion correspond, en langage SQL, à la requête : SELECT Compagnie.Compagnie, Avion.Modèle FROM Compagnie AS C JOIN Avion AS A ON Compagnie.Modèle = Avion.Modèle WHERE Avion.Autonomie > 10000 G. Dewaele Bases de données relationnelles 16 mai 2017 66 / 72

Algèbre relationnelle Présentation Utilisation On a par exemple justifié qu une jointure interne était équivalente à un produit cartésien suivi d une sélection. Cela s écrira formellement : R 1 cond. R 2 = σ cond. (R 1 R 2 ) L algèbre relationnelle permet de démontrer de tels résultats. G. Dewaele Bases de données relationnelles 16 mai 2017 67 / 72

Architecture des réseaux Notions élémentaires d architectures Architecture «monolithique» L utilisateur interagit avec programme qui effectue, seul, tous les calculs, et gère ses données, et retourne les résultats qu il a obtenu. C est ce qui se passe avec le module SQLite3 de Python. G. Dewaele Bases de données relationnelles 16 mai 2017 68 / 72

Architecture des réseaux Notions élémentaires d architectures Architecture «client-serveur» L utilisateur interagit avec un client «mince» qui transmet la demande à un serveur, récupère le résultat, et le communique à l utilisateur. Client Client Client Serveur Client Client Client G. Dewaele Bases de données relationnelles 16 mai 2017 69 / 72

Architecture des réseaux Notions élémentaires d architectures Architecture «client-serveur» Client et serveur sont des programmes séparés. Ils peuvent tourner sur la même machine physique ou non. Dans ce second cas, les échanges se font généralement par un réseau. Avantages : mise en commun des données, sécurisation, déploiement des clients sur des plates-formes différentes, etc. On peut par exemple installer un serveur MySQL et communiquer avec lui via un client écrit en Python avec le module mysql G. Dewaele Bases de données relationnelles 16 mai 2017 70 / 72

Architecture des réseaux Notions élémentaires d architectures Architecture «trois couches» Appelée «3-tiers» en anglais. Cette fois, trois intervenants : le client (couche de présentation) communique avec un premier serveur (couche métier) qui interprète les demandes du clients, mais ne gère pas les données. Le premier serveur transmet ses besoins en données à un second serveur qui obtient les données souhaitées et les retourne au premier serveur, lequel les met en forme avant de les retourner au client. Client Serveur métier Serveur données Client G. Dewaele Bases de données relationnelles 16 mai 2017 71 / 72

Architecture des réseaux Notions élémentaires d architectures Architecture «trois couches» Chacun des trois éléments peut ou non se trouver sur la même machine physique que les autres. Avantages de cette architecture : davantage de sécurisation et de souplesse ; plusieurs serveurs métier peuvent partager les mêmes données. C est le cas de l accès à la base de données Mondial en ligne : le navigateur (client) communique avec un serveur web (couche métier) qui lui-même extrait ses données d un serveur de bases de données Oracle. G. Dewaele Bases de données relationnelles 16 mai 2017 72 / 72