base de données : le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/bd/bd_cours_2...de...

55
1 Base de Données : Le modèle relationnel

Upload: others

Post on 23-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

1

Base de Données :Le modèle relationnel

Page 2: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

2

Plan du cours de Base de Données

● Vaste introduction● Le modèle relationnel● Le langage SQL● Conception de BD

Page 3: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

3

Historique

● Travaux de Edgar F. Codd 1970● modèle relationnel vs modèle DIAM (entités +

pointeurs)● Codd (IBM) : langage SEQUEL (Structured

English Query Language)● Oracle : langage SQL (Structured Query

Language)

Introduction

Page 4: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

4

Premiers objectifs

● idée initiale : utiliser un modèle ensembliste pour décrire et manipuler un ensemble d'enregistrements.

● Objectifs :

– indépendance entre programmes d'application et représentation interne

– Base théorique solide pour la cohérence et la non-redondance des données.

● Notion de table : représentation 2D d'un ensemble de données pouvant être décrite/manipulée/interrogée par des opérations ensemblistes classiques.

Introduction

Page 5: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

5

Les 12 règles de Codd1 L'information est représentée de façon logique sous forme de

tables.

2 Les données doivent être accessibles de façon logique par les tables, les clés primaires et les colonnes.

3 Les valeurs nulles doivent être traitées uniformément comme des "informations absentes", et non pas comme des chaînes vides, ni des blancs, ni des zéros.

4 Les méta-données doivent être stockées dans la base au même titre que les données normales.

5 Un langage unique doit permettre de définir 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 des données.

Introduction

Page 6: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

6

Les 12 règles de Codd

6 Les vues doivent refléter les mises à jour de leurs tables de base, et vice-versa.

7 Chaque action suivante doit pouvoir être réalisée par une et une seule action : retrouver, insérer, mettre à jour et supprimer une donnée.

8 Il doit y avoir séparation logique entre les opérations (interactives ou non), et le stockage physique des données et leurs méthodes d'accès.

9 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.

Introduction

Page 7: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

7

Les 12 règles de Codd

10 Les contraintes d'intégrité doivent être disponibles, et stockées dans les meta-données et non pas dans un quelconque programme d'application.

11 Le langage de manipulation des données (LMD) ne doit pas se soucier d'où ni de comment les données sont stockées et/ou distribuées.

12 Le traitement d'une ligne doit respecter les mêmes règles et contraintes d'intégrité que les opérations portant sur des ensembles.

Introduction

Page 8: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

8

SGBDR

● SGBD Relationnel : respecte au moins les 12 règles de Codd.

● Principales raisons du succès :– Simplicité d'utilisation

– bases théoriques solides

– normalisations de SQL (1986, 1992, 1999, 2003, 2008, 2011)

Introduction

Page 9: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

9

Plan de ce chapitre

● Introduction● Structures de données

– Domaine, relation, attribut et Cie

– Gestion de l'intégrité des structures

● Opérations de base en algèbre relationnel● Autres opérations● Fonctions● Agrégats● Langage algébrique

Introduction

Page 10: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

10

Avant de commencer...

● Dans ce chapitre : modèle relationnel (=principes théoriques supportant le développement des SGBDR)

● La maîtrise de ce domaine, avant même SQL, facilite l'adaptation à TOUS les SGBD et la réalisation de bonne conception de BD

→ minimum pour un concepteur/administrateur.● Attention : ne pas confondre SQL et modèle

relationnel.

Introduction

Page 11: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

11

Structures de données

● Vocabulaire simple● Plusieurs termes pour même concept car :

– théorie/implémentation

– informatique/mathématique

● Ex.: tuple = ligne = enregistrement

● Théorie relationnelle fondée sur théorie des ensembles.

● 3 briques principales : domaine, attribut, relation

Structures de données

Page 12: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

12

Domaine

● Def. : un domaine est un ensemble de valeurs caractérisé par un nom.

● = un ensemble nommé dans lequel les données peuvent prendre leurs valeurs

● domaine ≠ type de données : pas (forcément) d'opérations applicables aux valeurs (mais parfois confondu).

Structures de données

Page 13: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

13

Domaine (suite)

● Domaine défini en intention : via les propriétés respectées par ses valeurs (éléments).

Ex.: N_plus = entiers positifs

● Domaine défini en extension : via l'ensemble de toutes les valeurs qui le composent.

