Bases de Données Modèle Relationnel



Documents pareils
1 Introduction et installation

Langage SQL : créer et interroger une base

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

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

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

Le langage SQL Rappels

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

SQL Historique

Bases de données relationnelles

16H Cours / 18H TD / 20H TP

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Le Langage SQL version Oracle

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

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

Les bases de données

Bases de Données. Plan

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

Le Langage De Description De Données(LDD)

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données élémentaires Maude Manouvrier

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

Information utiles. webpage : Google+ : digiusto/

1 Modélisation d une base de données pour une société de bourse

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

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

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

Systèmes de Gestion de Bases de Données

Introduction aux Bases de Données

Bases de données cours 1

CREATION WEB DYNAMIQUE

TP Bases de données réparties

Modélisation de bases de données : Le modèle relationnel

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

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

Introduction aux Bases de Données 2004/2005

Présentation du module Base de données spatio-temporelles

COURS de BASES de DONNEES

Systèmes d information et bases de données (niveau 1)

Conception des bases de données : Modèle Entité-Association

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

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

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

Bases de données - Modèle relationnel

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

I4 : Bases de Données

Optimisation SQL. Quelques règles de bases

MySQL / SQL EXEMPLES

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

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

Groupe 11 TABLE DES MATIERES

Cours 4 : Agrégats et GROUP BY

Vincent Augusto

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

Bases de Données Relationnelles. Le Modèle Relationnel

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

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

Bases de données Cours 1 : Généralités sur les bases de données

A QUOI SERVENT LES BASES DE DONNÉES?

Dossier I Découverte de Base d Open Office

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

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

Master I Génie Logiciel

Bases de Données Avancées

Mejdi BLAGHGI & Anis ASSÈS

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

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

Olivier Mondet

Bases de données réparties: Fragmentation et allocation

Objectifs du TP : Initiation à Access

Bases de données relationnelles & SQL

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

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

Structure fonctionnelle d un SGBD

Module BDR Master d Informatique (SAR)

Bases de données et sites WEB

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

Optimisations des SGBDR. Étude de cas : MySQL

Les bases de données Page 1 / 8

Base de Données et Langage SQL

Évaluation et optimisation de requêtes

Séance 1 Introduction aux bases de données

Introduction aux bases de données: application en biologie

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

CESI Bases de données

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

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

Administration des bases de données. Jean-Yves Antoine

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

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

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

Cours Bases de données

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)

Transcription:

Bases de Données Modèle Relationnel Cécile Capponi Rémi Eyraud cecile.capponi@lif.univ-mrs.fr Université d Aix-Marseille L3 Info

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Bref historique Travaux de Edgar F. Codd (1970) Introduction Modèle relationnel vs. modèle DIAM (entités+relations) Le langage SEQUEL de Codd (Structured English Query Language, IBM) Naissance de Oracle et de SQL (Structured Query Language) Premiers objectifs Idée initiale : utiliser un modèle ensembliste pour décrire et manipuler un ensemble d enregistrements. Indépendance entre programmes d application et représentation interne Base théorique solide pour cohérence et non-redondance des données Notion centrale de table Représentation 2D d un ensemble de données pouvant être décrites, manipulées, et interrogées par des opérateurs ensemblistes classiques.

Les douze règles de Codd 1. (Unicité) L information est représentée de façon unique sous forme de valeurs de colonnes de tables. 2. (Garantie d accès) Les données doivent être accessibles de façon logique par les tables, les clés primaires, et les colonnes. 3. Les valeurs vides (non renseignées NULL) doivent être traitées comme des informations manquantes, et non pas comme des chaînes vides, des blancs ou des zéros. 4. Le catalogue (ou schéma) doit être stocké dans la base au même titre que les données. 5. Un langage (unique si possible) doit permettre de définir de façon linéaire les données, les vues sur ces données, les contraintes d intégrité, les autorisations d accès, les transactions, et enfin, la manipulation de données. 6. Les vues doivent refléter les mises à jour de leurs tables de base, et vice versa.

Les douze règles de Codd (cont d) 7. Chaque action suivante doit pouvoir être réalisée par une et une seule action (lot d instructions) : retrouver, insérer, mettre à jour, et supprimer, une donnée. 8. (Indépendance physique) Il doit y avoir séparation logique entre les opérations (interactives ou non), et le stockage des données et leurs méthodes d accès. 9. (Indépendance logique) Les opérations (interactives ou non) peuvent modifier le schéma de la base de données sans qu elle n ait à être recréée, et sans que les applications construites au dessus d elle n aient à être réécrites. 10. (Indépendance d intégrité) Les contraintes d intégrité doivent être disponibles, et stockées, dans le catalogue, et non pas dans un quelconque programme d application. 11. (Indépendance de distribution) Le langage de manipulation des données ne doit pas se soucier d où ni comment les données sont stockées et/ou distribuées. 12. (Non-subversion) Si le système fournit une interface de bas niveau, cette interface ne doit pas permettre de contourner le système (par exemple une contrainte relationnelle de sécurité ou d intégrité).

Système de Gestion des BD Relationnelle SGBDR Respecte les 12 règles de Codd Oracle, Mysql, SQL server, PostgreSQL, etc. (Pas Access...) Un grand succès, qui dure Simplicité d utilisation Bases théoriques solides Normalisations SQL ISO/CEI 9075 (majeures : 1986, 1992, 1999) (Ancrage historique, coût des migrations) Nécessité de comprendre l algèbre relationnelle Pour mieux comprendre les architectures et manuels des SGBDR Pour s adapter très rapidement à tout SGBDR Pour devenir un bon concepteur / administrateur Pour ne plus confondre Modèle Relationnel et SQL Pour connaître les possibilités et les limites

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Structures de données Le vocabulaire... Plusieurs termes peuvent désigner le même concept car : Théorie et implémentation Informatique et mathématiques Franglais Par exemple : tuple ligne enregistrement record table relation ( entité) Théorie relationnelle Fondée sur la théorie des ensembles Trois briques incontournables : 1. Domaine 2. Relation 3. Attribut

