Modèle Relationnel (de Codd) et Professeur Serge Miranda Synthèse Modèle Relationnel (de Codd) et SQL2 Professeur Serge Miranda Directeur du Dess MBDS serge.miranda@unice.fr
Généralités SYNTEX au CERT-DERI (France) De 1970 à 1987 : un historique du relationnel et quelques produits 1970 Article de T. CODD présentant le modèle relationnel (revue ACM) SYNTEX au CERT-DERI (France) SYSTEM-R prototype IBM-San JOSE prouvant la faisabilité (d ’une partie) du modèle relationnelle 1972 1975 1976 1977 1979 1980 1981 INGRES prototype Univ. Calif BERKELEY ORACLE prototype en assembleur fils illégitime de System-R ORACLE V1 produit d ’ORACLE Corp. ORACLE V2 réécriture en C INGRES produit de RTI sur VAX Turing award pour Ted CODD SQL-DS DB2 1982 ORACLE V5 1984 INGRES-STAR 1985 Création « CODD and DATE Consulting Group » ORACLE ORACLE-STAR 1986 DB2 V1 CAMPUS (France) 1987 ORACLE V6 Codd and Date CAMPUS 1989-1990 DB2 V2 ORACLE V7 ….. Release 4 1994
Généralités Vue simple des données - tables Intérêt du modèle relationnel Vue simple des données - tables (pouvant être non naturelle) Langage de requête non procédural : SAT (dont l ’opération fondamentale est la JOINTURE)
Généralités (+ théorie formelle) STRUCTURES MODELE DE OPERATEURS MODELE DE DONNEES ? STRUCTURES MODELE DE DONNEES OPERATEURS REGLES D ’INTEGRITE (+ théorie formelle)
Modèle Relationnel de CODD (V1, 1970) Les 10 Concepts du modèle relationnel de CODD Structure s: C1 – RELATION / CLE PRIMAIRE (C3) C2 - DOmaine / Attribut C3 - Clé Primaire C4 - Clé Etrangère ou Domaine Primaire Intégrité du Modèle : C5 - Intégrité du Domaine (cf. C2) C6 - Intégrité d ’entité / relation (cf. C1 et C3) C7 - Intégrité de référence (cf. C4) Opérateurs : Equivalence avec l ’algèbre relationnelle C8 - Opérateurs ensemblistes Union Intersection Différence C9 - Opérateurs relationnels Sélection Projection Jointure Division C10 - Opérateurs sémantiques (« domain constrained »)
Modèle Relationnel de CODD Définition : ENSEMBLE ? G. Cantor : « Toute collection d ’objets bien DISTINCTS de notre perception ou de notre pensée » Paradoxes de B. Russel : Dans un village, le barbier rase toutes les personnes qui ne se rasent pas elles-mêmes ! Se rase t-il lui même ? Ensemble des membres d ’un conseil d ’administration qui n ’ayant pas d ’opinion à eux suivent l ’opinion du président ? Le président appartient-il à l ’ensemble ?
Modèle Relationnel de CODD : « RELATION » ? Définition ensembliste d ’une relation ? ENSEMBLE (de « N-uplets » « TUPLES ») : sous ensemble du produit cartésien de N ensembles Les avions sont des quadruplets de la forme (AVNO, AVNOM, CAP, LOC) « RELATION » : sous ensemble du PRODUIT CARTESIEN de N « DOMAINES » R D1 x D2 x ……… x DN Exemple 1 : AVION AVNO x AVNOM x CAP x LOC AVION = {(10, Airbus, 320, Nice), (11, B707, 300, Paris), ……………….}
Modèle Relationnel de CODD Exemple de tables de valeurs PL# PLNOM ADRESSE P i 1 JEAN PARIS l o 2 PIERRE NICE t e 3 PAUL PARIS AV# AVNOM CAP LOC A v 100 A300 300 NICE i 101 B707 250 PARIS o 102 A300 300 LYON n 103 B727 700 LYON HA VOL# PL# AV# VD VA HD V IT100 1 100 NICE PARIS 7 8 o IT101 2 100 PARIS NICE 11 12 l IT102 1 103 LYON PARIS 14 15 IT103 1 102 NICE LYON 17 18
Modèle Relationnel de CODD : RELATION ? Définition prédicative d ’une relation ? PREDICAT « L ’avion de numéro AV# est de type AVNOM, de capacité CAP et est localisé à LOC » RELATION prédicat écrit sous forme concise AVION (AV#, AVNOM, CAP, LOC) PROPOSITION « L ’avion de numéro 10 est de type AIRBUS, de capacité 320 places et est localisé à NICE » TUPLE : proposition VRAIE écrite sous forme concise AVION (10, AIRBUS, 320, NICE)
Modèle Relationnel de CODD : « ATTRIBUT vs DOMAINE » PROBLEME Le même domaine peut être utilisé plusieurs fois dans la définition d ’une même relation ! Exemple 2 : VOL VOLNO x VILLE x VILLE x HEURE x HEURE ATTRIBUT : ROLE joué par un domaine dans une relation DOMAINE VOL ( VOL# V-D V-A H-D H-A ) ATTRIBUTS
L ’ATTRIBUT REPRESENTE LE ROLE JOUE PAR UN DOMAINE DANS Modèle Relationnel de CODD Attribut Domaine : PINo : Pinom : Ville Pilote PL# PLNOM ADRESSE 1 JEAN PARIS 2 PIERRE NICE 3 PAUL PARIS : AvNo : AvNom : Capacité : Ville Avion AV# AVNOM CAP LOC 100 A300 300 NICE 101 B707 250 PARIS 102 A300 300 LYON 103 B727 700 LYON : VoINo : PINo : AvNo : Ville : Ville : Heure : Heure VOL# PL# AV# VD VA HD HA VOL IT100 1 100 NICE PARIS 7 8 IT101 2 100 PARIS NICE 11 12 IT102 1 103 LYON PARIS 14 15 IT103 1 102 NICE LYON 17 18 L ’ATTRIBUT REPRESENTE LE ROLE JOUE PAR UN DOMAINE DANS UNE RELATION
Modèle Relationnel de CODD Noms des PILOTES Noms des AVIONS
Modèle Relationnel de CODD X(12) TYPE SYNTAXIQUE (pas de « domaine »)
Modèle Relationnel de CODD PILNOM AVNOM X(12) DOMAINE (sémantique) - Définition (semantical data type ») - Manipulation (« domain constrained »)
Modèle Relationnel de CODD Exemple de « schéma relationnel » 1) DOMAINES NUMERO NUMERIC (6) Primaire AVNO NUMERIC (6) Primaire PILNO NUMERIC (6) Primaire NOMAV CHARACTER (20) NOMPIL CHARACTER (6) CAPACITE NUMERIC (3) VILLE CHARACTER (10) HEURE NUMERIC (4) 2) RELATIONS RELATION : AVION (AV#, AVNOM, CAP, LOC) AV# = Clé Primaire ATTRIBUT : AV# (Défini) sur AVNO AVNOM - sur NOMAV CAP - sur CAPACITE LOC - sur VILLE RELATION : PILOTE(PL#, PLNOM, ADRE) PL# = Clé Primaire ATTRIBUT : PL# (Défini) sur PILNO PLNOM - sur NOMPL ADR - sur VILLE RELATION : VOL(VOL#, PL#, AV#, VD, VA, HD, HA) VOL# = Clé Primaire ATTRIBUT : VOL# (Défini) sur NUMERO PL# - sur PILNO AV - sur AVNO VD - sur VILLE VA - sur VILLE HD - sur HEURE HA - sur HEURE CONTRAINTES (1) …
Modèle Relationnel de CODD LANGAGE ALGEBRIQUE LANGAGE « FERME » ARGUMENT (S) RELATION (S) OPERATEUR ALGEBRIQUE RESULTAT : RELATION REQUETE (Ensemble d ’opérateurs algébriques)
OPERATEURS DU LANGAGE ALGEBRIQUE Modèle Relationnel de CODD OPERATEURS DU LANGAGE ALGEBRIQUE Opérateurs du langage algébrique Ensemblistes UNION INTERSECTION DIFFERENCE (PRODUIT CARTESIEN) Extension (binaire) Restriction (unaire) PROJECTION (découpage vertical) SELECTION (découpage horizontal) JOIN () DIVISION ()
Modèle Relationnel de CODD LANGAGE ALGEBRIQUE JOINTURE R1(A = A) R2 R1 A B C R2 A D () JOIN R3 A B C A D
Modèle Relationnel de CODD LANGAGE ALGEBRIQUE DIVISION : R1 / R2 Dividende Diviseur R1 A B R2 B DIVISION B () Division ? « Complémentaire du diviseur dans le dividende tel que le produit cartésien avec le diviseur soit inclus dans le dividende » R3 A
Modèle Relationnel de CODD LANGAGE ALGEBRIQUE DIVISION Requêtes faisant intervenir un quantificateur universel, dans une expression de la forme « TOUS LES ». Exemple : « Quels sont les numéros des pilotes qui conduisent TOUS LES avions de type A300 qui sont en service ? » AV# AVNOM CAP LOC A v 100 A300 300 NICE i 101 B707 250 PARIS o 102 A300 300 LYON n 103 B727 700 LYON VOL# PL# AV# VD VA HD HA V IT100 1 100 NICE PARIS 7 8 o IT101 2 100 PARIS NICE 11 12 l IT102 1 103 LYON PARIS 14 15 IT103 1 102 NICE LYON 17 18 RESULTAT : PL# R 1
Modèle Relationnel de CODD LANGAGE ALGEBRIQUE DIVISION DIVIDENDE BINAIRE R1 = ( A , B ) Résultat Idem diviseur (même domaine) VOL1 = PROJECT VOL ( PL# , AV# ) DIVISEUR UNAIRE ( « tous les » ) « tous les avions de type A300 » A1 = SELECT AVION (AVNOM = " A300 ") A2 = PROJECT A1 (Av#) • RESULTAT = VOL1 (PL# , AV#) A2 (AV#) •