Ex.: devise = {dollar, euro, livre_sterling, yen}

Structures de données

Page 14: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

14

Relations

● Structure véritablement centrale / fondamentale du modèle relationnel.

● Rappel : le produit cartésien d'un ensemble de domaines d1, d2, ..., dn est l'ensemble des vecteurs <v1, v2, ..., vn > où i, v∀ i d∈ i.

Exemple : Pays = {France, Italie, Japon} et Devise = {euro, yen}

Pays x Devise = {(France, euro), (France, yen), (Italie, euro), (Italie, yen), (Japon, euro), (Japon, yen)}

Structures de données

Page 15: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

15

Relation (suite)

● Def.: Une relation est un sous-ensemble du produit cartésien d'une liste finie de domaines, caractérisé par un nom.

● Une relation est donc un ensemble de vecteurs.● Ex.: DeviseCourante = {(France, euro), (Italie,

euro), (Japon, yen)}.● La définition d'une relation vise à définir l'espace

de définition des vecteurs (pas forcément en dimension 2).

Structures de données

Page 16: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

16

Relation (fin)

● Pour visualiser facilement le contenu d'une relation : les tables.

● Chaque ligne correspond à un vecteur (donc à une donnée, précisant la valeur dans chaque dimension) et chaque colonne à un domaine.

Ex.: DeviseCourante Devise Pays euro France euro Italie yen Japon● En SQL on dit table à la place de relation.

Structures de données

Page 17: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

17

Attribut● Def.: Un attribut est une colonne de relation

caractériser par un nom unique dans cette relation.● Attention : la colonne n'est pas le domaine (c'est

un sous-ensemble). Ex.: { Dollar, euro }.● But : permettre à un même domaine d'être

impliqué plusieurs fois dans la même relation (sans utiliser d'index). Exemple :

Ville_départ x Ville_arrivée x distance ≠ Ville x Ville x Kilometre

● Valeurs de domaine potentiellement infini, colonne (à instant t) finie.

Structures de données

Page 18: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

18

tuple et représentation des relations

● Une ligne d'une relation est un n-uplet de valeurs, chacune étant accédée via le nom de l'attribut qu'elle value. On les appelle des tuples (lignes en SQL).

● Une relation de n domaines correspond à un sous espace de l'espace à n dimensions du produit cartésien. Elle peut donc être représentée par un diagramme à n dimensions dont chaque axe correspond à un domaine. Un tuple est un point dans cet espace.

Structures de données

Page 19: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

19

Schéma de relation

● Temporalité des relations mais définition (relativement) figée en terme de domaines et d'attributs → structure fixe vs contenu évolutif.

● Intention d'une relation (description par les attributs) vs extension (ensemble des tuples).

● Schéma de relation : description de l'intention d'une relation, i.e. de l'espace dans lequel évoluera l'extension, ainsi que les éventuelles contraintes.

Structures de données

Page 20: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

20

Gestion de l'intégrité des structures

● un ensemble de règles d'intégrité structurelle permet de faciliter la gestion de la cohérence des données.

● Ces règles sont énoncées par des assertions sur les relations et les attributs.

● Notion principale : clef.● Mais aussi : contrôle des données manquantes et des

valeurs d'attribut.● De façon générale : extrêmement important de

déclarer toutes les contraintes. Permet ensuite de se reposer sur le SGBDR pour la cohérence.

Structures de données

Page 21: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

21

Clé

● Relation = ensemble. Donc pas de doublons de tuples!

● A chaque tuple est associé une clé unique, définie au niveau de la relation.

● Une clé est un ensemble minimal d'attributs dont la connaissance des valeurs permet d'identifier un tuple de façon unique au sein de la relation considérée.

● Une clé n'est pas forcément un unique attribut.

Structures de données

Page 22: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

22

Clé primaire

● Si R est une relation décrite par un ensemble d'attributs A, un sous-ensemble K est une clé de R si : pour tout couple de tuples (t, t') de R, t(K)≠t'(K) où t(K) est la liste des valeurs données par t aux attributs composant K.

● On choisi une clef parmi les possibles pour identifier chaque tuple : c'est la clef primaire. Ce choix est guidé par la sémantique de la relation.

● Par convention, on représente la clef primaire en la soulignant dans l'énoncé de la relation.

Structures de données

