142
Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Embed Size (px)

Citation preview

Page 1: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de DonnéesMeltem Öztürk

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 2: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de données

24h Cours, 24h TD, 12h TP

note finale= TP/5+4/5*sup(EX, (CC+EX)/2)

References: Ch. Date Introduction aux bases de données, Vuibert, Paris 2004 G. Gardarin, Bases de Données - objet/relationnel, Eyrolles,

1999 Polycopiés de Ph. Rigaux, M. Manouvrier et St. Gançarski

Page 3: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Base de données: collection d'informations ou de données qui existent

sur une longue période de temps et qui décrivent les activités d'une ou plusieurs organisations

ensemble de données modélisant les objets d'une partie du monde réel et servant de support à une application informatique

un gros ensemble d’informations structurées mémorisées sur un support permanent

Page 4: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

SGBD

Systèmes de Gestion de Bases de Données (DataBase Management Systems - DBMS)

ensemble de logiciels systèmes permettant aux utilisateurs de faire des applications (insérer, modifier, et rechercher) efficacement des données spécifiques dans une grande masse d'informations (pouvant atteindre plusieurs milliards d'octets) partagée par de multiples utilisateurs

Page 5: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Exemples de SGBD:

BD d’université (données sur les étudiants, les enseignements, les salles, etc.)

BD de compagnie aérienne (données sur les clients, les vols, les réservations, etc.)

BD bancaire (données sur les clients, les comptes, les transactions, etc.)

Page 6: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Problèmes en absence de SGB

Programmes d ’application écrits directement au-dessus du système de gestion de fichier redondance (coût de stockage et d ’accès)

incohérence (ex: changement d ’adresse)

difficulté d ’accès (requêtes non prévues dans les programmes )

isolation des données (nouveau programme qui cherche des données dans des fichiers variés de différents formats)

manque de sécurité gestion de l’intégrité (obéir à des contraintes)

Page 7: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Principales fonctionnalités d’un SGBD:

Contrôle de la redondance d’information Partage des données Gestion des autorisations d’accès Vérifications des contraintes d’intégrité

Contraintes structurelles (un employé a un seul chef), contraintes

dynamiques (un salaire ne peut diminuer), etc.

Sécurité et reprise sur panne

Page 8: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Principaux composants d’un SGBD Système de gestion de fichiers (physique)

Stockage et accès des fichiers…

Gestionnaire de requêtesTraduction des requêtes des mis à jour et

d’interrogation Gestionnaire de transactions

Regroupement des actions (modifications, mises à jour, etc.) qui doivent être

exécutées ensemble séquentiellement (ex : virement d’une somme de « A »

à « B », lire la somme de A, effacer de A, ajouter à B, etc. )

Page 9: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Abstraction de données : 3 niveaux (abstraction des données, indépendance entre utilisateurs et gestion):

Niveau interne ou physique : plus bas niveau indique comment (avec quelles structures de

données) sont stockées physiquement les données

Niveau logique ou conceptuel

Niveau externe ou vue

Page 10: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Abstraction de données : 3 niveaux

Niveau interne ou physique Niveau logique ou conceptuel :

décrit par un schéma conceptuel indique quelles sont les données stockées et

quelles sont leurs relations indépendamment de l’implantation physique

Niveau externe ou vue

Page 11: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Abstraction de données : 3 niveaux

Niveau interne ou physique

Niveau logique ou conceptuel

Niveau externe ou vue : propre à chaque utilisateur décrit par un ou plusieurs schémas externes

Page 12: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Différents langages d ’un SGBD :

LDD : Langage de Définition de Données,

construire un schéma pour décrire la structure, incluant les contraintes

LMD : Langage de Manipulation de Données

appliquer les opérations aux données (retrouver et mettre à jour les données)

Page 13: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Introduction

Modèle de données (décrire les données, les relations entre elles, leur sémantique, les contraintes d’intégrité, etc.):

Modèle conceptuel (entité/association) Plus lisibles (graphiques) Entité, association, spécialisation, attribut, identificateur,

etc.

Modèle logique (logique relationnel) Plus facilement implantable Relation, attribut, domaine, clé, n-uplet, etc.

Page 14: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 15: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de base de données

Page 16: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de base de données

Critiques sur notre exemple:

Anomalie lors d’une insertion : Insertion du même film plusieurs fois, et même avec différentes

données! Comment distinguer un film d’un autre?

Anomalie lors d’une modification Si on modifie la date de naissance de Hitchcock?

Anomalie lors d’une destruction Si on supprime un film, on supprime toutes données associées, y

compris celles du réalisateur

Page 17: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bonne méthode:

représenter individuellement les films et les réalisateurs (une action sur l’un n’entraîne pas systématiquement une action sur l’autre)

méthode d ’identification d ’un film ou d ’un réalisateur (permet d ’assurer que la même information est représentée une seule fois)

