relation - university of paris-est marne-la-vallée

44
OlivierCuré [[email protected]r] 43 Relation Une relation est un sous-ensemble du produit cartésien d'une liste de domaines. Chaque relation est identifiée par un nom. Représentation sous la forme d'une table à 2 dimensions : des colonnes, attributs. des lignes, enregistrements ou n-uplets.

Upload: others

Post on 16-Jun-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]43

Relation

Une relation est un sous-ensemble du produit cartésien d'une liste de domaines.

Chaque relation est identifiée par un nom.

Représentation sous la forme d'une table à 2 dimensions :

des colonnes, attributs.

des lignes, enregistrements ou n-uplets.

Page 2: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]44

Attribut

Un attribut prend ses valeurs dans domaine de valeurs. Un attribut est identifié par un nom.

Exemple :

titre année nomDir prénomDir annéeNaissDir

Alien 1979 Scott Ridley 1943

Reservoir Dogs 1992 Tarantino Quentin 1963

The thing 1982 Carpenter John 1948

Volte-face 1997 Woo John 1946

Pulp Fiction 1995 Tarantino Quentin 1963

Page 3: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]45

Clés

Clé : un ensemble d'attributs dont le regroupement des valeurs identifie sans ambiguité un n-uplet (tuple).

Clé candidate (candidate key): une clé pour laquelle aucun sous-ensemble n'est une clé. Une clé minimale.

Clé primaire (primary key): une clé candidate sélectionnée pour être la clé principale d'une relation. Une clé primaire par relation.

Page 4: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]46

Clé externe

Une clé externe (foreign key) est un ensemble d'attributs dans une relation qui correspondent exactement à la clé primaire d'une autre relation.

Le nom des attributs ne doivent pas nécessairement correspondre mais les domaines doivent être identiques.

Page 5: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]47

Un exemple

titre année nomDir prénomDir annéeNaissDir Alien 1979 Scott Ridley 1943 Reservoir Dogs 1992 Tarantino Quentin 1963 The thing 1982 Carpenter John 1948Volte-face 1997 Woo John 1946 Pulp Fiction 1995 Tarantino Quentin 1963 Terminator 1984 Cameron James 1954 Ghosts of Mars2001 Carpenter John 1948Mad Max 1979 Miller George 1945Mad Max 2 1981 Miller George 1945

Une relation sur les films

Quelques problèmes : Supprimer un film, ajouter un réalisateur, modifier la date de naissance d'un réalisateur, Cohérence des données.

Page 6: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]48

Un exemple (2)

idDir nomDir prénomDir annéeNaissDir 1 Scott Ridley 1943 2 Tarantino Quentin 1963 3 Carpenter John 19484 Woo John 1946 5 Cameron James 1954 6 Miller George 1945

titre année idDirAlien 1979 1Reservoir Dogs 1992 2The thing 1982 3Volte-face 1997 4Pulp Fiction 1995 2Terminator 1984 5Ghosts of Mars 2001 3Mad Max 1979 6Mad Max 2 1981 6

Une autre relation sur les réalisateursUne relation sur les films

Problèmes précédents : Supprimer un film, ajouter un réalisateur, modifier la date de naissance d'un réalisateur, Cohérence des données.

Page 7: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]49

Schéma d'une relation

Le schéma d'une relation correspond à l'ensemble : nom de la relation, liste des attributs (avec domaines) et indication de la clé primaire (souligné).

R : A1, A2, ..., An

Schéma d'une base de données est l'ensemble des schémas des relations de la base.

Page 8: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]50

Schémas, exemple

Schéma des relations :

film (titre, année, idDir)

realisateur (idDir, nomDir, prenomDir, anneéNaisDir)

Schéma de la base de données :

film, realisateur

Page 9: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]51

Mapping EA - relationnel

Une type d'entité devient une relation.

Une propriété devient un attribut.

Une propriété identifiante devient une clé primaire.

Une association devient une relation et sa représentation est fonction des cardinalités.

Page 10: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]52

Transformation des associations en relations

Les cardinalités maximales de l'association sont de 1 :

L'identifiant d'une entité est utilisé comme clé étrangère de l'autre relation, ou inversement.