Page 23: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

23

Clé primaire : exemples

● Acteur(nom, prénom, numéro).

On aurait pu choisir (nom, prénom) mais la simplicité pousse à prendre numéro.

● Casting(film, acteur, personnage).

Le même personnage peut être joué dans plusieurs films.

Par contre, un acteur peut jouer qu'un seul personnage dans 1 film donné.

● minimalité de la clé.

Structures de données

Page 24: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

24

Contraintes d'unicité

● La définition d'une clef primaire contient une contrainte d'unicité.

● On peut aussi spécifier que la valeur d'un (groupe d') attribut doit être unique, c'est-à-dire que deux tuples ne peuvent avoir la même valeur pour cet attribut.

● Exemple : Film(numFilm, titre, réalisateur, année).

numFilm est la clef primaire mais on peut (doit!) spécifier que le couple (titre, réalisateur) est unique.

Structures de données

Page 25: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

25

Contrainte de référence

● identifier/référencer un tuple : utiliser sa valeur de clé primaire.

Exemple : ('Ryan', 'Gosling', 5), tuple de la relation Acteur(Nom, Prénom, numéro), est référencé par le numéro 5 : Acteur[numéro=5] le désigne exactement.

● La valeur des attributs référentiels dans le tuple référent est la valeur de la clé primaire dans le tuple référencé.

Structures de données

Page 26: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

26

Contrainte de référence : exemple

● Pays(nom, devise, capitale, superficie)● Devise(numéro, nbpieces, nbbillets, denomination)● Pays référence la monnaie via la clé primaire de la

relation Devise : les valeurs de l'attribut devise de la relation Pays sont les valeurs de l'attribut numéro de la relation Devise.

● Ex.: Devise(4, 8, 8, 'euro'),

Pays('France', 4, 'Paris', 544 435)

Pays('Grèce', 4, 'Athène', 131 957)

Structures de données

Page 27: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

27

Clé étrangère

● Une contrainte référentielle exprime un lien obligatoire entre deux relations.

● Une clé étrangère est un groupe d'attributs (ex: devise) dans une relation R (ex: Pays) qui doit correspondre à la clé primaire (ex: numéro) d'une autre relation R' (ex: Devise).

● Une relation possède une seule clé primaire, peut spécifier plusieurs clefs étrangères.

● Convention d'écriture : italique.

Structures de données

Page 28: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

28

Clé étrangère

● Un attribut peut être à la fois une clé primaire et étrangère :

Film(numFilm, titre, année),

Acteur(numActeur, nom, prénom),

Casting(numFilm, numActeur, personnage).● Un acteur peut jouer dans plusieurs films et un

film peut contenir plusieurs acteurs : lien n-n.

Structures de données

Page 29: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

29

Exercice● Une relation peut s'auto-référencer via une clef étrangère. Ex.:

Personne(numéro, nom, prénom, père, mère) : père et mère sont des clés étrangères de la relation Personne référençant la clé primaire de la relation Personne.

Retrouver l'arbre généalogique :

– (12,'Martin','Pierre', NULL, NULL),

– (56, 'Castard', 'Joséphine', NULL, NULL),

– (77, 'Frandier', 'Ernest', NULL, NULL),

– (74, 'Bisteur', 'Annie', NULL, NULL),

– (89, 'Martin', 'Eric', 12, 74),

– (91, 'Frandier', 'Alain', 77, 56),

– (94, 'Bisteur', 'Virginie', NULL, 74),

– (103, 'Frandier', 'Mélanie', 91, 94).

Structures de données

Page 30: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

30

Contraintes référentielles et SGBDR

● Importance des contraintes référentielles pour le maintiens de la cohérence lors des actions en écriture :– Insertion d'un tuple dans une relation avec clé étrangère : le

SGBD doit vérifier que la valeur donnée par ce tuple à la clé étrangère correspond bien à une valeur de clé primaire. Même vérification en cas de modification d'une valeur de clé étrangère dans un tuple existant

– Suppression d'un tuple référencé via une clé étrangère par un ensemble d'autres tuples : plusieurs options : supprimer "en cascade" tous les tuples référençant, ou donner la valeur NULL à l'attribut de clé étrangère ("set null") ou refuser la suppression ("restrict"). Par défaut, le SGBD ne fait rien ("no action").

Structures de données

Page 31: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

31