Vocabulaire : Domaine Définition Un domaine est un ensemble de valeurs caractérisé par un nom. (Autrement dit) Un domaine est un ensemble nommé dans lequel les données prennent leurs valeurs. Un domaine n est pas un type de données (pas forcément d opérations) Intention et extension d un domaine Déf. en intention Le domaine est défini via les propriétés que doivent respecter ses valeurs (entiers positifs, mots commençant par la lettre M, etc.) Déf. en extension Le domaine est défini via l énumération de toutes les valeurs de l ensemble ( Devise = { dollar, euro, yen } ) Syntaxe SQL3 : instruction CREATE DOMAIN

Vocabulaire : Relation Structure fondamentale du modèle relationnel Rappel : produit cartésien Le produit cartésien d un ensemble de domaines d 1, d 2,, d n est l ensemble des vecteurs v 1, v 2,, v n tel que i, v i d i. Exemple : Pays = { France, Italie, Japon } Devise = { dollar, euro, yen } Pays Devise = { France, dollar, France, euro, France, yen, Italie, dollar, Italie, euro, Italie, yen, Japon, dollar, Japon, euro, Japon, yen } Intérêt d un sous-ensemble Certains des vecteurs n ont pas de signification... { France, euro, Italie, euro, Japon, yen } Plus pertinent?

Vocabulaire : Relation (cont d) Relation : définition Une relation est un sous-ensemble du produit cartésien appliqué à une liste finie de domaines, et ce sous-ensemble est caractérisé par un nom. Exemple DeviseCourante = { France, euro, Italie, euro, Japon, yen } Pays Devise Remarques Une relation est donc un sous-ensemble de vecteurs. La définition d une relation vise à définir l espace de définition des vecteurs pertinents.

Vocabulaire : Relation (cont d) Visualisation d une relation : Table Autant de lignes que de vecteurs existants, autant de colonnes que de domaines dans le produit cartésien. Une ligne = un vecteur ième colonne : valeurs de la ième composante des vecteurs Valeurs d une colonne : appartiennent à un domaine. Exemple DeviseCourante Pays Devise France euro Italie euro Japon yen A noter pour la suite En SQL, on dit table à la place de relation...

Vocabulaire : Attribut Définition Un attribut est une colonne de relation, caractérisé par un nom unique dans cette relation. Domaine versus Colonne Attention la colonne n est pas le domaine : la colonne est un sous-ensemble du domaine de cette composante du produit cartésien. Ne pas confondre, parce qu un même domaine peut être impliqué plusieurs fois dans la même relation. VilleDepart VilleArrivee Distance Ville Ville Kilometre Domaine éventuellement infini, colonne finie à l instant t.

Vocabulaire : Tuple Définition Une ligne de relation (ex. Paris, Marseille, 602 ) est un n-uplet de valeurs, chacune étant accessible via le nom de l attribut qu elle value (ex. VilleDepart). Une ligne (en SQL) est appelée un tuple ou n-uplet (en théorie relationnelle). Tuple et espace de représentation des relations Une relation croisant n domaines correspond à un sous-espace E de l espace à n dimensions engendré par le produit cartésien de ces n domaines. Une relation peut donc être représentée par un diagramme à n dimensions, dans lequel chaque axe correspond à un domaine. Un tuple est un point de ce diagramme (dans le sous-espace E).

Graphe d une relation (rappels) Relation binaire R(a 1, a 2 ) Dom( a 1 ) a b c R Dom( a 2 ) 1 2 3 4 5 Dom( a 2 ) R 1 2 3 4 5 a b c Dom( a 1 ) R a 1 a 2 a 1 a 2 a 5 b 2 c 1 c 2 c 3 Une relation n-aire est une généralisation des binaires à n dimensions (axes)

Exemples de représentation de relations

Vocabulaire : Schéma de relation Structure et contenu d une relation A différencier dans la temporalité Définition de la relation (relativement) figée, mais contenu évolutif Exemple : la base cinématographique (ex. IMDB) avait une structure identique les 12 et 16 mars 2012, mais son contenu a évolué entre ces deux dates. Intention d une relation (description via attributs et domaines) versus extension de la relation (son ensemble de tuples, au temps t) Schéma de relation R = description de l intention de R, c est-à-dire description de l espace dans lequel évoluera l extension de R, via attributs, domaines, et contraintes.

Vocabulaire : Schéma de relation Structure et contenu d une relation A différencier dans la temporalité Définition de la relation (relativement) figée, mais contenu évolutif Exemple : la base cinématographique (ex. IMDB) avait une structure identique les 12 et 16 mars 2012, mais son contenu a évolué entre ces deux dates. Intention d une relation (description via attributs et domaines) versus extension de la relation (son ensemble de tuples, au temps t) Schéma de relation R = description de l intention de R, c est-à-dire description de l espace dans lequel évoluera l extension de R, via attributs, domaines, et contraintes. Dom( a 1 ) a b c R t 0 Dom( a 2 ) 1 2 3 4 5 Dom( a 2 ) R 1 2 3 4 5 a b c Dom( a 1 )

Vocabulaire : Schéma de relation Structure et contenu d une relation A différencier dans la temporalité Définition de la relation (relativement) figée, mais contenu évolutif Exemple : la base cinématographique (ex. IMDB) avait une structure identique les 12 et 16 mars 2012, mais son contenu a évolué entre ces deux dates. Intention d une relation (description via attributs et domaines) versus extension de la relation (son ensemble de tuples, au temps t) Schéma de relation R = description de l intention de R, c est-à-dire description de l espace dans lequel évoluera l extension de R, via attributs, domaines, et contraintes. Dom( a 1 ) a b c R t 1 Dom( a 2 ) 1 2 3 4 5 Dom( a 2 ) R 1 2 3 4 5 a b c Dom( a 1 )