Entity1(a1, ...)Entity2(a2, ..., #a1)ouEntity1(a1, ...,#a2)Entity2(a2, ...)

Page 11: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]53

Transformation des associations en relations (2)

La cardinalité maximale d'une association est à n et l'autre à 1 :

L'identifiant de l'entité (*:n) devient une clé étrangère de l'entité (*:1).

Entity1(a1, ..., #a2)Entity2(a2, ...)

Page 12: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]54

Transformation des associations en relations (3)

Les cardinalités maximales sont à n :

L'association devient une relation et sa clé primaire se compose des identifiants des entités.

Entity1(a1, ...)Entity2(a2, ...)Asso1(#a1,#a2, a3)

Page 13: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]55

Exemple mapping

relations n,m

Schéma relationnel

Produit (numPro, nomPro)

Client (numCli, nomCli)

Achat (#numCli,#numPro)

(1)

(2)

Page 14: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]56

Transformation des associations en relations (4)

Dans le cas d'une association « is-a », il est possible de voir la solution avec un point de vue orienté objet (duplication des attributs de la super-classe dans la sous-classe) ou bien entité-association (duplication de l'indentifiant de la super-classe dans la sous-classe).

Personne(id_pers,nom)Vision OO :joueur(id_pers, club)arbitre(id_pers, niveau)Vision EA :joueur(id_pers, nom, club)arbitre(id_pers, nom, niveau)

Page 15: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]57

Transformation des associations en relations (5)

Dans le cas d'une association récursive, l'attribut clé primaire de la relation est dupliquée sous la forme d'une clé étrangère.

Employe (id_emp, nom_emp, #id_emp_manager)

Page 16: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]58

Exemple Bibliothèque

Page 17: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]59

Schémas de la bibliothèque

Schéma relationnel

Mot_cle (numMC , valeurMC)

Ouvrage (numOuv, titreOuv, nomAuteurOuv, editeurOuv)

Exemplaire (numEx, dateAchat, #numEmp, #numOuv)

Emprunteur (numEmp, nomEmp, adrEmp)

MotCle_Ouvrage (#numMC, #numOuv)

Schéma de la base de données

Mot_cle, Ouvrage, Exemplaire, Emprunteur, MotCle_Ouvrage

Page 18: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]60

Autre exemple

On gère des patients et des docteurs qui sont des personnes. Pour chaque personne, on stocke le NSS, le nom, le prénom, l'adresse. Pour un docteur nous avons en plus un numéro d'ordre.

Un docteur soigne un patient et peut lui prescrire un test (portant un nom et identifié par un numéro).

On désire stocker la date et le résultat d'un test donné pour un patient et prescrit par un docteur.

Page 19: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]61

Correction exemple

Page 20: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]62

Son schéma relationnel

Personne(NSS, nom, prenom, adrNumRue, adrRue, adrVille)

Patient (NSS)

Docteur(NSS, numOrdre) 

Test(numTest, nomTest)

Soigne (#NSSPatient,#NSSDocteur)

EffectuerTest (#NSSDocteur, #NSSPatient, #NumTest, date, resultat)

Page 21: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]63

4. Algèbre

relationnel

Page 22: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]64

Objectif

Effectuer des opérations sur le modèle relationnel.

Algèbre relationnel :

Théorique

Fondement du traitement des requêtes.

Notation formelle (plus 'propre' et plus compact que le SQL).

Récupération et manipulation (mise-à-jour, suppression, insertion) des données de la BD.

Base de l'optimisation des requêtes SQL.

Ce n'est pas un langage de programmation (déclaratif, pas procédural).

Page 23: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]

Les langages des SGBD

LDD ou Langage pour la Définition des Données (Data Definition Language - DDL)

définition de l'ensemble du schéma de la base de données.

LMD ou Langage pour la Manipulation des Données ( Data Manipulation Language - DML)

consultation, modification, suppression et ajout des données.

LCD ou Langage pour le Contrôle des Données (Data Control Language - DCL)

définition des permissions d'accès, administration.

Page 24: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]

Algèbre et calcul relationnels pour le LMDDeux représentations sont à la base de l'implémentation des langages de requêtes :