Contrainte de valeurs d'attribut

● On ne connaît pas forcément les valeurs de tous les attributs lors de l'insertion d'un tuple ;

Parfois : attribut pas applicable à un tuple particulier (à éviter).

● Convention : valeur NULL● Contrainte de non-vide : clé primaire; autres attributs ● Restriction sur les valeurs d'un attribut : contrainte de

domaine.– extension : saison IN {'hiver', 'printemps', 'été', 'automne'}

– restriction : durée NOT NULL AND durée > 0 (CHECK)

Structures de données

Page 32: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

32

Opérations de base en Algèbre Relationnel

● L'algèbre relationnel est un ensemble d'opérateurs qui agissent sur des relations pour créer d'autres relations.

● Tout est relation : même si la relation résultante d'une opération n'a qu'une colonne et qu'une ligne, c'est encore un relation.

● Maîtrise de l'algèbre relationnel : essentiel pour compréhension SQL et SGBDR.

● 6 opérations de bases associées à une représentation graphique.

Algèbre relationnel

Page 33: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

33

Opérations ensemblistes ● 3 opérations directement adaptées de la théorie des

ensembles : union, différence, produit cartésien.● Ne prennent pas en compte les contraintes de clés.● Le résultat est une relation (pas de doublon, ...)

Algèbre relationnel

Page 34: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

34

Union de relations

● Def.: L'union des relations R1 et R2 de mêmes schémas,

est la relation R3, toujours de même schéma, telle que

l'ensemble des tuples de R3 est l'union (sans doublons) de

l'ensemble des tuples de R1 et de l'ensemble des tuples de

R2.

● L'union est une opération commutative.

● Notations : R1 ∪ R2, UNION(R1, R2)

● Note : les relations opérandes d'opérations d'algèbre relationnel ne sont pas forcément stockés en tant que telle dans la base.

Algèbre relationnel

Page 35: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

35

Union : exempleAlgèbre relationnel

Page 36: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

36

Différence de relations

● Def.: La différence entre les relations R1 et R2 de

mêmes schémas, est la relation R3, toujours de

même schéma, telle que l'ensemble des tuples de R3 est l'ensemble des tuples de R1 auquel on a

enlevé l'ensemble des tuples de R2.

● La différence n'est pas commutative.

● Notations : R1 – R2, EXCEPT(R1 , R2)

Algèbre relationnel

Page 37: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

37

Différence : exempleAlgèbre relationnel

Page 38: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

38

Produit cartésien de relations

● Def.: Le produit cartésien entre les relations R1 et R2 de

schémas quelconques, consiste à construire une relation R3 qui a

pour schéma la concaténation de ceux de R1 et R2, et donc pour

extension l'ensemble de toutes les combinaisons possibles entre les tuples de R1 et ceux de R2.