Vocabulaire : Schéma de relation Structure et contenu d une relation A différencier dans la temporalité Définition de la relation (relativement) figée, mais contenu évolutif Exemple : la base cinématographique (ex. IMDB) avait une structure identique les 12 et 16 mars 2012, mais son contenu a évolué entre ces deux dates. Intention d une relation (description via attributs et domaines) versus extension de la relation (son ensemble de tuples, au temps t) Schéma de relation R = description de l intention de R, c est-à-dire description de l espace dans lequel évoluera l extension de R, via attributs, domaines, et contraintes. Dom( a 1 ) a b c R t 2 Dom( a 2 ) 1 2 3 4 5 Dom( a 2 ) R 1 2 3 4 5 a b c Dom( a 1 )

Vocabulaire : Schéma de relation Structure et contenu d une relation A différencier dans la temporalité Définition de la relation (relativement) figée, mais contenu évolutif Exemple : la base cinématographique (ex. IMDB) avait une structure identique les 12 et 16 mars 2012, mais son contenu a évolué entre ces deux dates. Intention d une relation (description via attributs et domaines) versus extension de la relation (son ensemble de tuples, au temps t) Schéma de relation R = description de l intention de R, c est-à-dire description de l espace dans lequel évoluera l extension de R, via attributs, domaines, et contraintes. Dom( a 1 ) a b c R t 3 Dom( a 2 ) 1 2 3 4 5 Dom( a 2 ) R 1 2 3 4 5 a b c Dom( a 1 )

Gestion de l intégrité des structures Pour faciliter la gestion de la cohérence Un ensemble de règles d intégrité structurelle : Règles énoncées par des assertions sur relations et attributs (notion principale : clé de relation) Contrôle de données manquantes, contrôle des valeurs d attributs Importance de ces règles : leur respect est assuré par le SGBD! Qu est-ce qu une clé de relation? Une relation étant un ensemble, les doublons sont interdits. A chaque tuple est associée une clé unique, définie avec de la relation Une clé est un ensemble minimal d attributs dont la connaissance des valeurs permet d identifier de façon unique le tuple au sein de la relation Clé primaire : celle choisie parmi toutes les clés possibles. Soulignée. Acteur(nom, prénom, naissance, mort, numéro) Acteur(nom, prénom, naissance, mort, numéro) Ford, Harrison, 1884, 1957, 214, Ford, Harrison, 1942, NULL, 8710

Gestion de l intégrité des structures Pour faciliter la gestion de la cohérence Un ensemble de règles d intégrité structurelle : Règles énoncées par des assertions sur relations et attributs (notion principale : clé de relation) Contrôle de données manquantes, contrôle des valeurs d attributs Importance de ces règles : leur respect est assuré par le SGBD! Qu est-ce qu une clé de relation? Une relation étant un ensemble, les doublons sont interdits. A chaque tuple est associée une clé unique, définie avec de la relation Une clé est un ensemble minimal d attributs dont la connaissance des valeurs permet d identifier de façon unique le tuple au sein de la relation Clé primaire : celle choisie parmi toutes les clés possibles. Soulignée. Acteur(nom, prénom, naissance, mort, numéro) Acteur(nom, prénom, naissance, mort, numéro) Ford, Harrison, 1884, 1957, 214, Ford, Harrison, 1942, NULL, 8710

Contrainte d unicité Implicite dans le cas d une clé Deux tuples ne peuvent pas donner la même liste de valeurs de clé Si la clé est (numero), deux acteurs ne peuvent pas avoir le même numéro Si la clé est (nom, prénom, naissance), deux acteurs ne peuvent pas avoir les mêmes nom, et prénom, et année de naissance... A expliciter pour d autres (groupes d ) attributs Même signification, pour des (groupes d ) attributs non clé. Acteur(nom, prénom, naissance, mort, numéro), numéro unique Film(numfilm, titre, réal, année), (titre, réal) unique 451,La vie,frund,1968 et 10784,La vie,chikyujin,2009 3671,La jetée,marker,1962 et 6510,Chats perchés,marker,2004