Algèbre relationnel (relational algebra)Très pratique pour représenter un plan d'exécution, plus opérationnel que le calcul relationnel. Concerne le 'comment faire'.

Calcul relationnel (relational calculus) Permet aux utilisateurs de décrire ce qu'ils veulent plutôt que de décrire comment l'obtenir. Plus déclaratif que l'algèbre relationnel. Concerne le 'quoi faire'.

Page 25: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]

Exemple

SQL

SELECT nomDir, titre

FROM realisateur r, film f

WHERE r.idDir=f.idDir;

Algèbre relationnel

 ∏ (nomDir, film)

 (Film ><idDir

 

Realisateur)

Calcul relationnel

{R.nomDir, F.titre | R ∈ Realisateur ∧ ∃F(F ∈ Film ∧ R.idDir = F.idDir) }

titre année idDirAlien 1979 1Reservoir Dogs 1992 2The thing 1982 3Volte-face 1997 4Pulp Fiction 1995 2Terminator 1984 5Ghosts of Mars 2001 3Mad Max 1979 6Mad Max 2 1981 6idDir nomDir prénomDir annéeNaissDir 1 Scott Ridley 1943 2 Tarantino Quentin 1963 3 Carpenter John 19484 Woo John 1946 5 Cameron James 1954 6 Miller George 1945

Page 26: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]

Opérations sur l'algèbre relationnel

Théorie des opérations est formellement définie et équivalente à la logique du premier ordre.

Les opérateurs relationnels transforment une, ou une paire, de relations en un résultat qui est lui aussi une relation.

Ce résultat peut-être exploité dans d'autres requêtes.

Les opérations éliminent les duplicats.

Page 27: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]69

Algèbre relationnel

Un ensemble d'opérations formelles permettant de décrire des requêtes sous une forme algébrique.

Opérations sur les ensembles :

Union : ∪

Intersection : ∩

Différence : -

Opérations algébriques :

unaire (sélection, projection)

Binaire (jointures et division)

R

S

Page 28: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]70

Projection

Opération algébrique sélectionnant un sous-ensemble des attributs d'une relation

Symbole : ∏Syntaxe : Résultat = ∏

(attributs) Relation

Exemple : R1 = ∏(prenomDir)

realisateur Quentin

John

James

George

Page 29: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]71

Projection (2)

Le nombre de n-uplets d'une relation résultat d'une opération de projection R, est inférieur ou égal au nombre de n-uplets de la relation R.

L'opération de projection n'est pas commutative.

Si liste2 contient les attributs de liste1, liste1 ⊆ liste2 on peut écrire :

∏ (liste1)

(∏ (liste2)

(R))= ∏ (liste1)

(R)

Page 30: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]72

Sélection

Opération permettant la sélection d'un sous-ensemble des n-uplets d'une relation satisfaisant une condition.

Symbole : σ

Syntaxe : Résultat = σ (condition)

Relation

Opérateurs sur la condition : =,<>,<,<=,>,>=.

Exemple : R1 = σ(annéeNaisDir=1948)

realisateur

3 Carpenter John 1948 

Page 31: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]73

Sélection (2)

Le degré (nombre d'attributs) d'une relation résultat d'une opération de sélection sur R est identique au degré de la relation R.

La sélection est une opération commutative :

σ (cond1)

(σ (cond2)

(R)) = σ (cond2)

(σ (cond1)

(R))

Cascade d'opérations :

σ (cond1)

(σ (cond2)

(R)) = σ (cond1 et cond2)

(R)

Page 32: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]74

Projection et sélection

On peut effectuer des opérations avec des projections et sélections.

Exemple : Nom du réalisateur dont l'année de naissance est 1948.

∏(nomDir)

 (σ  (anNaisDir=1948)

 realisateur)

Page 33: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]75

Produit cartésien

Le produit cartésien de 2 relations R1 (A1,A2, ..,An) de i n-uplets et de R2 (B1,B2, ..,Bm) de j n-uplets est une relation de degré n+m et de i*j n-uplets R3 (A1,A2,..,An,B1,B2,..,Bm).

Le résultat de R1xR2 est une relation incluant toutes les combinaisons de n-uplets de R1 et R2.

