Le modèle relationnel Plan 1. Concepts descriptifs 2. L'algèbre relationnelle 3. Concepts additionnels
Le modèle relationnel Inventé par T. CODD (IBM SAN-JOSE). Publication : ACM 1970. Concepts de base du modèle Description des données à partir du LDD (Langage de Description des Données) Manipulation des données à partir du LMD (Langage de Manipulation des Données) Des concepts additionnels ont été progressivement définis. 1
1. Concepts descriptifs Ensemble de concepts de formalisation de la description d'article de fichiers plats. Le modèle est normalisé et extensible. Introduction de types variés de données (SQL2). Introduction de la gestion dynamique du temps (temps dynamique) et des concepts de programmation orientée objets (SQL3). 2
Domaine Ensemble de valeurs caractérisées par un nom. Exemples ENTIER REEL CHAINES DE CARACTERES FRANC SALAIRE = {4 000..100 000} COULEUR= {BLEU, BLANC, ROUGE} POINT = {(X:REEL,Y:REEL)} TRIANGLE = {(P1:POINT,P2:POINT,P3:POINT)} 3
Produit cartésien Le produit cartésien D1 D2... Dn est l'ensemble des tuples (N-uplets) <V1,V2,...,Vn> tels que Vi Di Exemple D1 = {Bleu, Blanc, Rouge}, D2 = {Vrai, Faux} Bleu Vrai Bleu Faux Blanc Vrai Blanc Faux Rouge Vrai Rouge Faux D1 D2 représenté par 4
Relation Une relation est un sous ensemble du produit cartésien d'une liste de domaines, caractérisée par un nom. Exemple D1 = COULEUR D2 = BOOLEEN CoulVins Coul Choix Bleu Faux Blanc Vrai Rouge Vrai D1 D2 représenté par 5
Attribut Le modèle relationnel est perçu au travers d'une vision tabulaire. Une relation est une table bidimensionnelle. Une ligne est un tuple. Attribut Un identificateur est associé à chaque colonne pour la repérer, indépendamment de son numéro d'ordre. Les valeurs autorisée d'un attribut sont définies dans un domaine. 6
Graphe d'une relation DOM(A1) a b c 1 2 3 4 DOM(A2) a b c DOM(A1) 1 2 • DOM(A2) Le graphe peut représenter une Relation binaire R(A1,A2) ou ici n-aire. 7
Exemple de relation Attribut1 Attribut 3 Nom Tupple VINS CRU MILL REGION COULEUR CHENAS 1983 BEAUJOLAIS ROUGE TOKAY 1980 ALSACE BLANC TAVEL 1986 RHONE ROSE CHABLIS 1986 BOURGOGNE BLANC ST-EMILION 1987 BORDELAIS ROUGE Tupple 8
Clés Une clé est un ensemble minimal d'attributs dont la connaissance des valeurs détermine un tuple unique dans une relation. Formellement, une clé d'une relation R est un ensemble d'attributs K tel que les tuples t1, t2 d'une instance de R, t1(K) t2(K) Toute relation possède au moins une clé car la connaissance de tous ses attributs permet d'identifier un tuple unique. Quand plusieurs clés existent, on en choisi arbitrairement une appelée clé primaire. Exemple Le couple d'attributs {CRU, MILLESIME} dans la table VINS détermine la clé primaire NV. NSS : numéro de sécurité sociale d'une personne. 9
Contraintes Contraintes d'intégrité Contrainte référentielle Ensemble de valeurs admissibles d'un tuple. Contrainte référentielle Contrainte d'intégrité d'une relation R1 dont un groupe d'attributs apparaît comme une clé d'une relation R2. Valeur nulle Valeur conventionnelle introduite dans une relation pour représenter une information inconnue ou inacceptable. Contrainte d'entité Toute relation doit posséder au moins une clé primaire dont tout attribut est non nul. Contrainte de domaine Contrainte d'intégrité imposant qu’une colonne d'une domaine comporte des valeurs vérifiant une assertion logique.
Schéma de relation (1/2) Nom de la relation, liste de ses attributs et de la définition de leurs domaines, liste de ses clés. C'est un invariant de la relation (i.e. ne change pas) au cours du temps. Exemple VINS (NV: Int, CRU:texte, MILL:entier, DEGRE: Réel, REGION:texte) Par convention, la clé primaire est soulignée. 10
Schéma d'une relation (2/2) Intention et extension Un schéma de relation définit l'intention de la relation, à savoir les propriétés (au moins certaines) communes et invariantes des tuples. Une instance de table représente une extension de la relation, à savoir une vue des tuples qu'elle contient à un instant donné. Schéma d'une base de données relationnelle C'est l'ensemble des schémas des relations composantes.
Clé étrangère et contraintes d'intégrité référentielle Une clé étrangère est un groupe d'attributs d'une relation devant apparaître comme clé d'une autre relation. Les clés étrangères définissent les contraintes d'intégrité référentielles. Lors d'une insertion, la valeur des attributs doit exister dans la relation référencée. Lors d'une suppression dans la relation référencée, les tuples référençant doivent disparaître. Ils correspondent aux liens entité-association obligatoires. 11
Exemples de schémas Exemples : les relations BUVEURS (NB, NOM, PRENOM, TYPE) VINS (NV, CRU, MILLESIME, DEGRE) ABUS (NB, NV, DATE, QUANTITE) constituent la base dégustation. Clés étrangères obtenues ABUS.NV REFERENCE VINS.NV ABUS.NB REFERENCE BUVEURS.NB 12
Diagramme des liens associés BUVEURS NB NOM PRENOM TYPE VINS NV CRU MILL. DEGRE ABUS NB NV DATE QUANTITE 13
Récapitulation des concepts descriptifs RELATION ou TABLE ATTRIBUT ou COLONNE TUPLE ou LIGNE DOMAINE ou TYPE CLE, CLE PRIMAIRE CLE ETRANGERE 14
Synthèse : création de Table (SQL) CREATE TABLE <relation name> (<attribute definition>+) [{PRIMARY KEY | UNIQUE} (<attribute name>+)] avec : <attribute definition> ::= <attribute name> <data type> [NOT NULL [{UNIQUE | PRIMARY KEY}] ] Exemple : CREATE TABLE VINS ( NV INTEGER PRIMARY KEY, CRU CHAR VARYING, MILL INTEGER NOT NULL, DEGRE FIXED 5.2 ) 15
2. L'algèbre relationnelle L'algèbre relationnelle est un ensemble d'opérations qui permettent d'exprimer toutes les requêtes possibles sous la forme d'expressions algébriques. Une requête est une paraphrase en anglais d'expressions relationnelles. Ces dernières sont à la base du langage SQL. Ces opérations peuvent être généralisées au modèle objet ce qui conduit à une algèbre relationnelle orientée objet. 16
Opérations ensemblistes Opérations ensemblistes pour des relations de même schéma UNION notée opération portant sur deux relations R1 et R2 de même schéma consistant à construire une nouvelle relation R3 de même schéma ayant pour tuples ceux qui appartiennent à R1, ou à R2, ou aux deux. INTERSECTION notée opération portant sur deux relations R1 et R2 de même schéma consistant à construire une nouvelle relation R3 de même schéma ayant pour tuples ceux qui appartiennent à R1 et à R2. DIFFERENCE notée — opération portant sur deux relations R1 et R2 de même schéma consistant à construire une nouvelle relation R3 de même schéma ayant pour tuples ceux qui appartiennent à R1, sans appartenir à R2. Opérations binaires Relation Relation Relation Extension Union externe pour des relations de différents schémas ramenées au même schéma avec des valeurs nulles. 17
Projection Cru,Région (VINS) Cru Région Suppression d'attributs non désirés d'une relation puis des éventuels tuples redondants. : Relation Relation notée A1,A2,…Ap ou encore (R) VINS Cru Mill Région Qualité VOLNAY 1983 BOURGOGNE A VOLNAY 1979 BOURGOGNE B CHENAS 1983 BEAUJOLAIS A JULIENAS 1986 BEAUJOLAIS C Cru,Région (VINS) Cru Région VOLNAY BOURGOGNE CHENAS BEAUJOLAIS JULIENAS BEAUJOLAIS 18
Restriction Opération sur une relation R1 produisant une relation R2 de même schéma, comportant les seuls tuples vérifiant un critère Q précisé en argument. :Relation Relation, notée Q(R) Q est le critère de qualification de la forme : Ai Valeur, avec un des opérateurs =, <,>,,, On peut définir des unions (ou) et des intersections (et) de critères simples. 19
Exemple de restriction VINS Cru Mill Région Qualité VOLNAY 1983 BOURGOGNE A VOLNAY 1979 BOURGOGNE B CHENAS 1983 BEAUJOLAIS A JULIENAS 1986 BEAUJOLAIS C MILL>1983 VINS Cru Mill Région Qualité JULIENAS 1986 BEAUJOLAIS C Autres restrictions : CRU="VOLNAY" CRU="CHENAS" 20
Jointure Opération de rapprochement selon une condition des tuples de deux relations R1 et R2 pour en former une troisième R3 contenant l'ensemble de tous les tuples obtenus par concaténation d'un tuple de R1 et d'un tuple de R2 vérifiant la condition de rapprochement. C'est une opération de la forme <Attribut1><opérateur> <Attribut 2> On distingue l'équi-jointure (opérateur = ) l'inéqui-jointure (un des autres opérateurs relationnels). Remarque Dans le cas de l'équi-jointure, deux attributs égaux apparaissent dans le résultat. La redondance peut être éliminée par la jointure naturelle.
Jointure naturelle Opération (notée ) de rapprochement de tuples de deux relations R1 et R2 pour en former une troisième dont les attributs sont la réunion des attributs des relations R1 et R2 et dont les tuples sont obtenus par composition de tuples de R1 et R2 ayant même valeur pour les attributs de même nom. : Relation Relation Relation Critères de jointure jointure naturelle : attributs de même nom identiques Attribut = Attribut théta-jointure ; comparaison d'attributs Attribut1 Attribut2 . 21
Exemple de Jointure VINS Cru Mill Qualité VOLNAY 1983 A VOLNAY 1979 B CHABLIS 1983 A JULIENAS 1986 C LOCALISATION Cru Région QualMoy VOLNAY Bourgogne A CHABLIS Bourgogne A CHABLIS Californie B VINSREG Cru Mill Qualité Région QualMoy VOLNAY 1983 A Bourgogne A VOLNAY 1979 B Bourgogne A CHABLIS 1983 A Bourgogne A CHABLIS 1983 A Californie B 22
Principe de complétude L'algèbre relationnelle est complète. Les cinq (sept) opérations de base permettent de formaliser sous forme d'expressions toutes les questions que l'on peut poser dans la logique du premier ordre (sans fonction). Exemple Recherche, à partir des opération de projection, restriction, jointure des nom et prénom des buveurs de Volnay 88. PROJECT (NOM,PRENOM, RESTRICT(CRU="VOLNAY" et MILL =1988, JOIN(VINS,ABUS,BUVEURS))) 23
SQL Une requête SQL est une paraphrase d'une expression de l'algèbre relationnelle en anglais. Format simplifié d'une requête : SELECT A1, A2, …Ap // attributs FROM R1, R2, …Rk // relations WHERE Q [{UNION |INTERSECT | EXCEPT } … ] Sémantique du bloc SELECT PROJECT A1,A2,…Ap ( RESTRICT Q ( PRODUIT ( R1, R2, …, Rk) ) ) 24
3. Concepts additionnels Ensemble de concepts pour : Etendre les fonctionnalités de manipulation. Décrire les règles d'évolution des données. Supporter des objets complexes (SQL3). Ils ont été introduits progressivement dans le modèle. Le modèle devient plus complexe. Ils ne sont pas toujours standards (SQL3). Des extensions existent à l'infini … 25
Fonction et agrégat Fonction de calcul Agrégat Fonction de calcul en ligne appliquée sur un ou plusieurs attributs Exemple : DEGRE QUANTITE / 100 Agrégat Partitionnement horizontal d'une relation selon les valeurs d'un groupe d'attributs, suivi d'un regroupement par une fonction de calcul en colonne (SUM, MIN, MAX, AVG, COUNT, …) 26
Exemples d'agrégats SELECT CRU, SUM (QUANTITE) VINS CRU MILL QUANTITE CHABLIS VOLNAY MEDOC 1977 1987 1986 1985 10.9 11.9 10.8 11.2 100 250 400 300 200 DEGRE SELECT MOY(DEGRE) FROM VINS; SELECT CRU, SUM (QUANTITE) FROM VINS GROUP BY CRU; AVG DEGRE 11.2 SUM CRU QUANTITE CHABLIS 350 VOLNAY 700 MEDOC 200 27
Vue Relation d'un schéma externe déduite des relations de la base par une question. Calcul de la vue Une vue est une fenêtre dynamique sur la BD, recalculée dynamiquement lors de chaque accès. Une vue peut être matérialisée (vue concrète). Exemple : définition de la vue GrosBuveurs CREATE VIEW GrosBuveurs AS SELECT NB, Nom, Prénom, FROM Buveurs, Abus WHERE Buveurs.NB = Abus.NB AND Abus.Quantité > 100 28
Procédure stockée Procédure écrite en L3G/SQL ou L4G/SQL, définie au niveau du schéma de la base et stockée avec cette dernière. Avantages Répartition des traitements entre client et serveur. Limitation du trafic sur le réseau, partage de procédures. Exemple Réservations Réservations Transactionnelles Batch Etablir la réservation 29
Déclencheur (Trigger) Action dans la base de données déclenchée suite à l'apparition d'un événement particulier. Forme : {BEFORE | AFTER} <événement> THEN <action> Un événement peut être : une opération sur une table (début ou fin), un événement externe (heure, appel, etc.). Une action peut être : une requête de mise à jour de la base BD (update), une interruption de la transaction (abort), un appel d'une procédure cataloguée. 30
Déclencheur avec condition (règle) Il est possible d'ajouter une condition pour déclencher l'action uniquement quand la condition est vérifiée. Une condition est une qualification portant sur la base. Exemples : BEFORE DELETE FROM Vins THEN DELETE FROM Abus WHERE Vins.Nv = Abus.Nv BEFORE UPDATE FROM EMPLOYE IF SALAIRE > 100.000 THEN ABORT TRANSACTION 31
4. CONCLUSION L'ensemble des concepts présentés est aujourd'hui bien compris et bien formalisé. Le modèle relationnel est unique, de plus en plus riche et normalisé. Il intègre les Bases de Données actives et objets. Sa syntaxe évolue vers celle d'un L4G standardisé. Son formalisme est généralisé permettant la définition de l'algèbre d'objets. Le langage associé est défini sur plusieurs niveaux. SQL1, SQL2, SQL3 32
Exemples d'utilisation des opérateurs Considérons la base dégustation suivantes : BUVEURS (NB, NOM, PRENOM, TYPE) VINS (NV, CRU, MILLESIME, DEGRE) ABUS (NB, NV, DATE, QUANTITE) Q1 : afficher les degrés des vins de cru Morgon, et de millésime 1978. R1 = RESTRICT (VINS, CRU = "MORGON") R2 = RESTRICT (VINS, MILLESIME = 1978) R3 = INTERSECT (R1, R2) RESULTAT = PROJECT (R3, DEGRE)
Exemples (suite) Rechercher les noms et prénoms des buveurs de Morgon ou de Chenas. R1 = RESTRICT (VINS, CRU = "MORGON") R2 = RESTRICT (VINS, CRU = "CHENAS") R3 = UNION(R1,R2) R4 = JOIN(R3, ABUS) R5 = JOIN(R4, BUVEURS) RESULTAT = PROJECT(R5, NOM, PRENOM)