Télécharger la présentation
1
Bases de données – Cours 3
Présenté par: Rouagat Wahab
2
Contenu Algèbre relationnelle SQL par: Rouagat Wahab
3
L'algèbre relationnelle
l'algèbre relationnelle a inspiré le langage SQL. Elaborée par Codd dans sa thèse, elle repose sur un petit nombre d’opérateurs que l'on applique à des relations de la base de données. Les opérateurs sont de deux types : relationnels et ensemblistes. par: Rouagat Wahab
4
Opérateurs relationnels
Projection La projection est un opérateur d’accès par les colonnes. La projection U d’une relation R sur une liste d’attributs est la relation dont le schéma se réduit aux attributs de la liste. Ses tuples sont ceux de R, avec élimination des tuples en double. par: Rouagat Wahab
5
Projection Exemple: Soit la relation suivante: R A B C a 1 b d 2 f A B
par: Rouagat Wahab
6
Projection par: Rouagat Wahab
7
Opérateurs relationnels
Restriction (ou Sélection ) La restriction est un opérateur d’accès par les lignes. Une formule de restriction ou qualification q est une expression logique reliant des attributs de la relation opérande avec des constantes par l’intermédiaire d’opérateurs de comparaison ; par exemple : A = a AND B < 2 La restriction U de la relation R par la qualification q est une relation de même schéma que R dont les tuples sont ceux de R qui vérifient la qualification. par: Rouagat Wahab
8
Restriction Exemple: U = б A=a (R) A B C a 1 d A B C a 1 b d 2 f R
par: Rouagat Wahab
9
Restriction par: Rouagat Wahab
10
Opérateurs ensemblistes
Union L’union de deux relations R et S de même schéma est la relation de même schéma dont les tuples sont à la fois ceux de R et de S. par: Rouagat Wahab
11
Union S R Exemple: Soit les relations R et S A B C a 3 f A B C a 1 b d
2 f 3 K = R U S A B C a 1 b d 2 f R par: Rouagat Wahab
12
Union par: Rouagat Wahab
13
Opérateurs ensemblistes
Différence La différence de deux relations de même schéma R et S est une relation de même schéma dont les tuples sont ceux de R n’appartenant pas à S. La différence n’est pas un opérateur commutatif. par: Rouagat Wahab
14
Différence par: Rouagat Wahab
15
Opérateurs ensemblistes
L’intersection L’intersection de deux relations R et S de même schéma est une relation de même schéma constituée des tuples qui appartiennent à la fois R et à S. par: Rouagat Wahab
16
intersection par: Rouagat Wahab
17
Produit cartésien Le produit cartésien de deux relations R et S est une relation dont le schéma est la concaténation de ceux des relations composantes et dont les tuples sont obtenus en combinant chaque tuple de R avec tous ceux de S. par: Rouagat Wahab
18
jointures On distingue plusieurs opérateurs de jointures. Ils sont associés à des formules de qualification reliant entre eux certains attributs des relations composantes. l’équijointure : La clause de qualification est une égalité entre deux attributs des relations opérandes. La relation résultante est le sous-ensemble du produit cartésien réduit aux tuples vérifiant la qualification, sans répétition, dans le schéma, de l’attribut commun. par: Rouagat Wahab
19
Exemple: soit la relation R et T ou:
B C a 1 b d 2 f R par: Rouagat Wahab
20
jointure par: Rouagat Wahab
21
Composition d’opérations
La composition des divers opérateurs permet d’envisager des traitements algébriques complexes autorisant des manipulations formelles des données. Soient les relations : EMP(numemp, nomemp, salaire, emploi, departement) DEPT(numdept, nomdept, adresse, ville) La détermination des informaticiens basés à Ouargla et gagnant plus de DA se fera par : par: Rouagat Wahab
22
Composition d’opérations
Cette expression peut être représentée graphiquement par l’arbre statique d’exécution suivant : par: Rouagat Wahab
23
arbre statique d’exécution
par: Rouagat Wahab
24
Exercice On suppose qu'une bibliothèque gère une base de données dont le schéma est le suivant : Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEective) Retard(Personne, Livre, DateEmprunt, PenalitéRetard) Question: Exprimer les requêtes suivantes en algèbre relationnelle: Quelles sont les personnes ayant emprunté le livre "Recueil Examens BD" ? Quelles sont les personnes n'ayant jamais rendu de livre en retard ? Quelles sont les personnes ayant emprunté tous les livres (empruntés au moins une fois) ? Quels sont les livres ayant été empruntés par tout le monde (i.e. tous les emprunteurs) ? par: Rouagat Wahab
25
Solution 1: 2: 3: 4: par: Rouagat Wahab
26
SQL (Structured Query Language)
Le langage SQL peut être considéré comme le langage d’accès normalisé aux bases de données. Il est aujourd’hui supporté par la plupart des produits commerciaux que ce soit par les systèmes de gestion de bases de données micro tel que Access ou par les produits plus professionnels tels que Oracle ou Sybase. Il a fait l’objet de plusieurs normes ANSI/ISO dont la plus répandue aujourd’hui est la norme SQL2 qui a été définie en Le succès du langage SQL est du essentiellement à sa simplicité et au fait qu’il s’appuie sur le schéma conceptuel pour énoncer des requêtes en laissant le SGBD responsable de la stratégie d’exécution. par: Rouagat Wahab
27
SQL Le langage SQL comporte :
une partie sur la définition des données : le langage de définition des données (LDD) qui permet de définir des relations, des vues externes et des contraintes d’intégrité; une partie sur les requêtes : le langage de manipulation des données (LMD) qui permet d’interroger une base de données sous forme déclarative sans se préoccuper de l’organisation physique des données; une partie sur le contrôle des données : le langage de contrôle des données (LCD) qui permet de contrôler la sécurité et les accès aux données. par: Rouagat Wahab
28
Le langage de définition des données (LDD)
Le langage de définition des données permet de définir et de manipuler les concepts du modèle relationnel liés au schéma : relation, attribut, clé, contraintes d’intégrité, vues ainsi que certains éléments liés à l’administration de la base de données : index, droits des utilisateurs. Les types de données disponibles dépendent du SGBD mais on retrouve généralement les types entier, réel, chaînes de caractères et date. Les principaux types de données disponibles en SQL sont : SMALLINT, INTEGER, DECIMAL, FLOAT, DOUBLE, DATE, TIME, TIMESTAMP, CHAR et VARCHAR. par: Rouagat Wahab
29
CREATE TABLE (LDD) Crée une relation (table) Syntaxe :
CREATE TABLE <nom_de_relation> ( <nom_d’attribut> <type_de_données> [NOT NULL] [, ...] [, PRIMARY KEY (<nom_d’attribut> [, ...] ) ] [, FOREIGN KEY (<nom_d’attribut>) REFERENCES <nom_de_relation> [, ...] ] ) par: Rouagat Wahab
30
exemple Soit le schéma relationnel suivant: Article (n_art, design, prix_ach, prix_v) Stock (#sn_art, quantite, seuil) La requête suivante nous permet de créer la relation ‘Article’: create table article( n_art numeric(3) not null, design varchar(30), prix_ach decimal(6,2), prix_v decimal(6,2), primary key (n_art) ) par: Rouagat Wahab
31
exemple Stock (# sn_art, quantite, seuil) La requête suivante nous permet de créer la relation ‘stock’: create table stock( sn_art numeric(3) not null, quantite numeric(2), seuil numeric(2), primary key (sn_art), foreign key (sn_art) references article(n_art) ) par: Rouagat Wahab
32
ALTER TABLE (LDD) Modifier une relation (table) Syntaxe : Exemple:
ALTER TABLE <nom_de_relation> ADD ( <nom_d'attribut> <type_de_données> ) ALTER TABLE <nom_de_relation> ADD constraint <contrainte> Exemple: Si on veut augmenter la relation stock par le champ etage de type chaîne de caractères Stock (#sn_art, quantite, seuil, etage) alors, on doit appliquer la requête suivante: alter table stock add etage varchar(2) par: Rouagat Wahab
33
DROP TABLE (LDD) Supprimer une relation (table) Syntaxe : Remarque:
DROP TABLE <nom_de_relation> [CASCADE CONSTRAINTS] Remarque: On ne peut pas supprimer une table qui est référencée par d’autres table, en effet, Si on veut supprimer la table ‘article’ on doit d'abord supprimer la table ‘stock’ Remarque : [CASCADE CONSTRAINTS]: forcer la supprission de la relation ainsi que toute relation référençante Exemple: drop table stock par: Rouagat Wahab
34
Le langage de manipulation des données (LMD)
Insertion de données dans une relation Syntaxe INSERT INTO <nom_de_relation > [(<liste_d’attributs>)] VALUES (<liste_de_valeurs >) Exemples : insérer les données (1, ordinateur, 300, 400) dans la table ‘article’: insert into article values (1, ‘ordinateur’, 300, 400) insérer les données (2, datashow) dans ‘article’: insert into article (n_art, design) values (2, ‘datashow’) par: Rouagat Wahab
35
Le langage de manipulation des données (LMD)
Suppression de données dans une relation Syntaxe DELETE FROM < nom_de_relation > [WHERE <expression_de_selection > ] Exemples : Supprimer tous les enregistrements de la table ‘article’: delete from article Supprimer les enregistrements de la table ‘article’ où le numéro d’article égale 2: delete from article where n_art=2 par: Rouagat Wahab
36
Le langage de manipulation des données (LMD)
Modification des données d’une relation Syntaxe UPDATE <nom_de_relation> SET < champ > [WHERE <expression_de_selection > ] Exemples : Modifier le prix d’achat et de vente dans la table ‘article’ où le nom d’article est datashow: update article set prix_ach=30000 and prix_v=35000 where design=‘datashow’ par: Rouagat Wahab
37
Le langage de manipulation des données (LMD)
Sélection de données Syntaxe SELECT [DISTINCT] { * | <nom_d’attribut> [, ...] } FROM <nom_de_relation> [, ...] [WHERE <condition>] Remarque: * remplace la liste des attributs de la relation Exemples : Quels sont les prix d’achat et de vente de l’article ‘datashow’? select prix_ach, prix_v from article where design=‘datashow’ par: Rouagat Wahab
38
Exemple de Sélection de données :
Quels sont les articles dans l’étage B6 et combien d’unité disponible dans le stock? Solution: select design, quantite from article, stock where sn_art=nart and etage=‘B6’ par: Rouagat Wahab
39
Lien entre algèbre relationnelle et SQL
Opération Expression algébrique Expression SQL équivalente Projection P A ( R1 ) SELECT A FROM R1 Sélection s < condition > ( R1 ) SELECT * FROM R1 WHERE <condition > Produit cartésien R1 X R2 SELECT * FROM R1, R2 Jointure R1 * R3 SELECT * FROM R1, R3 WHERE R1.A = R3.A Union R1 U R2 SELECT * FROM R1 UNION SELECT * FROM R2 Intersection R1 n R2 SELECT * FROM R1, R2 WHERE R1.A = R2.C and R1.B = R2.D Différence R1 / R2 SELECT * FROM R1 WHERE not exists (SELECT * FROM R2 WHERE R2.C = R1.A and R2.D = R1.B ) Division R1 : R2 SELECT A FROM R1 GROUP BY A HAVING COUNT (distinct B ) = (SELECT count (distinct B ) FROM R2) par: Rouagat Wahab
40
Exercice Prenons l’exemple de la bibliothèque :
Emprunt(Personne, Livre, DateEmprunt, DateRetourPrevue, DateRetourEective) Retard(Personne, Livre, DateEmprunt, PenalitéRetard) Questions: En utilisant le langage SQL: Créer les relations Emprunt et Retard Exprimer les requêtes suivantes : Quelles sont les personnes ayant emprunté le livre "Recueil Examens BD" ? Quelles sont les personnes n'ayant jamais rendu de livre en retard ? Quelles sont les personnes ayant emprunté tous les livres (empruntés au moins une fois) ? Quels sont les livres ayant été empruntés par tout le monde (i.e. tous les emprunteurs) ? par: Rouagat Wahab
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.