préserver le lien entre les films et les réalisateurs

Page 18: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Changeons notre modèle

Page 19: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Changeons notre modèle

Page 20: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Type d ’entité

Page 21: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Schéma + complet de notre exemple

Page 22: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle Entité/Association Entité : objet concret ou abstrait, identifiable, décrit par

l’information et pertinent pour l’application Ex : Vertigo (film), Hitckcock (réalisateurs)

Une entité est représentée par un ensemble d’ attributs qui la décrive. Ex : film décrit par le nom, l’année de création, …

Chaque attribut a un domaine qui correspond à l’ensemble des valeurs qu’il peut prendre Ex : les années compris entre 1920-2005

Page 23: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Type d’entité

Page 24: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle Entité/Association

Clé (Identificateur) : Un sous-ensemble d’attribut permettant d’identifier l’entité de manière unique.

sa valeur doit être connue pour toute entité on ne doit jamais avoir besoin de le modifier sa taille de stockage doit être la plus petite possible

Exemple: internaute: e-mail film: nom+pays+année?

Identificateur abstrait: numéro séquentiel qui sera incrémenté au fur et à mesure des insertions

Page 25: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle Entité/Association

Une association binaire entre les ensembles d ’entités E1 et E2 est un ensemble de couple (a,b) avec aE1 et b E2 Ex: Hitchcock a réalisé Vertigo

Cardinalité d’une association : nombre d’entités que l’association relie. Noté (Min, Max) «  * » : «  0. * », «  1 »: « 1.1 »

Une association peut avoir des attributs

Page 26: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Format Merise

Un automobiliste possède entre zéro et

N voitures

Une voiture a un et un seul propriétaire

Page 27: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modélisation UML

Un automobiliste peut apparaître entre zéro et N

fois dans l ’association

Une voiture peut apparaître une et une

seule fois dans l ’association

Page 28: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Attribut d’une association

Page 29: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Clé d ’une association

Clé d’une association : couple formé des clés des deux entités

ex: l ’association « note » entre internaute et film!

Comment faire si l ’internaute veut donner différentes notes pour le même film à des dates différentes? (pas de liens multiples!!)

Solution : ajouter un nouveau type d ’entité: date

Page 30: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Association n-aires

Page 31: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Entité faible

Chaque salle est notée par un numéro

Il y a tant de numéro que le nombre de salles

Numérotation indépendant du cinéma

Page 32: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Entité faible

Chaque salle a un numéro unique dans un cinéma donné

Ex. Salle 1 du cinéma A et Salle 1 du cinéma C

Pour distinguer une salle d’une autre, il faut connaître le cinéma auquel elle est rattachée

Page 33: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Association n-aire Une association n-aire entre n types entités E1, E2, …, En est un

ensemble de n-uplets (e1,e2, …,e3) avec eiEi pour tout i.

difficile à comprendre cardinalité ambiguë : explicitement de type « 0..* » clé?

Ex: [nomcinéma, noSalle, idFilm, idHorraire]?

Contrainte du type « dans une salle pour une horaire donnée il n ’y a qu ’un seul film »… [nomcinéma, noSalle, idHorraire]?

« Connaissant le film et l ’horaire je connais la salle »: [idFilm, idHorraire]?

Donc on a des clés candidates

Page 34: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Association n-aire (cardinalité « 0.*», clé ?)

Page 35: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Association n-aire (cardinalité « 0.*», clé ?)

Remplacer l ’association par un type d ’entité!

Règles: on attribue un identifiant autonome à l’association on crée une association Ai de type «1.1»  «  0. *»

entre l ’association et chacun des types d ’entité.

Page 36: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Association ternaire - - > entité

Page 37: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Généralisation/Spécialisation (E/A - Merise)

Ensemble d’entités généralisantes

Ensemble d’entités généralisées

Page 38: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Héritage (UML)

Classe mère / Sur-classe

Classes dérivées ou filles

/ sous-classes

Page 39: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Contraintes

Contraintes d’intégrité : toutes règles implicites ou explicites que doivent

suivre les données [Gar99] Contraintes d'entité: toute entité doit posséder un

identificateur Contraintes de domaine : les valeurs de certains attributs

doivent être prises dans un ensemble donné Contraintes d'unicité : une valeur d'attribut ne peut pas

être affectée deux fois à deux entités différentes Contraintes générales : règle permettant de conserver la

cohérence de la base de manière générale

Page 40: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemples de contraintes

Contraintes de domaine : "La fonction d’un enseignant à l’Université prend sa

valeur dans l’ensemble {vacataire, moniteur, ATER, MCF, Prof., PRAG, PAST}."

Contraintes d'unicité : "Un département, identifié par son numéro, a un nom

unique (il n’y a pas deux départements de même nom)."