Contrainte de référence Tout tuple est référencé via sa valeur de clé (unicité) Mise en relation effective des tuples Un groupe d attributs A 1 de la relation R 1 référence le groupe d attributs A 2 de la relation R 2. A 1 et A 2 doivent être compatibles (nombre d attributs, domaines des attributs) Tout tuple t 1 de R 1 pourra faire référence à un tuple t 2 de R 2 : t 1 donne à A 1 les valeurs de A 2 dans t 2. Devise(numéro, nb pièces, nb billets, denomination Pays(nom, devise, capitale, superficie) Devise 7, 8, 8, euro Pays France, 7, Paris, 544435

Cas particuliers : clé étrangère Quand la référence est vers une clé primaire Spécification explicite au niveau de la relation source Une clé étrangère est une contrainte qui spécifie qu un groupe d attributs A 1 d une relation R 1 fait référence au groupe d attributs A 2, clé primaire de R 2. On souligne en pointillés (ou on écrit en italiques) les attributs de A 1. Une clé (i.e. une contrainte de clé) = un groupe d attributs. Remarques à ancrer Une relation possède toujours une et une seule clé primaire Une relation peut spécifier plusieurs clés étrangères Un même attribut peut à la fois apparaître dans une clé primaire et dans une clé étrangère! Ville(nom, pays, nb habitants) Aeroport(numéro, [ville, pays], acronyme) Vol(numéro, num from, num to, h dep, jours, duree, avion)

Exemple, clés étrangères Ville(nom, pays, nb hab) Aéroport(acronyme, [ville, pays], nom) Vol(numéro, a from, a to, h dep, jours, duree, avion) Ville nom pays nb hab Bruxelles Belgique 162000 Londres Royaume Uni 7684700 Florence USA SC 31570 Florence Italie 366956 Aéroport acronyme ville pays nom BRU Bruxelles Belgique Zaventem LHR Londres Royaume Uni Heathrow LGW Londres Royaume Uni Gatwick FLO Florence USA SC Florence Regional FLR Florence Italie Vespucci Vol numéro a from a to h dep jours duree avion 4587AZ BRU FLO 14:15 MF 9:05 B1549 4511HH LGW BRU 06:40 MtWTFsS 00:55 B1011 0014PO FLR LGW 10:05 MWFS 2:10 A568

Auto-référence Une relation peut s auto-référencer Personne(num, nom, prénom, année, père, mère) 1. une clé primaire (attribut numéro), 2. une première clé étrangère père qui référence le tuple de Personne qui est le père de la ligne courante, 3. une autre clé étrangère mère qui référence le tuple de Personne qui est la mère du tuple courant Exercice Retrouver l arbre généalogique Personne num nom prénom année père mère 12 Martin Pierre 1914 NULL NULL 56 Castard Joséphine 1918 NULL NULL 77 Frandier Ernest 1924 NULL NULL 74 Bisteur Annie 1924 NULL NULL 89 Martin Eric 1945 12 74 91 Frandier Alain 1954 77 56 94 Bisteur Virginie 1956 NULL 74 103 Frandier Mélanie 1988 91 94 122 Frandier Pierre 1990 91 103

Contraintes référentielles et SGBDR Importance de spécifier les contraintes relationnelles Le SGBDR effectue des contrôles d intégrité sur les contraintes déclarées Insertion d un tuple t dans une relation R : S il existe une clé étrangère A de R vers une autre relation R, le SGBDR vérifie que la valeur A(t) correspond à la clé primaire d un tuple dans R. Suppression d un tuple t référencé par un ensemble T d autres tuples (comportement du SGBD à spécifier) : Le SGBD supprime en cascade tous les tuples de T, ou bien le SGBR donne la valeur NULL aux clés étrangères vers t dans les tuples de T (set null), ou encore le SGBR refuse la suppression de t (restrict). Personne num nom prénom année père mère 12 Martin Pierre 1914 NULL NULL 74 Bisteur Annie 1924 NULL NULL 89 Martin Eric 1945 12 74 210 Martin Hélène 1971 89 NULL Modification d un tuple qui en référence un autre : cf. insertion.

Notion de valeur manquante Notée NULL Contrainte de valeur d attribut On ne connaît pas toujours les valeurs de tous les attributs lors de l insertion d un tuple (ex. mère d une Personne). Parfois, un attribut n est pas applicable à un tuple particulier (ex. date décès d un Acteur) Valeur manquante parfois interdite Toujours interdite pour un attribut de clé primaire Possibilité de spécifier (au niveau de la relation) qu un attribut doit toujours avoir une valeur Contrainte de Domaine Restreindre un domaine de valeurs pour un attribut, en plus du type de données associé Contrainte en extension : saison IN {hiver, printemps, été, automne} Contrainte en intention (restriction) : durée NOT NULL AND durée > 0 (type CHECK).

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Algèbre relationnelle Préambule Tout est RELATION : les opérateurs permettent de manipuler ces relations pour en créer de nouvelles. Une relation est un ensemble de tuples Tout résultat d un opérateur relationnel est une relation, même si cette dernière est réduite à une ligne et une colonne Maîtrise de l algèbre relationnelle INDISPENSABLE pour tout bon informaticien Catégories d opérateurs Une relation est un ensemble de tuples Opérateurs ensemblistes classiques (union, différence, produit cartésien) Opérateurs spécifiques, indispensable à l algèbre relationnelle Représentation graphique de chaque opérateur Utile pour plus de lisibilité Arbres de représentation (cf. écriture arborescente d une expression arithmétique).

Opérations ensemblistes : introduction La relation comme un ensemble de tuples Arguments et résultat de ces opérations : des relations Opérations directement adaptées de la théorie des ensembles Ne prennent pas en compte les clés (primaires ou étrangères) N ont pas à traiter les attributs

Définition Opérations ensemblistes : Union Soient R 1 et R 2 de même schéma, L union de R 1 et R 2 est la relation R 3 = R 1 R 2, R 3 a le même schéma que R 1 et R 2, Les tuples de R 3 sont ceux de R 1 et de R 2 réunis, Pas de doublons dans R 3 (si un tuple est à la fois dans R 1 et dans R 2, alors il n apparaîtra qu une fois dans R 3 ), L union est une opération commutative : R 1 R 2 = R 2 R 1. Notations R 3 = R 1 R 2 R 3 = UNION(R 1, R 2 ) Représentation arborescente

Opérations ensemblistes : Union (cont d)

Opérations ensemblistes : Différence Définition Soient R 1 et R 2 de même schéma, La différence entre R 1 et R 2 est la relation R 3 = R 1 R 2, R 3 a le même schéma que R 1 et R 2, Les tuples de R 3 sont ceux de R 1 qui n appartiennent pas à R 2, (Les tuples de R 3 sont les tuples de R 1 sauf ceux qui sont dans R 2 ), La différence n est PAS une opération commutative : R 1 R 2 R 2 R 1. On peut montrer que (R 1 R 2 ) (R 2 R 1 ) = Notations R 3 = R 1 R 2 R 3 = MINUS(R 1, R 2 ) Représentation arborescente

Opérations ensemblistes : Différence (cont d) Souvent utilisée dans des questions du style : quels sont les X qui n ont PAS c(x). On liste tous les X, et on enlève de cet ensemble ceux qui vérifient c(x).

Définition Opérations ensemblistes : Produit cartésien Soient R 1 et R 2 deux schémas quelconques, Le produit cartésien de R 1 et R 2 est la relation R 3 = R 1 R 2, R 3 a pour schéma la concaténation de celui de R 1 et de celui de R 2, Les tuples de R 3 sont ceux issus de toutes les combinaisons possibles (par concaténation des colonnes) des tuples R 1 avec ceux de R 2, Le produit cartésien est une opération commutative : R 1 R 2 = R 2 R 1 (si pas d ordre explicite sur les colonnes). Notations R 1 (A 1 ), R 2 (A 2 ), R 3 = R 1 R 2 : R 3 (A 1, A 2 ). R 3 = R 1 R 2 R 3 = TIMES(R 1, R 2 ) R 3 = PRODUCT(R 1, R 2 ) Représentation arborescente

Opérations ensemblistes : Produit cartésien (cont d)

Opérations propres à l algèbre relationnelle : introduction La relation comme un ensemble de tuples Résultat de ces opérations : des relations. Opérations impliquant relations et colonnes (attributs) Ne prennent pas (forcément) en compte les clés (primaires ou étrangères) Utilisation de conditions sur colonnes Projection, restriction, jointure

Définition Opérations spécifiques : Projection Soit R 1 une relation de schéma quelconque, R 1 (a 1, a 2,, a n), La projection de R 1 sur les attributs (a i,, a j ), avec 1 i j n, est la relation R 2 = Π (ai,,a j )(R 1 ) R 2 a le schéma R 2 (a i,, a j ) : constitué des attributs sur lesquels R 1 est projetée, Les tuples de R 2 sont les mêmes que ceux de R 1 avec des attributs en moins. Notations R 2 = Π (ai,,a j )(R 1 ) R 2 = (R 1 )[a i,, a j ] R 2 = PROJECT(R 1, a i,, a j ) Représentation arborescente (diminution horizontale)

Opérations spécifiques : Projection (cont d)

Définition Opérations spécifiques : Restriction Soit R 1 une relation de schéma quelconque, La restriction de R 1 à la condition σ, est la relation R 2 = σ critère (R 1 ), R 2 a le même schéma que R 1, Les tuples de R 2 sont ceux de R 1 qui satisfont le critère de restriction, Le critère peut porter sur un ou plusieurs attributs de R 1, Critère de restriction : attribut comp [ valeur ], avec comp dans {=, <, >,,,, LIKE, IN, NOT NULL,...} Les critères se combinent avec des opérateurs logiques (AND,...), Des fonctions peuvent s appliquer sur les opérandes (To Date(), etc.) Notations R 2 = σ critère(r 1 ) R 2 = (R 1 )[critère] R 2 = RESTRICT(R 1, critère) Représentation arborescente (diminution verticale)

Opérations spécifiques : Restriction (cont d)

Opérations spécifiques : Jointure Une opération majeure de l algèbre relationnelle Théoriquement, la jointure de deux relations est un produit cartésien entre ces deux relations, suivi de l élimination de certains tuples ne satisfaisant un critère de comparaison entre deux colonnes du schéma résultant Le seul opérateur exploitant les attributs référentiels inter-relations (clé primaire, clé étrangère) Peut être défini via le produit cartésien et la restriction La jointure est si importante qu on en fait une opération centrale. Définition Soient deux relations R 1 (a 1,, a n) et R 2 (b 1,, b m), La jointure de R 1 et R 2 sous condition θ, est la relation R 3 = R 1 θ R 2, Le schéma de R 3 est le même que celui de R 1 R 2, Les tuples de R 3 sont les tuples de R 1 R 2 qui vérifient la condition de jointure θ, La condition de jointure doit impliquer au moins un attribut de chaque relation : a i θb j, avec 0 i n et 0 j m.

Opérations spécifiques : Jointure (cont d)

Notations Opérations spécifiques : Jointure (cont d) R 3 = R 1 θ R 2 R 2 = JOIN(R 1, R 2, θ) Représentation arborescente Propriétés Combinatoire si R 1 possède n 1 attributs et t 1 tuples ; si R 2 possède n 2 attributs et t 2 tuples ; alors R 1 θ R 2 est constituée de n 1 + n 2 attributs, et d au plus t 1 + t 2 tuples. Alternative JOIN(R 1, R 2, θ) = RESTRICT(TIMES(R 1, R 2 ), θ) Jointure naturelle R 1 R 2 Jointure entre deux relations avec critère d égalité (équi-jointure) entre attributs de mêmes noms, et fusion des colonnes de mêmes noms.

Opérations spécifiques : Jointure (cont d) Jointure naturelle : mise en œuvre naturellement sur les duos (clé primaire clé étrangère). Exemple de jointure naturelle Film num film titre annee num real 1139 Un frisson dans la nuit 1971 104 369 Top gun 1986 593 230 Le Monstre 1994 4102 4517 La vie est belle 1997 4102 788 Jugé coupable 1999 104 1422 Le tigre et la neige 2005 4102 4100 Domino 2005 593 3988 Gran Torino 2009 104 Réal num real nom prénom naiss mort 104 Eastwood Clint 1930 NULL 593 Scott Tony 1944 2012 779 Audiard Michel 1920 1985 4102 Roberto Benigni 1952 NULL

Opérations spécifiques : Jointure (cont d) Jointure naturelle : mise en œuvre naturellement sur les duos (clé primaire clé étrangère). Exemple de jointure naturelle Par de manque de place, les attributs naiss et mort ne sont pas affichés, mais devraient l être. On remarque la disparition de Michel Audiard, car aucun film ne lui correspond dans la base. Film num film titre annee num real nom prenom Réal 1139 Un frisson... 1971 104 Eastwood Clint 369 Top gun 1986 593 Scott Tony 230 Le Monstre 1994 4102 Benigni Roberto 4517 La vie est belle 1997 4102 Benigni Roberto 788 Jugé coupable 1999 104 Eastwood Clint 1422 Le tigre et la neige 2005 4102 Benigni Roberto 4100 Domino 2005 593 Scott Tony 3988 Gran Torino 2009 104 Eastwood Clint

Opérations spécifiques : Jointure (cont d) Jointure naturelle : mise en œuvre naturellement sur les duos (clé primaire clé étrangère). Exemple de jointure naturelle pas naturelle... Ville nom pays nb hab Bruxelles Belgique 162000 Londres Royaume Uni 7684700 Florence USA SC 31570 Florence Italie 366956 Aéro acronyme ville pays nom BRU Bruxelles Belgique Zaventem LHR Londres Royaume Uni Heathrow LGW Londres Royaume Uni Gatwick FLO Florence USA SC Florence Regional FLR Florence Italie Vespucci Ville Aéro acronyme ville pays nom nb hab Vide...

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Langage algébrique et expressions dérivées Langage algébrique Langage engendré par une grammaire algébrique (hors-contexte). Il peut être reconnu par un automate à pile. Algèbre relationnelle définit une grammaire algébrique : les opérations peuvent être combinées pour former des requêtes. Une requête se représente par un arbre d opérations. Traduction de cet arbre en SQL, donc vers un langage opérationnel. Expressions algébriques Le langage algébrique dérivé des opérateurs de base de l algèbre relationnelle constitue un langage complet ( lg du premier ordre) La notion de relation reste centrale (arguments, résultats). 1. Relations nommées, et stockées dans le SGBD, 2. Relations nommées mais non stockées, 3. Relations ni nommées, ni stockées (relations intermédiaires, qui accueillent des résultats intermédiaires).

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 1. Quels sont les films (titre et réalisateur) qui durent plus de deux heures? R1 = RESTRICT(Film, duree >= 120) RES = PROJECT(R1, titre, realisateur) Expression algébrique : une restriction suivie d une projection.

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 2. Quels sont les acteurs (nom et prénom) nés en 1952? R1 = RESTRICT(Acteur, YEAR(naiss) = TO DATE( 1952, YYYY )) RES = PROJECT(R1, nom, prenom) Expression algébrique : une restriction suivie d une projection, avec utilisation de deux fonctions SQL. En algèbre relationnelle, on pourrait se contenter de : R1 = RESTRICT(Acteur, naiss=1952)

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 3. Quels sont les acteurs (nom et prénom) ayant joué le rôle d Astérix? R1 = JOIN(Acteur, Casting) R2 = RESTRICT(R1, personnage= Astérix ) RES = PROJECT(R2, nom, prénom) Expression algébrique : une restriction suivie d une jointure, et finalement une projection. Généralement, on cherche à privilégier les restrictions avant les jointures, pour éviter un trop gros produit cartésien pour la jointure. R1 = RESTRICT(Casting, personnage= Astérix ) R2 = JOIN(Acteur, R1) RES = PROJECT(R2, nom, prénom)

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 3 (cont d). Ecritures condensée et arborescente Quels sont les acteurs (nom et prénom) ayant joué le rôle d Astérix? RES=PROJECT(RESTRICT(JOIN(Acteur,Casting),personnage= Astérix ),nom,prénom) RES=PROJECT(JOIN(Acteur,RESTRICT(Casting,personnage= Astérix )),nom,prénom)

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 4. Quels sont les acteurs (nom, prénom, et mois de naissance) nés la même année? R1 = JOIN(Acteur A1, Acteur A2, YEAR(A1.naiss) = YEAR(A2.naiss) R2 = RESTRICT( R1, A1.numacteur <> A2.numacteur ) RES = PROJECT(R2, A1.nom, A1.prenom, MONTH(A1.naiss), A2.nom, A2.prenom, MONTH(A2.naiss))

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 5. Quels sont les acteurs (nom, prénom) qui ont joué dans un film réalisé par Besson, et qui n ont jamais joué dans un film réalisé par Benigni? R1 = JOIN(Acteur, Casting) R2 = RESTRICT(Film, réalisateur = Besson ) R3 = RESTRICT(Film, réalisateur = Benigni ) R4 = JOIN(R1, R2) -- acteurs ayant joué avec Besson R5 = JOIN(R1, R3) -- acteurs ayant joué avec Benigni R6 = PROJECT(R4, numacteur, nom, prénom) -- Besson R7 = PROJECT(R5, numacteur, nom, prénom) -- Benigni R8 = MINUS( R6, R7 ) -- ceux de Besson sans ceux de Benigni RES = PROJECT(R8, nom, prenom)

Exemples d expressions algébriques Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Question 5. En oubliant numacteur avant la différence

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Opérations dérivées des opérations de base Il en existe des dizaines... Connaître les plus classiques : savoir utiliser, savoir définir Etre capable d en définir des originales Opérations dérivées souvent utiles A l aide de UNION, MINUS, Produit, Projection, Restriction, Jointure Division algébrique Intersection Jointures alternatives

La division par l exemple Opérateur qui permet de sélectionner les tuples d une relation (dividende, Certification) qui satisfont un critère de couverture énoncé via le contenu d une autre relation (diviseur, Avion). Le résultat est une troisième relation, appelée le quotient.

La division : plus formellement Définition Définie comme une opération de base par Codd (et dans la norme SQL92), mais absente de la plupart des SGBDR. Soit A et B, deux ensembles disjoints d attributs (A B = ). Soit R 1 (AB), et R 2 (B), deux relations : on remarque que tous les attributs de R 2 sont aussi des attributs de R 1. Soit le quotient R 3 = R 1 R 2 le quotient de la division de R 1 (dividende) par R 2 (diviseur). Le schéma de R 3 est constitué des attributs de A. Chaque tuple t 3 (A) de R 3 est tel que : t 2 (B) de R 2, t 1 (AB) = t 3 (A)t 2 (B), Autrement écrit, t 3 (A) = t 1(AB) t 2 (B) Notations R 3 = R 1 R 2 R 3 = DIVISION(R 1, R 2 ) Définition usuelle R 1 (AB) R 2 (B) = Π A (R 1 ) Π A (Π A (R 1 ) R 2 R 1 )

Opérations ensemblistes : Intersection Définition Soient R 1 et R 2 de même schéma, L intersection de R 1 et R 2 est la relation R 3 = R 1 R 2, R 3 a le même schéma que R 1 et R 2, Les tuples de R 3 sont ceux qui sont à la fois des tuples de R 1 et des tuples de R 2, Pas de doublons dans R 3, L intersection est une opération commutative : R 1 R 2 = R 2 R 1. Notations R 3 = R 1 R 2 R 3 = INTERSECT(R 1, R 2 ) R 3 = AND(R 1, R 2 )

Exemple d intersection

Autres jointures semi-jointure Définition Semi-jointure = jointure suivie d une projection Soient R 1 et R 2 de schémas quelconques Le résultat de la semi-jointure de R 1 et R 2 est une relation R 3 qui a le même schéma que R 1. La semi-jointure permet de ne garder que les attributs d une des deux relations. Par défaut : on ne garde que les attributs de la relation de gauche. Notations et propriété R 3 = SEMI-JOIN(R 1, R 2, θ) R 3 = R 1 R 2 θ Si R 1 (A), alors R 3 = R 1 R 2 = PROJECT(R 1 R 2, A). θ θ

Autres jointures semi-jointure (cont d)

Autres jointures jointure externe La jointure classique est appelée jointure interne (INNER JOIN) Comment faire pour que Michel Audiard reste dans le résultat d une jointure, même s il n a pas de film réalisé dans la base de données? Définition Ajouter, au résultat d une jointure interne, les tuples qui n ont pas trouvé de correspondant dans la jointure interne. Soit R 1 et R 2 de schémas quelconques, Le résultat de la jointure externe de R 1 et R 2 est une relation R 3 qui a le même schéma que R 1 θ R 2. Tous les tuples de R 1 sont dans R 3, et les tuples de R 1 (resp. R 2 ) qui θ n ont pas de correspondant dans R 2 (resp. R 1 ) via θ, sont ajoutés à l extension de R 3, avec la valeur NULL pour les attributs de R 2 (resp. R 1 ). Jointure externe gauche, droite, ou complète. Notations R 3 = EXT-JOIN(R 1, R 2 ) (jointure externe complète) R 3 = R 1 θ R 2 (gauche), R 3 = R 1 θ R 2 (droite), R 3 = R 1 θ R 2 (complète)

Exemple de jointure externe (complète ou droite) Film num film titre annee num real 1139 Un frisson dans la nuit 1971 104 369 Top gun 1986 593 230 Le Monstre 1994 4102 4517 La vie est belle 1997 4102 788 Jugé coupable 1999 104 1422 Le tigre et la neige 2005 4102 4100 Domino 2005 593 3988 Gran Torino 2009 104 Réal num real nom prénom naiss mort 104 Eastwood Clint 1930 NULL 593 Scott Tony 1944 2012 779 Audiard Michel 1920 1985 4102 Roberto Benigni 1952 NULL

Exemple de jointure externe (complète ou droite) Film num film titre annee num real nom prenom Réal 1139 Un frisson... 1971 104 Eastwood Clint 369 Top gun 1986 593 Scott Tony 230 Le Monstre 1994 4102 Benigni Roberto 4517 La vie est belle 1997 4102 Benigni Roberto 788 Jugé coupable 1999 104 Eastwood Clint 1422 Le tigre et la neige 2005 4102 Benigni Roberto 4100 Domino 2005 593 Scott Tony 3988 Gran Torino 2009 104 Eastwood Clint NULL NULL NULL 779 Audiard Michel Remarque R 1 R 2 = R 2 R 1

Autre exemple de jointure externe

Petit aparté : utilisation de fonctions sur attributs Attributs de types de base Utilisation de fonctions : pratique à tous les niveaux d une expression algébrique (projection, comparaison dans les conditions) Extension de l algèbre relationnelle par (Zaniolo, 1985) Expressions valuables d attributs Comparer des valeurs, créer de nouvelles valeurs Types concernés : Types arithmétiques Chaînes, caractères, textes Dates... Tout type de données fourni par le SGBD : opérations de ce type! Type couleur, atténuation d une couleur... Exemples Si une durée est représentée en minutes : la convertir en heures : duree / 60 Compter les 20 minutes de pubs en début de séance : duree + 20 Visualiser la durée réelle d une séance : PROJECT(Film, titre, duree+20)

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Agréger les tuples pour calculer des valeurs Agrégat = notion essentielle, pas toujours facile d accès Travaillons sur une colonne de relation Exemple : comment calculer la durée moyenne des films de la base de données : travail sur la colonne duree de la relation Film. Fonctions calculables sur une colonne entière a d une relation R : SUM(a) : somme des valeurs de a de tous les tuples de R AVG(a) : moyenne des valeurs de a de tous les tuples de R MAX(a) : valeur maximum parmi toutes les valeurs de a des tuples de R MIN(a) : valeur minimum parmi toutes les valeurs de a des tuples de R COUNT(a) : nombre de valeurs non NULL pour à a dans les tuples de R R 1 a b c 12 1 43.7 10 2 10.4 8 2 19.2 10 2 24.6 8 2 NULL 12 8 45.1 NULL 2 36.4 R 2 = AGREGAT(R 1 ; [a, b]; MIN(c)) R 2 a b c 12 1 43.7 10 2 10.4 8 2 19.2 12 8 45.1 NULL 2 36.4

Les fonctions agrégats : plus formellement Définition Soit R 1 une relation de schéma R 1 (a 1, a 2,, a n), avec 1 j k n, Soit un groupe d attributs de R 1 : A = [a j, a k ], avec 1 j k n. A est éventuellement vide, Soit une fonction d agrégat F compatible avec l attribut a f, 1 f n, f A : F renvoit un nombre (réel ou entier), R 2 = AGREGAT(R 1 ; A; F (a f )) est une relation de schéma R 2 (A, a f ) Chaque tuple de R 2 regroupe tous les tuples T de R 1 qui donnent les mêmes valeurs au groupe d attributs A, et stocke la valeur de F calculée sur l ensemble des valeurs de a f dans T. (Soient t i = A i, a f,i, t j = A j, a f,j tuples de T, on a A i = A j et a f,i, a f,j NULL) F est une fonction d agrégat, c est-à-dire qui s applique à un ensemble de valeurs (valeur min ou max ou moyenne de cet ensemble, nombre d éléments dans cet ensemble, etc.). La fonction d agrégat F peut s appliquer sur une transformation de a f

Les fonctions agrégats : exemple

Les fonctions agrégats : exemple

Les fonctions agrégats : exemple

Les fonctions agrégats : exemple

Les fonctions agrégats : exemples Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Durée moyenne des films du réalisateur Besson? R1 = RESTRICT( Film, realisateur= Besson ) RES = AGREGAT( R1 ; - ; AVG(duree) ) RES AVG(duree) 114.14 Pour chaque nom d acteur : nombre d acteurs portant ce nom RES = AGREGAT( Acteur ; nom ; COUNT(numacteur) ) RES nom COUNT(numacteur) Ford 12 Brando 5 Cassel 3 Douglas 6...... Poelvoorde 1

Les fonctions agrégats : exemples (cont d) Film(numfilm, titre, realisateur, annee, duree) Acteur(numacteur, nom, prenom, naiss, mort) Casting(numfilm, numacteur, personnage) Nombre de films joués, pour chaque acteur R1 = JOIN (Acteur, Casting) R2 = AGREGAT( R1 ; [numacteur, nom, prenom] ; nf = COUNT( numfilm ) ) RES = PROJECT ( R2, nom, prenom, nf ) RES nom prenom nf Ford Harrisson 59 Ford Harrisson 16 Cassel Vincent 22 Douglas Michael 49......... Poelvoorde Benoit 19

Plan Introduction Structures de données du modèle relationnel Opérateurs de base de l algèbre relationnelle Langage algébrique du modèle relationnel Autres opérations algébriques Les agrégats Des expressions algébriques aux requêtes SQL

Complétude relationnelle de SQL Clauses de base du LMD SELECT : projection FROM : tables (=relations) sur lesquelles porte la requête WHERE : conditions (restriction, jointure) Projection Toute requête SQL commence par un SELECT R = PROJECT(Film, titre, real) R = PROJECT(Film, titre, duree/60) Restriction SELECT titre, duree FROM Film WHERE duree > 120 ; SELECT titre, real FROM Film ; SELECT titre, duree/60 FROM Film ; SELECT titre, duree FROM Film WHERE real == Besson ;

La jointure en SQL R1 = RESTRICT (Casting, personnage= Asterix ) R2 = JOIN ( Acteur, R1, Acteur.numacteur = R1.numacteur ) RES = PROJECT (R2, nom, prenom ) Jointure par produit cartésien et clause de restriction SELECT nom, prenom FROM Acteur, Casting WHERE personnage = Asterix AND Acteur.numacteur = Casting.numacteur ; Jointure par la clause JOIN (1) Expliciter la condition de jointure (clause ON) SELECT nom, prenom FROM Acteur JOIN Casting ON (Acteur.numacteur=Casting.numacteur) WHERE personnage = Asterix ;

La jointure en SQL (cont d) R1 = RESTRICT (Casting, personnage= Asterix ) R2 = JOIN ( Acteur, R1, Acteur.numacteur = R1.numacteur ) RES = PROJECT (R2, nom, prenom ) Jointure par la clause JOIN (2) Egalité entre attributs (équijointure, clause USING) SELECT nom, prenom FROM Acteur JOIN Casting USING ( numacteur ) WHERE personnage = Asterix ; Jointure par la clause NATURAL JOIN Jointure naturelle SELECT nom, prenom FROM Acteur NATURAL JOIN Casting WHERE personnage = Asterix ;

La jointure en SQL (cont d) Jointures multiples Obtenir les acteurs (nom et prénom de chacun) ayant joué dans le film intitulé La vie est belle et, pour chacun, le personnage joué. Expression relationnelle R1 = RESTRICT( Film, titre= La vie est belle ) R2 = JOIN ( Film, Casting ) R3 = JOIN ( R2, Acteur ) RES = PROJECT ( R3, nom, prenom, personnage ) Avec la clause JOIN SELECT nom, prenom, personnage FROM Acteur JOIN Casting USING (numacteur) JOIN Film USING (numfilm) WHERE personnage = Asterix Portée des noms de tables... Possible aussi sans JOIN (conditions de jointure dans la clause WHERE)

Les fonctions agrégats sous SQL Quelles fonctions? MIN MAX AVG COUNT SUM Spécification des attributs pour le regroupement des tuples Clause GROUP BY Conditions supplémentaires sur le groupe de tuples : clause HAVING Limitation de SQL : soit la table T (a 1,, a n). Si la fonction d agrégat porte sur l attribut a 1, alors le regroupement dans le GROUP BY doit porter sur tous les attributs de T sauf a 1 apparaissant dans le SELECT (voire d autres).

Les fonctions agrégats sous SQL (cont d) Durée moyenne des films de Besson Expression algébrique RES = AGREGAT ( RESTRICT(Film, real= Besson ) ; - ; AVG(duree) ) Expression SQL SELECT AVG(duree) AS dmbesson FROM Film WHERE real = Besson ; Nombre de films joués pour chaque acteur Expression algébrique R1 = JOIN (Acteur, Casting) R2 = AGREGAT( R1 ; [numacteur, nom, prenom] ; nf = COUNT( numfilm ) ) RES = PROJECT ( R2, nom, prenom, nf ) Expression SQL SELECT nom, prenom, COUNT(numfilm) AS nbf FROM Acteur JOIN Casting ON ( numacteur ) GROUP BY numacteur, nom, prenom ;

Les fonctions agrégats sous SQL (cont d) Nombre de films joués par chaque acteur prolixe Un acteur prolixe est un acteur qui a tourné au moins 15 films SELECT nom, prenom, COUNT(numfilm) AS nbf FROM Acteur JOIN Casting ON ( numacteur ) GROUP BY numacteur, nom, prenom HAVING COUNT (numfilm) >= 15 ; Pour chaque personnage terminant en ie, première année de réalisation du film avec ce personnage Expression algébrique R1 = RESTRICT (Casting, personnage = *ie ) R2 = JOIN(R1, Film ) RES = AGREGAT (R2 ; personnage ; MIN(annee)) Expression SQL SELECT personnage, MIN(annee) FROM Film JOIN Casting ON ( numfilm ) WHERE personnage LIKE %ie GROUP BY personnage ;

Fonctions de types de données en SQL Possibilité évidente en SQL... Fonctions dépendantes du type de données Selon le SGBD, fonctions différentes (sauf tout ce qui est arithmétique) Dcf. documentation du SGBD! Exemples Sur les dates : SYSDATE (CURRENT DATE), TO DATE, YEAR, ADD MONTHS, etc. Sur les chaînes : CONCAT, LTRIM, SUBSTR, UPPER, LENGTH, etc. Sur les nombres : COS, ROUND, SIGN, etc. Sur des ensembles : GREATEST, LEAST Fonctions de conversions : ASCIISTR, TO CHAR, TO NUMBER, etc. SELECT nom, prenom, TO_CHAR(naiss,, MONTH ) AS mois FROM Acteur WHERE DATE_TRUNC ( year, naiss ) = TO_DATE( 1952, YYYY )