● Le produit cartésien de deux relations est une opération commutative (si pas d'ordre sur les colonnes).

● Opération très courante : à la base des requètes de confrontations.

● Notations : R1 X R2, TIMES(R1 , R2), PRODUCT(R1 , R2)

Algèbre relationnel

Page 39: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

39

Produit cartésien : exemple

Préfixage pour 2 colonnes partageants le même nom.

Algèbre relationnel

Page 40: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

40

Opérations propre à l'algèbre relationnel

● 3 opérations spécifiques, essentielles à la mise en œuvre du modèle dans le cadre opératoire.

● Projection, Restriction, Jointure

Algèbre relationnel

Page 41: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

41

Projection

● Permet de ne retenir que quelques attributs d'une relation.

● Def.: Soit la relation R1(a1, …, an). La projection de la

relation R1 sur les attributs (a1, …, am), m<n, consiste à

élaborer une relation R2, qui aura pour schéma le même

que celui de R1 sauf les attributs (am+1, …, an). Ainsi, la

relation R2 en résultat aura la même extension que celle

de R1, mais ses tuples auront des attributs en moins.

● Notations : ∏(a1, …, am)(R1), (R1)[ a1, …, am],

PROJECT(R1 , a1, …, am)

Algèbre relationnel

Page 42: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

42

Projection : exemple

Algèbre relationnel

Page 43: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

43

Restriction

● Réduit le nombre de tuples mais même nombre d'attributs.

● Def.: Soit P un critère logique portant sur les attributs des tuples d'une relation R1. La restriction de la relation R1 à P

consiste à élaborer une relation R2 qui ne gardera de R1 que les

tuples satisfaisant le prédicat P.

● Critère de restriction : <attribut> <comparaison> <valeur>

● <comparaison> dans {=, <, >, ≤, ≥, ≠} + combinaison

● Dialecte SQL : (LIKE, IN, NOT NULL, etc.) et application de fonctions sur opérandes (TO_DATE(), ...)

● Notations : σcritère(R1), (R1)[critère], RESTRICT(R1, critère)

Algèbre relationnel

Page 44: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

44

Restriction : exempleAlgèbre relationnel

Page 45: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

45

Jointure

● Opération majeure : 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 pas un critère de comparaison entre deux colonnes du résultat du produit cartésien.

● C'est le seul opérateur exploitant les attributs référentiels inter-relations (clé primaire, clé étrangère) .

● Pas vraiment une opération de base : peut être définie à partir du produit cartésien et d'une restriction.

● Grande importance

Algèbre relationnel

Page 46: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

46

Jointure (suite)

● Def.: La jointure est une opération binaire entre deux relations R1 et R2 de schémas quelconques, qui permet d'associer, selon

un critère donné portant sur au moins un attribut de chaque relation, les tuples de R1 et ceux de R2, afin de former une

troisième relation R3 contenant l'ensemble de tous les tuples

obtenus en concaténant chaque tuple de R1 et chaque tuple de

R2 si ces deux tuples vérifient, ensemble, la condition

d'association.

● a1 et a2 des attributs respectivement de R1 et R2 : critère de jointure de la forme : a1 θ a2. L'opérateur θ est un opérateur de comparaison (cf restriction) : θ-jointure.

Algèbre relationnel

Page 47: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

47

Jointure (fin)

● Notations : ou JOIN(R, R', θ) ● n attributs à R (t tuples), n' à R' (t' tuples) :

JOIN(R, R', θ) à n+n' attributs et au max t+t' tuples.

● JOIN(R, R', θ) = RESTRICT(TIMES(R, R'), θ) ● Jointure naturelle : jointure entre 2 relations avec

critère d'égalité (equi-jointure) entre 2 attributs de même noms et fusion des colonnes de même nom(s).

Algèbre relationnel

Page 48: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

48

Jointure : exemplesAlgèbre relationnel

Page 49: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

49

Langages algébriques et expressions dérivées

● Un langage algébrique peut être dérivé de l'algèbre relationnel pour interroger les bases de données

● Une requête se représente par un arbre d'opération.

● Cet arbre peut être traduit en SQL, donc un langage opérationnel.

Langage algébrique

Page 50: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

50

Expressions algébriques

● Le langage algébrique dérivé des opérateurs d'algèbre relationnel constitue un langage complet (= équivalent logique du premier ordre).

● La notion de relation reste essentielle.

3 types :– relations nommées et stockées dans le SGBD

– relations nommées mais non stockées

– relations ni nommées ni stockées, appelées relations intermédiaires

Langage algébrique

Page 51: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

51

Expressions algébriques : exemples

● Considérons la base constituée des relations :

Film(numfilm, titre, réalisateur, année, durée)

Acteur(numacteur, nom, prénom, dateNaissance)

Casting(numfilm, numacteur, personnage)● Quel sont les films (titre, réalisateur) qui durent plus de

deux heures ?

Langage algébrique

Page 52: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

53

Expressions algébriques : exemples

● Quels sont les numéros des acteurs se prénommant Ryan ?

● Quels sont les films dont un des personnages est Astérix ?

Langage algébrique

Page 53: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

55

Expressions algébriques : exemples

● Quels sont les acteurs (nom, prénom et mois de naissance) nés la même année ?

Langage algébrique

Page 54: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

57

Expressions algébriques : exemples

● Quels sont les acteurs qui ont joué dans un film réalisé par "Besson" et qui n'ont jamais joué dans un film réalisé par "Benigni" (nom et prénom)?

Langage algébrique

Page 55: Base de Données : Le modèle relationnelpageperso.lif.univ-mrs.fr/~remi.eyraud/BD/BD_Cours_2...de la base de données sans qu'elle n'ait à être recréée, et sans que les applications

59

Expressions algébriques : exemples

● Quels sont les réalisateurs qui ont fait dirigé Emma Watson mais pas Emma Stone ?