Contraintes générales : "Un même examen ne peut pas avoir lieu dans deux

salles différentes à la même date et à la même heure. "

Page 41: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Dépendances fonctionnelles

Un attribut (ou un groupe d'attributs) Y dépend fonctionnellement d'un attribut (ou groupe d'attributs) X si : étant donné une valeur de X, il lui correspond une

valeur unique de Y ( l'instant considéré)

XY : Y dépend fonctionnellement de X ou X détermine Y

Déclaration des dépendances au niveau du schéma conceptuel

Page 42: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de dépendances fonctionnelles

Marque, Type, Puissance, Année Immatriculation

Type Marque Ex. Le type "Twingo" sera toujours associé, dans la base de données, à la marque "Renault".

Immatriculation Marque, Type, Puissance, Annéeidentificateur Tous les autres attributs

Page 43: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

(Des)Avantages du modèle E/A

Avantages Que 3 concepts: entités, associations, attributs Représentation graphique et rapide

Désavantages Pas de règle absolue pour déterminer qui est

attribut, entité ou association…

Page 44: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 45: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle relationnel

La relation du « nom » Film :

Film (titre: string, année: number, genre : string)

Attribut

N-uplet (tuple)entité

domaine

Page 46: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle relationnel

Domaine : ensemble d’instance d’un type élémentaire (en extension ou en intension) Ex : réels, boolean, chaine de caracteres, etc.

Attribut : colonne d’une relation, associé a un

domaine

Schéma de relation : nom suivi de la liste des attributs, chq attribut étant associé à son domain R(A1 : D1, A2 : D2, …, An : Dn) Ex : Film (titre: string, année: number, genre : string)

Page 47: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle relationnel

Relation (R) : sous-ens. fini du produit cartésien des domaines des attributs de R (produit cartésien D1xD2x…xDn est l ’ens. De tous les tuples (v1, …vn) où vi Di)

représentée par une table à 2 dimensions colonne = domaine du produit cartésien même domaine peut apparaître +ieurs fois ensemble de tuplets sans doublons (pas 2 fois même

ligne) ordre des lignes n’a pas d’importance pas de case vide dans la table

Page 48: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Modèle relationnel

Clé d’une relation : le + petit sous-ens. des attributs qui permet d’identifier chq ligne d’une manière unique ex : film (titre, année, genre)

Tuple (n-uplet) : une liste de n valeurs (v1, …vn), où chq vi est la valeur d’un attribut Ai du domain Di

ex : (‘Cyrano’, 1992, ‘Rappeneau’)

Base de données : ensemble fini de relations.

Page 49: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Passage de E/A au relationnel

Page 50: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Règles de passages (1)

Règles générales – Entité : 1. On crée une relation de même nom que l’entité.2. Chaque propriété de l’entité, y compris l’identifiant,

devient un attribut de la relation.3. Les attributs de l’identifiant constituent la clé de la

relation.Ex: Film (idFilm, titre, année, genre, résumé) Artiste (idArtiste, nom, prénom, annéeNaissance) Internaute (email, nom, prénom, région) Pays (code, nom, langue)

Page 51: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Règles de passages (2)

Association de un à plusieurs :1. B est en association avec plusieurs A et A est en relation avec

un seul B.

2. B est dit « père », A est dit « fils » (A: film, B: réalisateurs)

3. On crée les relations Ra et Rb correspondant respectivement aux entités A et B.

4. L’identifiant de B devient un attribut de Ra (id du père devient attribut de son fils)

ex: Film (idFilm, titre, année, genre, résumé, idArtiste, codePays) Artiste (idArtiste, nom, prénom, annéeNaissance) Pays (code, nom, langue)

Page 52: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de passage

Page 53: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Règles de passage (3)

Association avec entité faible : même que le

passage des associations du type de un à

plusieurs

Ex: Cinéma (nomCinéma, numéro, rue, ville) Salle (nomCinéma, no, capacité)

Page 54: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Règles de passage (4)

Association binaire de plusieurs à plusieurs : 1. On crée les relations Ra et Rb des entités A et B.2. On crée une relation Ra+b pour l’association3. La clé de Ra et la clé de Rb deviennent des attributs de

Ra+b4. La clé de cette relation est la concaténation des clés des

relations Ra et Rb5. Les propriétés de l’association deviennent des attributs de

Ra+bEx : Film (idFilm, titre, année, genre, résumé, idMES,

codePays) Artiste (idArtiste, nom, prénom, annéeNaissance) Rôle (idFilm, idActeur, nomRôle)

Page 55: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de passage

Ex : Film (idFilm, titre, année, genre, résumé, idMES,

codePays) Artiste (idArtiste, nom, prénom, annéeNaissance) Role (idFilm, idActeur, nomRôle)

Page 56: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Règles de passage (5)

Association ternaire :

1. Même principe d’une association binaire: Salle (nomCinéma, no, capacité) Film (idFilm, titre, année, genre, résumé, idMES, codePays) Horaire (idHoraire, heureDébut, heureFin) Séance (idFilm, nomCinéma, noSalle, idHoraire, tarif)

Page 57: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple de passage

Problème avec notre exemple : même salle présente deux films différents au même horaire

Salle (nomCinéma, no, capacité) Film (idFilm, titre, année, genre, résumé, idMES,

codePays) Horaire (idHoraire, heureDébut, heureFin) Séance ( nomCinéma, noSalle, idHoraire, tarif)

Clé de la relation est un sous-ensemble de la

concaténation des clés

Page 58: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 59: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

Algèbre : ensemble d’opérateurs manipulant des expressions dont le résultat est une expression qui peut être manipulée …

Algèbre relationnelle : ensemble d’opérateurs prenant en entrée une ou deux expressions relationnelles et produise une expression relationnelle à la sortie.

Page 60: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

La définition de l ’algèbre relationnelle nous permet de faire des opérations soit sur une relation soit entre deux relations. Le résultat étant aussi une relation, nous pouvons composer des opérations et construire des expressions algébriques complexes.

Requête: expression algébrique qui s’applique à un ensemble de relations et produit une relation finale.

Page 61: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

Opérateurs fondamentaux Opérateurs unaires

Sélection Projection

Opérateurs binaires Produit cartésien Union Différence

Opérateurs dérivés Jointure …

Page 62: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple:organisme de voyage

Station (nomStation, capacité, lieu, région, tarif) Activite (nomStation, libellé, prix) Client (id, nom, prénom, ville, région, solde) Séjour (idClient, station, début, nbPlaces)

Page 63: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelleLa sélection (F ( R )) : extrait de la relation R les

tuples qui satisfont la critère de sélection F. F (formule logique): comparaison entre

un attribut de la relation R constante

Les comparateurs de F (=, <, >, etc.) le résultat est une relation ayant les mêmes attributs que R composer plusieurs comparaisons par des connecteurs logiques (ou, et,

non, etc.)

Ex : toutes les stations aux Antilles: région=‘Antilles’ (Station)

Page 64: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

La projection ( A 1 , A2, …, Ak ( R )): ne garde que

les attributs A1, A2 , …, Ak

Ex : les noms des stations et leur région / seulement les régions (pas de doublure de ligne)

nomStation, région(Station) région(Station)

Page 65: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

Combinaison de projection et sélection:

ex : nomStation((libellé=plongée) (prix<140) (Activité) )

Page 66: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

L’union (R S) : crée une relation comprenant

tous les tuples existants dans l’une ou l’autre des

relations R et S. R et S doivent avoir le même schéma! (c.à.d

mêmes attributs)

ex: réunir ensemble les noms et prénoms des travailleurs et des clients:

nom, prénom (travailleurs) nom, prénom (clients)

Page 67: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

La différence (R - S) : crée une relation

comprenant tous les tuples de R qui ne sont pas

dans S

R et S doivent avoir le même schéma! (c.à.d mêmes attributs)

ex: les noms et prénoms des gens qui ne sont pas clients

nom, prénom (personne) nom, prénom (clients)

Page 68: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

Produit cartésien (R x S) : crée une nouvelle

relation où chaque tuple de R est associé à

chaque tuple de S.

Page 69: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple:Station x Activité

Page 70: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

Conflit de nom avec produit cartésien: nomStation

appartient en même temps à la relation Station et à la

relation Activité!

Alors on écrit: S.nomStation et A.nomStation

ou on fait un renommage

Le renommage ( r AA’, B B’ ) : renomme l’attribut

A en A’ et B en B’

Page 71: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Algèbre relationnelle

La jointure ( ) : sélection + produit cartésien

Ex: informations sur les stations et leur activité

S.nomStation=‘A.nomStation’ (Station x Activité)

Station ( nomStation=nomStation ) Activité

Page 72: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Expression de requêtes par des exemples

(1) comment faire l ’intersection

Sélection généralisée

(2) les stations qui sont aux Antilles et dont la capacité est

supérieure à 200 : (3) les stations qui sont aux Antilles, ou dont la capacité est

supérieure à 200 : (4) les stations dont la capacité est supérieure à 200 mais qui ne

sont pas aux Antilles :

Page 73: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Expression de requêtes par des exemples

Requêtes conjonctives

(5) le nom des stations aux Antilles : (6) le nom et prénom des clients européens (7) le nom et la région des stations où l’on pratique la voile: (8) le nom des clients qui sont allés à Passac : (9) quelles régions a visité le client 30 : (10) le nom des clients qui ont eu l’occasion de faire de la voile : (11) les noms des clients qui sont partis en vacances dans leur

région, ainsi que le nom de cette région :

Page 74: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Expression de requêtes par des exemples

Requêtes avec et - (12) quelles sont les stations qui ne proposent pas de voile ? (13) le nom des régions où il y a des clients, mais pas de station : (14) le nom des stations qui n’ont pas reçu de client américain : (15) l’Id des clients qui ne sont pas allés aux Antilles :

Complément d ’un ensemble (16) les ids des clients et les noms des stations où ils ne sont pas

allés.

Quantification universelle (17) quelles sont les stations dont toutes les activités ont un prix

supérieur à 100 ? (18) les ids des clients qui sont allés dans toutes les stations :

Page 75: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 76: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Extension des opérations

Projection généralisée: étend la projection par ajout de fonctions arithmétiques

F1, F2, …, Fn (E): Fi : expressions arithmétiques sur les

constantes ou attributs E: relation

Ex: Compte(Id, Nom_client, debit, credit) Nom_Client, (Crédit - Débit) (Compte)

Page 77: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Extension des opérations

Jointure externe (outer-join) : jointure externe à gauche : ] jointure externe à droite : [

jointure externe : ][

R ] S R S et conservation des attributs des nuplets de R qui ne joignent avec aucun nuplet de S (les valeurs des attributs de S sont mises à NULL)

Page 78: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple

Page 79: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple

Page 80: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple

Page 81: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Fonctions d’agrégation

Sum : permet de faire la somme (entier ou réel) Sum capacité (Station)

Avg : calcule la moyenne de valeurs (entier ou réel) Avg solde (Client)

Page 82: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Fonctions d’agrégation

Count : retourne le nombre d’éléments dans la collection Count id (Client)

Count_distinct : identique à Count mais ne tient pas compte des doublons Count_distinct libellé (Activité)

Page 83: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Fonctions d’agrégation

Max : retourne la plus grande valeur de la collection Max capacité (Station)

Min : retourne la plus petite valeur de la collection Min prix (Activité)

Page 84: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Fonctions d’agrégation

Opération sur un ensemble de nuplets!• Nombre d’enseignants par départements :

• Nom_DépartementCountEns_ID(EnseignantDépartement)

Page 85: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Mise à jour de la base

InsertionR R e

Ex:Salle Salle {(« B », « 038 », 15)}

SuppressionR R - e

Ex:

Salle Salle - capacité 10 (Salle)

Page 86: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Mise à jour de la base

Mise à jour d’un nuplet : projection généralisée!

r Etudiant_ID [(Nom=‘ Dupont  ’ ) (Prénom=‘ Jacques ’) (Etudiant)]

Etudiant (Etudiant.Etudiant_ID <> r.Etudiant_ID) (Etudiant)

Etudiant_ID, Nom, Prénom, Rue, Ville, Code-Postal,

Téléphone « 45 12 45 86 », Fax, Email, NumAnnées

[(Etudiant.Etudiant_ID =r.Etudiant_ID) (Etudiant) ]

Page 87: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Vue

Table virtuelle dont le schéma et les instances sont dérivés de la base réelle par une requête et qui est utilisée pour :

• Cacher certaines informations à un groupe d’utilisateurs

• Faciliter l’accès à certaines données

create view nom_vue as < requête >

Exemple :

create view Info_Non_Confidentielle_Etudiant

as Etudiant_ID, Nom, Prénom, Email (Etudiant)

Page 88: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Bases de Données

IntroductionModèle Entité/AssociationModèle relationnelAlgèbre relationnelleAlgèbre relationnelle étendueSQL

Page 89: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL

SQL : Structured Query Language (langage structuré de requêtes)

• Langage de Manipulation de Données (DML) : interroger et modifier les données de la base

• Langage de Définition de Données (DDL) : définir le schéma de la base de données

• Langage de contrôle d’accès aux données

Page 90: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / types

Page 91: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

CREATE TABLE nom de la table

(attribut1 type(attribut1), attribut2 type(attribut2), …)

CREATE TABLE Internaute

(email VARCHAR (50),

nom VARCHAR (20),

prenom VARCHAR (20),

motDePasse VARCHAR (60),

anneeNaiss INTEGER (4))

Page 92: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

NOT NULL: il y a toujours une valeur!

CREATE TABLE Internaute

(email VARCHAR (50) NOT NULL,

nom VARCHAR (20) NOT NULL,

prenom VARCHAR (20),

motDePasse VARCHAR (60) NOT NULL,

anneeNaiss INTEGER (4))

Page 93: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

NULL: absence de valeur (pas valeur zéro ouchaîne vide!!!)

Pas d’opération incluant le NULL Pas de comparaison avec un NULL

Comment forcer un attribut?Réponse: Par DEFAULT

CREATE TABLE Cinéma (nom VARCHAR (50) NOT NULL,adresse VARCHAR (50) DEFAULT ’Inconnue’)

Page 94: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ Contraintes

Contraintes qu’on peut demander: Un attribut doit toujours avoir une valeur (NOT

NULL) Un attribut (ou ensemble d’attributs) constitue(nt)

la clé de la relation Un attribut dans une table est liée à la clé primaire

d’une autre table La valeur d’un attribut doit être unique au sein de

la relation D’autres types de règles…

Page 95: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ création des tables

Clé primaire (primary key),

CREATE TABLE Notation

(idFilm INTEGER NOT NULL,

email VARCHAR (50) NOT NULL,

note INTEGER DEFAULT 0,

PRIMARY KEY (idFilm, email))

Page 96: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ création des tables

Clé secondaire(unique)

CREATE TABLE Cinéma

(nom VARCHAR (30) NOT NULL,

Adresse VARCHAR (30) UNIQUE,

PRIMARY KEY (nom))

Page 97: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ création des tablesClé secondaire(unique)

CREATE TABLE Artiste

(id INTEGER NOT NULL,

nom VARCHAR (30) NOT NULL,

prenom VARCHAR (30) NOT NULL,

anneeNaiss INTEGER,

PRIMARY KEY (id),

UNIQUE (nom, prenom));

Page 98: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

Clé étrangère (Foreign key) : les attributs faisantReference une ligne d’une autre table

CREATE TABLE Film (idFilm INTEGER NOT NULL,titre VARCHAR (50) NOT NULL,annee INTEGER NOT NULL,idMES INTEGER,codePays INTEGER,PRIMARY KEY (idFilm),FOREIGN KEY (idMES) REFERENCES Artiste,FOREIGN KEY (codePays) REFERENCES Pays);

Page 99: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/création des tables

Modification?? Insertion dans Film avec une valeur inconnue

pour idMES La destruction d’un artiste La modification de id dans Artiste ou de idMES

dans Film

En cas de violation d’une contrainte d’integrité :

demande rejetée

Page 100: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

la destruction d’un metteur en scène déclenche la mise à NULL (SET NULL) de la clé étrangère idMES pour tous les films qu’il aréalisé:

CREATE TABLE Film (titre VARCHAR (50) NOT NULL,annee INTEGER NOT NULL,idMES INTEGER,codePays INTEGER,PRIMARY KEY (titre),FOREIGN KEY (idMES) REFERENCES Artiste

ON DELETE SET NULL,FOREIGN KEY (codePays) REFERENCES Pays);

Page 101: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

Quand on détruit un cinéma, on veut également détruire les salles ;quand on modifie la clé d’un cinéma, on veut répercuter lamodification sur ses salles :

CASCADE appliquer la même opération

CREATE TABLE Salle (nomCinema VARCHAR (30) NOT NULL,no INTEGER NOT NULL,capacite INTEGER,PRIMAR KEY (nomCinema, no),FOREIGN KEY (nomCinema) REFERENCES CinemaON DELETE CASCADEON UPDATE CASCADE)

Page 102: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

Enumération des valeurs possibles avec CHECK

CREATE TABLE Film (titre VARCHAR (50) NOT NULL,annee INTEGER

CHECK (annee BETWEEN 1890 AND 2000) NOT NULL,genre VARCHAR (10)

CHECK (genre IN (’Histoire’,’Western’,’Drame’)),idMES INTEGER,codePays INTEGER,PRIMARY KEY (titre),FOREIGN KEY (idMES) REFERENCES Artiste,FOREIGN KEY (codePays) REFERENCES Pays);

Page 103: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Modification du schéma

ALTER TABLE nomTable ACTION description

Action : ADD: ajouter MODIFY: modifier DROP: supprimer RENAME: renommer

Page 104: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Modification du schéma

ALTER TABLE nomTable ACTION description

Action : ADD

ALTER TABLE Internaute ADD region VARCHAR(10);

Page 105: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Modification du schéma

ALTER TABLE nomTable ACTION description

Action : MODIFY

ALTER TABLE Internaute MODIFY region

VARCHAR(30) NOT NULL;

Page 106: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Modification du schéma

ALTER TABLE nomTable ACTION description

Action : DROPP

ALTER TABLE Internaute DROP region;

Page 107: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création d’index

Index pour les clés primaires (systématique),les clés

secondaires (UNIQUE) ou les attributs normaux:

CREATE [UNIQUE] INDEX nomIndex ON nomTable

(attribut1 [, ...])

Ex :

CREATE UNIQUE INDEX idxNom ON Artiste (nom, prenom);

CREATE INDEX idxGenre ON Film (genre);

Page 108: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

Exemple:organisme de voyage

Station (nomStation, capacité, lieu, région, tarif) Activite (nomStation, libellé, prix) Client (id, nom, prénom, ville, région, solde) Séjour (idClient, station, début, nbPlaces)

Page 109: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

SELECT nomStationFROM Station

WHERE region = ’Antilles’

FROM indique la (ou les) tables dans lesquelles on trouve les attributs utiles à la requête.

SELECT indique la liste des attributs constituant le résultat.

WHERE indique les conditions que doivent satisfaire les n-uplets de la base pour faire partie du résultat.

Page 110: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

SELECT libelle, prix FROM ActiviteWHERE nomStation = ’Santalba’

SELECT libelle, prix / 6.56FROM ActiviteWHERE nomStation = ’Santalba’

SELECT libelle, prix / 6.56, ’Cours de l’euro = ’, 6.56FROM ActiviteWHERE nomStation = ’Santalba’

Page 111: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

SELECT libelle, prix / 6.56 AS prixEnEuros, ’Cours de l’euro = ’, 6.56 AS cours

FROM ActiviteWHERE nomStation = ’Santalba’

Page 112: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

Doublons :

SELECT libelle

FROM Activite

SELECT DISTINCT libelle

FROM Activite

Page 113: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

SELECT *

FROM Station

Tri du résultat

(ascendant; pour descendant ajout DESC)

SELECT *

FROM Station

ORDER BY tarif, nomStation

Page 114: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

Where :

AND, OR, NOT, <, <=, >, >=, <>, !=,BETWEEN

SELECT nomStation, libelle

FROM Activite

WHERE nomStation = ’Santalba’

AND (prix>50 AND prix<120)

Page 115: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

Where :

AND, OR, NOT, <, <=, >, >=, <>, !=,BETWEEN

SELECT nomStation, libelle

FROM Activite

WHERE nomStation = ’Santalba’

AND prix BETWEEN 50 AND 120

Page 116: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

Chaîne de caractères: Attention: chaînes de longueur fixe différentes

des chaînes de longueur variable.

Si SQL ne distingue pas majuscules et minuscules pour les mot-clés, il n’en va pas de même pour les valeurs. Donc ’SANTALBA’ est différent de ’Santalba’.

Page 117: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / Requêtes

Chaîne de caractères: LIKE : pattern matching ‘_’ : n’importe quel caractère ‘%’ : n’importe quelle chaîne de caractères

Ex:

SELECT nomStationFROM StationWHERE nomStation LIKE ’%a’

(se termine par ‘a’)

SELECT nomStationFROM StationWHERE nomStation LIKE ’V_____’

(commence par ‘v’ et a 6 caractères)

Page 118: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes

Dates: aaaa-mm-jj ID des clients qui ont commencé un séjour en

juillet 98:

SELECT idClient

FROM Sejour

WHERE debut BETWEEN DATE ’1998-07-01’ AND DATE ’1998-07-31’

Page 119: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes

Valeurs nulles: NULL Toute opération appliquée à NULL donne pour

résultat NULL. Toute comparaison avec NULL donne un résultat

qui n’est ni vrai, ni faux mais une troisième valeur booléenne, UNKNOWN.

TRUE=1, FALSE=0 et UNKNOWN=1/2. x AND y=Min(x,y); x OR y= Max(x,y); NOT x=1-x

Page 120: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes

SELECT station

FROM Sejour

WHERE nbPlaces <= 10 OR nbPlaces >= 10

Page 121: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes

nbPlaces = NULL est incorrecte.

SELECT *

FROM Sejour

WHERE nbPlaces IS (NOT) NULL

Page 122: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Afficher le nom des clients et les stations où ils ont

fait un séjour:

SELECT nom, station

FROM Client, Sejour

WHERE id = idClient

Page 123: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Afficher le nom d ’une station, son tarif, ses

activités et leurs prix:

SELECT nomStation, tarif, libelle, prix

FROM Station, Activite

WHERE Station.nomStation = Activite.nomStation

SELECT S.nomStation, tarif, libelle, prix

FROM Station S, Activite A

WHERE S.nomStation = A.nomStation

Page 124: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Afficher le nom des clients habitant a Paris, les

stations où ils ont séjourné avec la date et le tarif

pour chaque station:

SELECT nom, station, debut, tarif

FROM Client, Sejour, Station

WHERE ville = ’Paris’

AND id = idClient

AND station = nomStation

Page 125: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Donner les couples de stations situées dans la même région:

SELECT s1.nomStation, s2.nomStation

FROM Station s1, Station s2

WHERE s1.region = s2.region

Page 126: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Donnez tous les noms de région dans la base:SELECT region FROM StationUNIONSELECT region FROM Client

Donnez les régions où l’on trouve à la fois des

clients et des stations:SELECT region FROM StationINTERSECTSELECT region FROM Client

Page 127: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes =ieurs tables

Quelles sont les régions où l’on trouve des stations mais pas des clients ?

SELECT region FROM Station

EXCEPT

SELECT region FROM Client

Page 128: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

Noms de stations où ont séjourné des clients parisiens:

SELECT stationFROM Sejour, Client WHERE id=idclientAND ville =‘ Paris ’

SELECT stationFROM Sejour WHERE idclient IN (SELECT id

FROM ClientWHERE ville =‘ Paris ’)

Page 129: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

!!! Si on sait que la sous requête ramène un et un seul tuple:

SELECT stationFROM Sejour WHERE idclient = (SELECT id

FROM ClientWHERE ville =‘ Paris ’)

Page 130: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

EXISTS R. Renvoie TRUE si R n ’est pas vide, FALSE sinon.

t IN R, est un tuple dont le type est celui de R. TRUE si t appartient à R, FALSE sinon.

v cmp ANY R, où cmp est un comparateur SQL (<,>,=, etc.). Renvoie TRUE si la comparaison avec au moins un des tuples de la relation unaire R renvoie TRUE.

v cmp ALL R, où cmp est un comparateur SQL (<,>,=, etc.). Renvoie TRUE si la comparaison avec tous les tuples de la relation unaire R renvoie TRUE

Page 131: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

Où (station, lieu) ne peut-on pas faire du ski ?

SELECT nomStation, lieu

FROM Station

WHERE nomStation NOT IN (SELECT nomStation FROM

Activité

WHERE libelle = `ski`)

Page 132: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

Quelle station pratique le tarif le plus élevé?

SELECT nomStation

FROM Station

WHERE tarif >= ALL (SELECT tarif FROM Station)

Page 133: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Requêtes imbriquées

Dans quelle station pratique-t-on une activité aux même prix qu ’à Santalba?

SELECT NomStation, libelle

FROM Activite

WHERE prix IN (SELECT prix FROM Activite

WHERE NomStation=`Santalba`)

Page 134: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ sous requêtes correllées

Quels sont les clients (nom, prénom) qui ont séjourné a Santalba?

SELECT nom, prenom

FROM Client

WHERE EXISTS (SELECT `x` FROM Sejour

WHERE station = `Santalba`

AND id=idClient)

Page 135: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/ sous requêtes correllées

Dans quelle station pratique-t-on une activité au même prix qu ’à Santalba?

SELECT nomStation

FROM Activite A1

WHERE EXISTS (SELECT `x` FROM Activite A2

WHERE nomStation=`Santalba`

AND A1.libelle=A2.libelle

AND A1.prix=A2.prix)

Page 136: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Agrégation

COUNT : compte le nombre de valeurs non nulles.

MAX et MIN AVG : calcule la moyenne des valeurs de la

colonne. SUM : effectue le cumul.

Page 137: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Agrégation

Exemples:SELECT COUNT(nomStation) AVG(tarif)

MIN(tarif) MAX(tarif)

FROM Station

Requête incorrecte:

SELECT nomStation, AVG(tarif) MIN(tarif) MAX(tarif)

FROM Station

Page 138: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL/Agrégation

Combien de place a reservé Mr Kerouac pour l ’ensemble des séjours?

SELECT SUM (nbPlaces)

FROM Client, Sejour

WHERE nom=`Kerouac`

AND id=idClient

Page 139: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

GROUP BY

Afficher les régions avec le nombre de stations:

SELECT region, COUNT(nomStation)

FROM Station

GROUP BY region

Page 140: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

GROUP BY

Afficher le nombre de places reservées par client (nom):

SELECT nom, SUM(nbPlaces)

FROM Client, Sejour

WHERE id=idClient

GROUP BY id, nom

Page 141: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

HAVING

Afficher le nombre de places réservées, par client, pour les clients ayant réservé plus de 10 places:

SELECT nom, SUM(nbPlaces)

FROM Client, Séjour

WHERE id=idClient

GRUOP BY nom

HAVING SUM(nbPlaces)>=10

Page 142: Bases de Données Meltem Öztürk Introduction Modèle Entité/Association Modèle relationnel Algèbre relationnelle Algèbre relationnelle étendue SQL

SQL / création des tables

Insertion des données avec INSERT INTO

CREATE TABLE Pays (code VARCHAR (4) DEFAULT 0 NOT NULL,nom VARCHAR (30) NOT NULL,langue VARCHAR (30) NOT NULL,PRIMARY KEY (code))

INSERT INTO Pays VALUES (0, ’Inconnu’, ’Inconnue’);INSERT INTO Pays VALUES (1, ’France’, ’Français’);INSERT INTO Pays VALUES (2, ’USA’, ’Anglais’);INSERT INTO Pays VALUES (3, ’Allemagne’, ’Allemand’);INSERT INTO Pays VALUES (4, ’Angleterre’, ’Anglais’);