On exploite le produit cartésien en conjunction avec les autres opérateurs.

Page 34: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]76

Exemple de produit cartésien

R1Att1 Att2a1 b1a1 b2a2 b1a2 b2a3 b2a4 b2

R2Att3 c1c2

R3 = R1xR2Att1 Att2 Att3a1 b1 c1a1 b1 c2a1 b2 c1a1 b2 c2a2 b1 c1a2 b1 c2a2 b2 c1a2 b2 c2a3 b2 c1a3 b2 c2a4 b2 c1a4 b2 c2

3 attributs et 12 n-uplets

Page 35: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]77

Union, Intersection et différence

Ces opérations sont binaires et comportent 2 relations qui doivent être compatibles.

Soit la relation R1(A1,A2,..,An)

La fonction dom(Ai) retourne le domaine de Ai.

Exemple : Personne (nss, nom)

dom(nss) = des numéros de SS.

dom(nom) = des noms.

2 relations sont compatibles pour les opérations sur les ensembles ssi pour R1(A1,A2,..,An) et R2(B1,B2,..,Bm), n=m et dom(Ai) = dom(Bi), 1<=i<=n.

Page 36: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]78

Union [∪ ]

L'union de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) = Dom(Bi) pour 1<= i <= n.

Le résultat de R1 ∪ R2 est une relation incluant tous les n-uplets qui sont dans R1 ou R2 ou bien dans R1 et R2, en éliminant les duplicats.

Union est commutative : R ∪ S = S ∪ R

Page 37: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]79

Exemple union

R1

Num

12345

13344 R

26688 R=R1 ∪ R2 Num

25434 12345

R2 13344

Num 26688

13344 25434

28866 28866

Page 38: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]80

Intersection [∩ ]

L'intersection de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) ∩ Dom(Bi) pour 1<= i <= n.

Le résultat de R1 ∩ R2 est une relation incluant seulement les n-uplets qui sont dans R1 qui apparaissent aussi dans R2.

Intersection est commutative : R ∩ S = S ∩ R .

Page 39: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]81

Exemple intersection

R1

Num

12345

13344 R

26688 R=R1 ∩ R2 Num

25434 13344

R2

Num

13344

28866

Page 40: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]82

Différence [- ]

La différence de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) − Dom(Bi) pour 1<= i <= n.

Le résultat de R1 − R2 est une relation incluant tous les n-uplets qui se trouvent dans R1 et pas dans R2.

Différence n'est pas commutative.

Page 41: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]83

Exemple union

R1

Num

12345

13344

26688

25434

R2

Num

13344

28866

R1­R2

Num

12345

26688

25434

R2 ­ R1

Num

28866

Page 42: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]84

Jointure

Composition de deux relations sur un domain commun.

La jointure de 2 relations R1(A1,A2,..,An) et R2(B1,B2, .., Bm) est une relation R3 de degré k = n+m et dont les attributs sont (A1, A2, .., An, B1, B2, ..,Bm).

Symbole : ><

Syntaxe : Résultat = R1 >< condition

R2

Equivalence avec σ (condition)

(R1 x R2)

Page 43: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]85

Jointures

Un jointure avec une condition d'égalité est une équi-jointure.

On parle de jointure naturelle lorsque la condition compare des attributs dont le nom est identique. Le symbole utilisé est alors '*' et il n'est pas nécessaire d'indiquer la condition.

Exemple : R1(A1,A2,A3,A4) et S(A1,B1,B2,B3)

Q = R * S est équivalent à 

Q' = R ><R.A1=S.A1

 S

On parle de théta-jointure lorsque les noms des attributs sont différents.

Page 44: Relation - University of Paris-Est Marne-la-Vallée

OlivierCuré [[email protected]]86

Renommer des attributs et relations

Pour effectuer des jointures naturelles plus facilement, on peut utiliser l'opérateur ρ qui permet de renommer des attributs et/ou des relations.

Exemple : R1(A1,A2,A3)

ρ S(B1,B2,B3)

 (R) renomme R en S et les

attributs An en Bn.

ρ S (R) renomme R en S.

ρ B1,B2,B3

 (R) renomme An en Bn.