21/05/2014© robert godin. tous droits réservés.1 3introduction au modèle relationnel 3.1concepts...

79
20/06/22 © Robert Godin. Tous droits réservés. 1 3 Introduction au modèle relationnel 3.1 Concepts de base Domaine : ensemble de valeurs Relation : ensemble de n-uplets (tuples) SQL : multi-ensemble noClient nom Client noTéléphone 10 LucSansom (999)999-9999 20 D ollard Trem blay (888)888-8888 30 Lin Bô (777)777-7777 40 Jean Leconte (666)666-6666 50 H afedh Alaoui (555)555-5555 60 M arieLeconte (666)666-6666 70 Sim on Lecoq (444)444-4419 80 D ollard Trem blay (333)333-3333 lign e / tuple co lo n n e / a ttribu t ta b le / relation

Upload: marcelle-albert

Post on 04-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 1

3 Introduction au modèle relationnel

3.1 Concepts de base

Domaine : ensemble de valeurs Relation : ensemble de n-uplets (tuples) SQL : multi-ensemble

noClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

ligne /tuple

colonne /attribut

table /relation

Page 2: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 2

suite

Deux facettes du concept de table

– Schéma d'une table (table schema)

définition de son type (intention)

ex: Client(noClient, nomClient, noTéléphone)

– Instance ou extension d'une table

état de la table ~ variable qui contient un ensemble de lignes modifications d ’état

Schéma relationnel

– ensemble de schémas de tables

Page 3: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

Instance de BD VentesPleinDeFoinTable Commande

noCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Table LigneCommandenoCommande noArticle quantité1 10 101 70 51 90 12 40 22 95 33 20 14 40 14 50 15 70 35 10 55 20 56 10 56 40 17 50 17 95 28 20 3

Table ArticlenoArticle description prixUnitaire quantitéEnStock10 Cèdre en boule 10.99 1020 Sapin 12.99 1040 Epinette bleue 25.99 1050 Chêne 22.99 1060 Erable argenté 15.99 1070 Herbe à puce 10.99 1080 Poirier 26.99 1081 Catalpa 25.99 1090 Pommier 25.99 1095 Génévrier 15.99 10

Table DétailLivraisonnoLivraison noCommande noArticle quantitéLivrée100 1 10 7100 1 70 5101 1 10 3102 2 40 2102 2 95 1100 3 20 1103 1 90 1104 4 40 1105 5 70 2

Table LivraisonnoLivraison dateLivraison100 3/06/2000101 4/06/2000102 4/06/2000103 5/06/2000104 7/07/2000105 9/07/2000

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 4: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 4

3.2 Contraintes d'intégrité du modèle relationnel 3.2.1 Contrainte de domaine et de valeur non nulle

T(A1 : D1, A2 : D2, …, An : Dn)

– Di : domaine de Ai

Valeur nulle– Comportement particulier– Valeur inconnue– Valeur non applicable– ...

Page 5: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 5

3.2.2 Clé primaire et contrainte d'entité Clé unique (unique key)

– ou superclé (superkey )– identifiant

Clé candidate (candidate key)– clé unique minimale

Clé primaire (primary key)– sert de mécanisme de référence aux lignes de la

table Contrainte d'entité (entity constraint)

clé primaire – non nulle

Page 6: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 6

3.2.3 Contrainte d'intégrité référentielle Clé étrangère non nulle clé primaire

noClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

noCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Table Commande Table Client

Clé étrangère Clé primaire

Page 7: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 7

Représentation UML

Commande

{Clé primaire : noCommande}noCommande : INTEGERdateCommande : DATEnoClient : INTEGER

<<Table>>

Client

{Clé primaire : noClient}noClient : INTEGERnomClient : VARCHARnoTéléphone : VARCHAR

<<Table>>

LigneCommande

{Clé primaire : noCommande, noArticle}noCommande : INTEGERnoArticle : INTEGERquantité : INTEGER

<<Table>>

Article

{Clé primaire : noArticle}noArticle : INTEGERdescription : VARCHARprixUnitaire : DECIMALquantitéEnStock : INTEGER

<<Table>>

Livraison

{Clé primaire : noLivraison}noLivraison : INTEGERdateLivraison : DATE

<<Table>> DétailLivraison

{Clé primaire : noLivraison, noCommande, noArticle}noLivraison : INTEGERnoCommande : INTEGERnoArticle : INTEGERquantitéLivrée : INTEGER

<<Table>>

Page 8: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 8

Nom clé étrangère nom clé primaire Étiquette de la relation de

dépendance

numéroClient

Client

{Clé primaire : noClient}noClient : INTEGERnomClient : VARCHARnoTéléphone : VARCHAR

<<Table>>Commande

{Clé primaire : noCommande}noCommande : INTEGERdateCommande : DATEnuméroClient : INTEGER

<<Table>>

Page 9: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 9

3.3 Conception logique : traduction du modèle conceptuel de données en schéma conceptuel relationnel

Output : schéma relationnel (niveau conceptuel) – tables– colonnes

types, domaines, ...

– contraintes d ’intégrité clés primaires, étrangères, ...

Input à la conception– modèle conceptuel des données

MDA– Platform Specific Model (PSM)

Page 10: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 10

3.3.1 Première ébauche du schéma : une table par classe

Personne<<table>>

Membre<<table>> PrêtEnCours

<<table>>PrêtArchivé<<table>>

Employé<<table>>

Catégorie<<table>>

Auteur<<table>>

Editeur<<table>>

Livre<<table>>

Exemplaire<<table>>

Prêt<<table>>

Utilisateur<<table>>

Page 11: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 11

3.3.2 Traduction des attributs

Attribut de la classe -> colonne de la table

Livre

{Clé candidate: ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

Page 12: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 12

3.3.2.1 TRADUCTION DES CONTRAINTES D'IDENTIFICATION (UNIQUE)

Contrainte UNIQUE -> clé candidate relationnelle– clé primaire ?

Livre

{Clé candidate: ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

Page 13: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 13

3.3.2.2 TRADUCTION DES TYPES DE DONNÉESType OCL Type SQL2 Oracle 8Boolean BIT(1) Non supporté (utiliser CHAR(1) + CHECK)Integer INTEGER ou SMALLINT NUMBER(n)String CHARACTER (CHAR) (n), CHARACTER

VARYING (VARCHAR) (n)VARCHAR2(n), LONG ou LONGVARCHAR (chaîne jusqu'à 2G), CLOB(chaîne jusqu'à 4G), NCLOB (chaîne pourcaractères encodés sur plusieurs octets)

Real NUMERIC(p,s) (précision exacte),DECIMAL(p,s), REAL, DOUBLEPRECISION, FLOAT(p)

NUMBER(p,s)

Enum{v1,…vn} CHARACTER (CHAR) ou VARCHER +CHECK … IN (v1,…,vn) (possibilité decréation de domaine)

Domaine non supporté

DATE DATE inclut TIMETIMETIMESTAMPBIT(n), BIT VARYING(n) RAW(n : max = 255), LONG RAW (binaire

jusqu'à 2G), BLOB (binaire jusqu'à 4G)BFILE (pointeur à un fichier externe)

Page 14: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 14

Types de données déclarés

Domaine pas toujours supporté par le dialecte SQL

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

TypeDonnéesAnnée

{Integer > 0 }

<<datatype>>

Livre

{Clé candidate: ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>

DomaineAnnée

{INTEGER CHECK value > 0 }

<<domain>>

Page 15: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 15

3.3.2.3 TYPES ÉNUMÉRÉS

Petit domaine invariant– création d ’un domaine VARCHAR +

CHECKExemplaire

{Clé candidate : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatut

<<table>>

DomaineStatut

{VARCHAR(15) CHECK value IN ('prêté','disponible','retiré')}

<<domain>>

Exemplaire

{UNIQUE: idExemplaire}idExemplaire : StringdateAchat : Datestatut : enum(prêté, disponible, retiré)

Page 16: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 16

Création d ’une table

Gros domaine ou extensible– création d ’une table à part– utilisé comme liste de valeurs (LOV

Designer)– introduction d ’une clé primaire

artificielle ?Exemplaire

{Clé candidate : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : VARCHAR(15)

<<table>>

DomaineStatut

{Clé primaire : statut}statut : VARCHAR(15)

<<table>>

Page 17: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 17

3.3.2.4 TYPES COMPLEXES

1. Représentation explicite des attributs du type complexe

Membre

adresse : typeDonnéesAdresse

typeDonnéesAdresse

numéroCiviquenuméroAppartementnomRuenomVillenomProvincenomPayscodePostal

<<datatype>>Membre

numéroCiviquenuméroAppartementnomRuenomVillenomProvincenomPayscodePostal

<<table>>

Page 18: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 18

2. Création d'une nouvelle table

N.B. Pas de partage de la même adresse !

Membre

{Clé primaire : idMembre}idMembre

<<table>>

Adresse

{Clé primaire : idMembre}idMembrenuméroCiviquenuméroAppartementnomRuenomVillenomProvincenomPayscodePostal

<<table>>

Membre

adresse : typeDonnéesAdresse

typeDonnéesAdresse

numéroCiviquenuméroAppartementnomRuenomVillenomProvincenomPayscodePostal

<<datatype>>

Page 19: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 19

3.3.2.5 QUALIFICATEUR

Colonne dans la table du rôle opposé– voir 3.3.3.2

Groupe

nbMaximumInscrits

Cours

{UNIQUE:sigle}sigletitrenbCrédits 1

0..1

numérosession

numérosession

10..1

Groupe

{Clé primaire : sigle, numéro, session}siglenumérosessionnbMaximumInscrits

<<table>>

Cours

{Clé primaire :sigle}sigletitrenbCrédits

<<table>>

Page 20: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 20

3.3.2.6 DISCRIMINANT

Redondant ?Utilisateur

{UNIQUE :idUtilisateur}idUtilisateur : StringmotPasse : String

catégorieUtilisateur

Membre

téléphoneRésidence : String$ nbMaxPrêts : Integer = 5$ duréeMaxPrêts : Integer = 7

Employé

{UNIQUE : codeMatricule}codeMatricule : StringcatégorieEmployé : enum(bibliothécaire, commis)

{disjointe, complète}

Utilisateur

{Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

DomaineCatégorieUti lisateur

{VARCHAR(14) CHECK value IN ('employé, 'membre')}

<<domain>>

Page 21: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 21

3.3.2.7 ATTRIBUT MULTIVALUÉ

Table à part– clé étrangère + colonne pour l ’attribut

Petit tableau de taille fixe– n colonnes (valeurs nulles)

Encodage– invisible au SGBD

Oracle8– VARRAY, NESTED TABLE

Page 22: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 22

3.3.2.8 COMPRESSION DES VALEURS DES ATTRIBUTS DE GRANDE TAILLE

Supporté par le SGBD ? Multimédia

Page 23: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 23

3.3.2.9 CRÉATION DE TABLES SUPPLÉMENTAIRES POUR LES ATTRIBUTS DE CLASSE

MembreGénéral

nbMaxPrêts : INTEGER = 5duréeMaxPrêts : INTEGER = 7

<<table>>

Membre

téléphoneRésidence : String$ nbMaxPrêts : Integer = 5$ duréeMaxPrêts : Integer = 7

Membre

téléphoneRésidence : VARCHAR(15)

<<table>>

Page 24: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 24

3.3.3 Réalisation de l'identité par les clés primaires

MembreGénéral

{Clé primaire : noSequence}noSequencenbMaxPrêts : INTEGER = 5duréeMaxPrêts : INTEGER = 7

<<table>>

Personne

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20)

<<table>>

Membre

{Clé primaire : noSequence}noSequence : INTEGERtéléphoneRésidence : VARCHAR(15)

<<table>>

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>Employé

{Clé primaire : noSequence}noSequence : INTEGER{Clé candidate : codeMatricule}codeMatricule : CHAR(6)catégorieEmployé : DomaineCatégorieEmployé

<<table>>

Catégorie

{Clé primaire : code}code : VARCHAR(10)descripteur : VARCHAR(20)

<<table>>

Auteur

{Clé primaire : noSequence}noSequence

<<table>>

Editeur

{Clé primaire : nomEditeur}nomEditeur : VARCHAR(20)ville : VARCHAR(20)

<<table>>

Livre

{Clé primaire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>> Exemplaire

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatut

<<table>>

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATE

<<table>>

Utilisateur

{Clé primaire : noSequence}noSequence{Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

AuteurLivre

{Clé primaire : noSequence, ISBN}noSequenceISBN

Page 25: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 25

3.3.3.1 CRÉATION D'UNE CLÉ PRIMAIRE ARTIFICIELLE

De manière systématique ? Mécanisme de SEQUENCE Oracle

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATE

<<table>>Prêt

datePrêt : Date

PrêtArchivé

dateRetour : DatePrêtEnCours

Page 26: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 26

3.3.3.2 UTILISATION D'UN IDENTIFIANT NATUREL COMME CLÉ PRIMAIRE

1. Utilisation d'un identifiant naturel (UNIQUE)

Si identifiant naturel trop lourd– introduire clé primaire artificielle

Livre

{Clé candidate: ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>Livre

{Clé primaire: ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>

Page 27: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 27

2. Utilisation du qualificateur

Groupe

nbMaximumInscrits

Cours

{UNIQUE:sigle}sigletitrenbCrédits 1

0..1

numérosession

numérosession

10..1

Groupe

{Clé primaire : sigle, numéro, session}siglenumérosessionnbMaximumInscrits

<<table>>

Cours

{Clé primaire :sigle}sigletitrenbCrédits

<<table>>

Page 28: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 28

3.3.3.3 IDENTIFIANT NATUREL POUR UNE SPÉCIALISATION

Éviter de changer de clé primaire dans le contexte d ’une hiérarchie de généralisation

Si la table du parent est omise– considérer identifiant naturel de la

spécialisation

Page 29: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 29

3.3.4 Traduction des associationsPrêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

Personne

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20)

<<table>>

Membre

{Clé primaire : noSequence}noSequence : INTEGERtéléphoneRésidence : VARCHAR(15)

<<table>>PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>

Employé

{Clé primaire : noSequence}noSequence : INTEGER{Clé candidate : codeMatricule}codeMatricule : CHAR(6)catégorieEmployé : DomaineCatégorieEmployé

<<table>>

Catégorie

{Clé primaire : code}code : VARCHAR(10)descripteur : VARCHAR(20)codeParent : VARCHAR(10)

<<table>>

Auteur

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

Editeur

{Clé primaire : nomEditeur}nomEditeur : VARCHAR(20)ville : VARCHAR(20)

<<table>>

Livre

{Clé primaire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnéenomEditeur : VARCHAR(20)code : VARCHAR(10)

<<table>>Exemplaire

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatutISBN : CHAR(13)

<<table>>

Utilisateur

{Clé primaire : noSequence}noSequence{Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

MembreGénéral

{Clé primaire : noSequence}noSequencenbMaxPrêts : INTEGER = 5duréeMaxPrêts : INTEGER = 7

<<table>>

AuteurLivre

{Clé primaire : noSequence, ISBN}noSequence : INTEGER{Clé candidate : ISBN, ordreAuteur}ISBN : CHAR(13)ordreAuteur : INTEGER

<<table>>

{Un Auteur ne peut exister sans AuteurLivre}

{Un Livre ne peut exister sans AuteurLivre}

noSequenceUtilisateur

{Un Editeur ne peut exister sans Livre}

codeParent

{Un Livre ne peut exister sans Exemplaire}

Page 30: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 30

3.3.4.1 CAS GÉNÉRAL : TRADUCTION D'UNE ASSOCIATION PAR UNE TABLE

Auteur

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>Livre

{Clé primaire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnée

<<table>>

AuteurLivre

{Clé primaire : noSequence, ISBN}noSequence : INTEGERISBN : CHAR(13)

<<table>>{Un Auteur ne peut exister sans AuteurLivre}

{Un Livre ne peut exister sans AuteurLivre}

Auteur

1..* 1..*1..* 1..*

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

Page 31: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 31

3.3.4.2 TRADUCTION D'UN RÔLE ORDONNÉ POUR UNE ASSOCIATION

Auteur

1..* 1..*1..* 1..*

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

{ordonné}

A u teu r

{C lé p rim a ire : n o S eq u en c e}n o S eq u en c e : IN T E G E R

< < ta b le> >

A u teu rL iv re

{C lé p rim a ire : n o S eq u en c e , IS B N }n o S eq u en c e : IN T E G E R{C lé c a n d id a te : IS B N , o rd reA u teu r }IS B N : C H A R (1 3 )o rd reA u teu r : IN T E G E R

< < ta b le> >

L iv re

{C lé p rim a ire : IS B N }IS B N : C H A R (1 3 )t it re : V A R C H A R (5 0 )a n n é eP a ru tio n : D om a in eA n n é e

< < ta b le> >

Page 32: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 32

3.3.4.3 CLASSE ASSOCIATIVE

Cours

{UNIQUE : sigle}sigletitrenbCrédits

Etudiant

{UNIQUE : codePermanent}codePermanentnomprénom

** **

NoteObtenue

notesession

Cours

{Clé primaire : sigle}sigletitrenbCrédits

<<table>>Etudiant

{Clé primaire : codePermanent}codePermanentnomprénom

<<table>>

NoteObtenue

{Clé primaire : codePermament, sigle}codePermamentsiglenotesession

<<table>>

Page 33: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 33

3.3.4.4 CAS UN À PLUSIEURS

1. Traduction par une table ?Catégorie

{UNIQUE: code}code : Stringdescripteur : String

1 **1

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

Livre

{C lé prim aire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : Dom aineAnnée

<<table>>

Catégorie

{C lé prim aire : code}code : VARCHAR(10)descripteur : VARCHAR(20)

<<table>>

CatégorieL ivre

{C lé prim aire : ISBN}ISBN : CHAR(13)code : VARCHAR(10)

<<table>>

Page 34: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 34

2. Traduction par l'ajout d'une clé étrangère à privilégier

Navigation plus performanteCatégorie

{UNIQUE: code}code : Stringdescripteur : String

1 **1

Livre

{UNIQUE: ISBN}ISBN : Stringti tre : StringannéeParution : TypeDonnéesAnnée

Livre

{Clé primaire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnéecode : VARCHAR(10)

<<table>>

Catégorie

{Clé primaire : code}code : VARCHAR(10)descripteur : VARCHAR(20)

<<table>>

Page 35: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 35

Renommer la clé étrangère au besoin

Utilisateur

{Clé primaire : noSequence}noSequence{Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

noSequenceUtilisateur

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

Page 36: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 36

3.3.4.5 CAS UN À UN

1. Une clé étrangère (du côté obligatoire)

Passeport

{UNIQUE : noPasseport}noPasseportdateExpiration

Citoyen

{UNIQUE : noAssurranceSociale}noAssurranceSocialenomprénom

0..11 0..11

Passeport

{Clé primaire : noPasseport}noPasseportdateExpiration{Clé candidate : noAssurranceSociale}noAssurranceSociale

<<table>>

Citoyen

{Clé primaire : noAssurranceSociale}noAssurranceSocialenomprénom

<<table>>

Page 37: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 37

2. Une nouvelle tableHomme

{UNIQUE : noAssurranceSociale}noAssurranceSocialenomprénom

Femme

{UNIQUE : noAssurranceSociale}noAssurranceSocialenomprénom

0..10..10..1 0..1

grasAVie vieAGrasMariage

Homme

{Clé primaire : noAssurranceSociale}noAssurranceSocialenomprénom

<<table>>Femme

{Clé primaire : noAssurranceSociale}noAssurranceSocialenomprénom

<<table>>

Mariage

{Clé candidate : noAssSocFemme}noAssSocFemme{Clé candidate : noAssSocHomme}noAssSocHomme

<<table>>

Page 38: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 38

3. Fusion

Cas 1-1 obligatoire

Page 39: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 39

3.3.4.6 CAS DE L'AGRÉGATION

Comme une association normaleCatégorie

{UNIQUE: code}code : Stringdescripteur : String

enfant

0..1

*

parent 0..1

*

Catégorie

{Clé primaire : code}code : VARCHAR(10)descripteur : VARCHAR(20)codeParent : VARCHAR(10)

<<table>>

codeParent

Page 40: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 40

Composition

Cas 1-1– ~ attribut complexe

Mode SQL CASCADE Oracle8

– VARRAY, NESTED TABLE

Page 41: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 41

3.3.5 Traduction des relations de généralisation/spécialisation

Délégation Fusion Concaténation

Page 42: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 42

3.3.5.1 DÉLÉGATIONPersonne

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20)

<<table>>

Membre

{Clé primaire : noSequence}noSequence : INTEGERtéléphoneRésidence : VARCHAR(15)

<<table>>

Employé

{Clé primaire : noSequence}noSequence : INTEGER{Clé candidate : codeMatricule}codeMatricule : CHAR(6)catégorieEmployé : DomaineCatégorieEmployé

<<table>>

Auteur

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>Utilisateur

{Clé primaire : noSequence}noSequence : INTEGER{Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)/ catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

{catégorieUtilisateur doit être cohérent avec la table d'appartenance de l'objet}

Page 43: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 43

Changement de clé primaire ? Extraire le téléphone résidence d'un

Membre possédant l'idUtilisateur 12345

Personne

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20)

<<table>> Utilisateur

{Clé candidate : noSequence}noSequence{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

Employé

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10){Clé candidate : codeMatricule}codeMatricule : CHAR(6)catégorieEmployé : DomaineCatégorieEmployé

<<table>>

Membre

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)téléphoneRésidence : VARCHAR(15)

<<table>>

Page 44: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 44

Traduction de la contrainte {disjointe, complète}

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

{Exclusives et une des deux est nécessaire}

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

Prêt

datePrêt : Date

{disjointe, complète}

PrêtArchivé

dateRetour : DatePrêtEnCours

Page 45: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 45

3.3.5.1.1 Cas de la multi-classification et de l'héritage multiple

Auteur

{Clé primaire : noSequence}noSequence

<<table>>Utilisateur

{Clé primaire : noSequence}noSequence{Clé candidate : idUtilisateur}idUtilisateur : VARC HAR(10)motPasse : VAR CHAR(10)catégorieUtilisateur : D omaineC atégorieUtilisateur

<<table>>

Employé

{Clé primaire : noSequence}noSequence : INTEGER{Clé candidate : codeMatricule}codeMatricule : CH AR(6)catégorieEmployé : D omaineC atégorieEmployé

<<table>>

Membre

{Clé primaire : noSequence}noSequence : INTEGERtéléphoneR ésidence : VARCH AR(15)

<<table>>

AuteurMembre

{Clé primaire : noSequence}noSequence

1. Créer une table de jointure

Page 46: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 46

Alternatives

2. Identité commune sans table de jointure

3. Identité séparée et redondance de données

Page 47: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 47

3.3.5.2 ANALOGIE AVEC UNE ASSOCIATION UN À UN

Clé étrangère– dans l ’enfant– dans le parent ???

Approche Arc de Designer

Fusion– vers le parent (approche par fusion)– vers l ’enfant (approche par

concaténation) Nouvelle table ???

Page 48: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 48

3.3.5.3 FUSION

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10){catégoriePrêt = 'prêtEnCours' ssi dateRetour nulle}dateRetour[0..1] : DATEcatégoriePrêt : DomaineCatégoriePrêt

<<table>>

DomaineCatégoriePrêt

{VARCHAR(15) CHECK valeur IN ('prêtEnCours', 'prêtArchivé')}

<<domain>>

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

{Exclusives et une des deux est nécessaire}

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

Page 49: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 49

3.3.5.4 CONCATÉNATION

{La contrainte de clé primaire est globale pour les deux tables}

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATEdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

Exemplaire

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatutISBN : CHAR(13)

<<table>>

Utilisateur

{Clé candidate : noSequence}noSequence{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

noSequenceUtilisateur noSequenceUtilisateurPrêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceUtilisateur : INTEGERidExemplaire : VARCHAR(10)

<<table>>

{Exclusives et une des deux est nécessaire}

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATE

<<table>>

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGER

<<table>>

Conserver une table pour le parent ?

Page 50: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 50

Cas d ’une référence au parent

Membre

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20){Clé candidate : idUtilisateur}idUtilisatuer : VARCHAR(10)motPasse : VARCHAR(10)téléphoneRésidence : VARCHAR(15)

<<table>>

Employé

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20){Clé candidate : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)catégorieEmployé : DomaineCatégorieEmployé{Clé candidate : codeMatricule}codeMatricule : CHAR(6)

<<table>>

{exclusives}

noSequenceEmployé

noSequenceMembre

Prêt

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEnoSequenceEmployé : INTEGERnoSequenceMembre : INTEGERidExemplaire : VARCHAR(10)

<<table>>

Page 51: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 51

3.3.5.5 TRADUCTION DES GÉNÉRALISATIONS POUR SYLERAT

Membre

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)téléphoneRésidence : VARCHAR(15)

<<table>>

PrêtEnCours

{Clé primaire : noSequence}noSequence : INTEGERdatePrêt : DATEidUtilisateur : VARCHAR(10)idExemplaire : VARCHAR(10)

<<table>>

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGERdateRetour : DATEdatePrêt : DATEidUtilisateur : VARCHAR(10)idExemplaire : VARCHAR(10)

<<table>>

Employé

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10){Clé candidate : codeMatricule}codeMatricule : CHAR(6)catégorieEmployé : DomaineCatégorieEmployé

<<table>>

Catégorie

{Clé primaire : code}code : VARCHAR(10)descripteur : VARCHAR(20)codeParent : VARCHAR(10)

<<table>>

Auteur

{Clé primaire : noSequence}noSequence : INTEGERnom : VARCHAR2(20)prénom : VARCHAR2(20)

<<table>>

Editeur

{Clé primaire : nomEditeur}nomEditeur : VARCHAR(20)ville : VARCHAR(20)

<<table>>

Livre

{Clé primaire : ISBN}ISBN : CHAR(13)titre : VARCHAR(50)annéeParution : DomaineAnnéenomEditeur : VARCHAR(20)code : VARCHAR(10)

<<table>> Exemplaire

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatutISBN : CHAR(13)

<<table>>

Utilisateur

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)nom : VARCHAR2(20)prénom : VARCHAR2(20)/ catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

MembreGénéral

{Clé primaire : noSequence}noSequencenbMaxPrêts : INTEGER = 5duréeMaxPrêts : INTEGER = 7

<<table>>

AuteurLivre

{Clé primaire : noSequence, ISBN}noSequence : INTEGER{Clé candidate : ISBN, ordreAuteur}ISBN : CHAR(13)ordreAuteur : INTEGER

<<table>>

{Un Auteur ne peut exister sans AuteurLivre}

{Un Livre ne peut exister sans AuteurLivre}

{Un Editeur ne peut exister sans Livre}

codeParent

{Un Livre ne peut exister sans Exemplaire}

{Exclusives et une des deux est nécessaire}

{CatégorieUtilisateur doit être cohérente avec la table d'appartenance}

{Lors d'un retour le PrêtArchivé est généré à partir du PrêtEnCours en réutilisant le même noSequence}

Page 52: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 52

3.3.6 Traduction des autres contraintes

PrêtEnCours

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)datePrêt : DATEidUtilisateur : VARCHAR(10)

<<table>>

PrêtArchivé

{Clé primaire : noSequence}noSequence : INTEGER{dateRetour >= datePrêt}dateRetour : DATEdatePrêt : DATEidUtilisateur : VARCHAR(10)idExemplaire : VARCHAR(10)

<<table>>

Exemplaire

{Clé primaire : idExemplaire}idExemplaire : VARCHAR(10)dateAchat : Datestatut : DomaineStatutISBN : CHAR(13)

<<table>>

MembreGénéral

{Clé primaire : noSequence}noSequencenbMaxPrêts : INTEGER = 5duréeMaxPrêts : INTEGER = 7

<<table>>

{statut = 'prêté' si et seulement si un PrêtEnCours fait référence à l'Exemplaire}

{Le nombre de PrêtEnCours d'un Membre <= nbMaxPrêts}

Utilisateur

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)motPasse : VARCHAR(10)nom : VARCHAR2(20)prénom : VARCHAR2(20)/ catégorieUtilisateur : DomaineCatégorieUtilisateur

<<table>>

Membre

{Clé primaire : idUtilisateur}idUtilisateur : VARCHAR(10)téléphoneRésidence : VARCHAR(15)

<<table>>

Page 53: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 53

3.4 Algèbre relationnelle

Opérations de manipulation de données

Entrée

– une table : opération unaire

– deux tables : opération binaire

Sortie

– une table

– permet la composition

Origine de SQL (« SQUARE de IBM, San Jose »)

Page 54: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 54

3.4.1 Sélection ()Table Article

noArticle description prixUnitaire quantitéEnStock10 Cèdre en boule 10.99 1020 Sapin 12.99 1040 Epinette bleue 25.99 1050 Chêne 22.99 1060 Erable argenté 15.99 1070 Herbe à puce 10.99 1080 Poirier 26.99 1081 Catalpa 25.99 1090 Pommier 25.99 1095 Génévrier 15.99 10

noArticle description prixUnitaire quantitéEnStock60 Erable argenté 15.99 1070 Herbe à puce 10.99 1095 Génévrier 15.99 10

prixUnitaire < 20.00 ET noArticle > 30 (Article)

Page 55: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 55

3.4.2 Projection ()

noClient, dateCommande (Commande)

Table CommandenoCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

noClient dateCommande10 01/06/200020 02/06/200010 02/06/200010 05/07/200030 09/07/200020 09/07/200040 15/07/2000

Page 56: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 56

3.4.3 Expressions complexes

noClient, dateCommande ( dateCommande > 05/07/2000 Commande)

Table CommandenoCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

noCommande dateCommande noClient5 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

dateCommande > 05/07/2000 Commande

noClient dateCommande30 09/07/200020 09/07/200040 15/07/2000

Page 57: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 57

3.4.4 Produit cartésien ()

Table CommandenoCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Client Commande

Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient10 Luc Sansom (999)999-9999 1 01/06/2000 1010 Luc Sansom (999)999-9999 2 02/06/2000 2010 Luc Sansom (999)999-9999 3 02/06/2000 1010 Luc Sansom (999)999-9999 4 05/07/2000 1010 Luc Sansom (999)999-9999 5 09/07/2000 3010 Luc Sansom (999)999-9999 6 09/07/2000 2010 Luc Sansom (999)999-9999 7 15/07/2000 4010 Luc Sansom (999)999-9999 8 15/07/2000 4020 Dollard Tremblay (888)888-8888 1 01/06/2000 1020 Dollard Tremblay (888)888-8888 2 02/06/2000 2020 Dollard Tremblay (888)888-8888 3 02/06/2000 10… … … … … …

...

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 58: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 58

Exemple. Produire les informations au sujet des Clients et de leurs CommandesClient Commande

Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient10 Luc Sansom (999)999-9999 1 01/06/2000 1010 Luc Sansom (999)999-9999 2 02/06/2000 2010 Luc Sansom (999)999-9999 3 02/06/2000 1010 Luc Sansom (999)999-9999 4 05/07/2000 1010 Luc Sansom (999)999-9999 5 09/07/2000 3010 Luc Sansom (999)999-9999 6 09/07/2000 2010 Luc Sansom (999)999-9999 7 15/07/2000 4010 Luc Sansom (999)999-9999 8 15/07/2000 4020 Dollard Tremblay (888)888-8888 1 01/06/2000 1020 Dollard Tremblay (888)888-8888 2 02/06/2000 2020 Dollard Tremblay (888)888-8888 3 02/06/2000 10… … … … … …

Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient10 Luc Sansom (999)999-9999 1 01/06/2000 1010 Luc Sansom (999)999-9999 3 02/06/2000 1010 Luc Sansom (999)999-9999 4 05/07/2000 1020 Dollard Tremblay (888)888-8888 2 02/06/2000 2020 Dollard Tremblay (888)888-8888 6 09/07/2000 2030 Lin Bô (777)777-7777 5 09/07/2000 3040 Jean Leconte (666)666-6666 7 15/07/2000 4040 Jean Leconte (666)666-6666 8 15/07/2000 40

clé primaire = clé étrangère

Client.noClient = Commande.noClient (Client Commande)

Page 59: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 59

Exemple. Produire les informations au sujet des Clients et de leurs Commandes Client.noClient = Commande.noClient (Client Commande)Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient10 Luc Sansom (999)999-9999 1 01/06/2000 1010 Luc Sansom (999)999-9999 3 02/06/2000 1010 Luc Sansom (999)999-9999 4 05/07/2000 1020 Dollard Tremblay (888)888-8888 2 02/06/2000 2020 Dollard Tremblay (888)888-8888 6 09/07/2000 2030 Ye San Le Sou (777)777-7777 5 09/07/2000 3040 Jean Leconte (666)666-6666 7 15/07/2000 4040 Jean Leconte (666)666-6666 8 15/07/2000 40

Client.noClient, nomClient, noTéléphone, noCommande,

dateCommande (…))

Colonne redondante

Client.noClient nomClient noTéléphone noCommande dateCommande10 Luc Sansom (999)999-9999 1 01/06/200010 Luc Sansom (999)999-9999 3 02/06/200010 Luc Sansom (999)999-9999 4 05/07/200020 Dollard Tremblay (888)888-8888 2 02/06/200020 Dollard Tremblay (888)888-8888 6 09/07/200030 Ye San Le Sou (777)777-7777 5 09/07/200040 Jean Leconte (666)666-6666 7 15/07/200040 Jean Leconte (666)666-6666 8 15/07/2000

Page 60: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 60

3.4.5 Jointure naturelle ()

noClient nomClient noTéléphone noCommande dateCommande10 Luc Sansom (999)999-9999 1 01/06/200010 Luc Sansom (999)999-9999 3 02/06/200010 Luc Sansom (999)999-9999 4 05/07/200020 Dollard Tremblay (888)888-8888 2 02/06/200020 Dollard Tremblay (888)888-8888 6 09/07/200030 Lin Bô (777)777-7777 5 09/07/200040 Jean Leconte (666)666-6666 7 15/07/200040 Jean Leconte (666)666-6666 8 15/07/2000

Table CommandenoCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Client Commande

Colonnes communes : colonnes de jointure ou clé de jointure

Schéma : union des colonnes

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 61: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 61

Sélectionner les nomClient qui ont commandé au moins un plant d'herbe à puce

Commande

{Clé primaire : noCommande}noCommande : INTEGERdateCommande : DATEnoClient : INTEGER

<<Table>>

Client

{Clé primaire : noClient}noClient : INTEGERnomClient : VARCHARnoTéléphone : VARCHAR

<<Table>>

LigneCommande

{Clé primaire : noCommande, noArticle}noCommande : INTEGERnoArticle : INTEGERquantité : INTEGER

<<Table>>

Article

{Clé primaire : noArticle}noArticle : INTEGERdescription : VARCHARprixUnitaire : DECIMALquantitéEnStock : INTEGER

<<Table>>

Livraison

{Clé primaire : noLivraison}noLivraison : INTEGERdateLivraison : DATE

<<Table>> DétailLivraison

{Clé primaire : noLivraison, noCommande, noArticle}noLivraison : INTEGERnoCommande : INTEGERnoArticle : INTEGERquantitéLivrée : INTEGER

<<Table>>

Page 62: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 62

Sélectionner les nomClient qui ont commandé au moins un plant d'herbe à puce

Commande

{Clé primaire : noCommande}noCommande : INTEGERdateCommande : DATEnoClient : INTEGER

<<Table>>

Client

{Clé primaire : noClient}noClient : INTEGERnomClient : VARCHARnoTéléphone : VARCHAR

<<Table>>

LigneCommande

{Clé primaire : noCommande, noArticle}noCommande : INTEGERnoArticle : INTEGERquantité : INTEGER

<<Table>>

Article

{Clé primaire : noArticle}noArticle : INTEGERdescription : VARCHARprixUnitaire : DECIMALquantitéEnStock : INTEGER

<<Table>>

Livraison

{Clé primaire : noLivraison}noLivraison : INTEGERdateLivraison : DATE

<<Table>> DétailLivraison

{Clé primaire : noLivraison, noCommande, noArticle}noLivraison : INTEGERnoCommande : INTEGERnoArticle : INTEGERquantitéLivrée : INTEGER

<<Table>>

nomClient ( description = “Herbe à puce ”

(Client Commande LigneCommande Article))

Page 63: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 63

Formulations équivalentes

nomClient ( description = “Herbe à puce ” (Client Commande LigneCommande Article))

nomClient ( description = “Herbe à puce ” (((Client Commande) LigneCommande) Article))

nomClient ( description = “Herbe à puce ” (((Client LigneCommande) Commande) Article))

Page 64: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 64

Quelques règles d ’équivalence

Eclatement d'une sélection conjonctive (SE)– e1 ET e2 (T) = e1 ( e2 (T))

Commutativité de la sélection (SC) e1 ( e2 (T)) = e2 ( e1 (T))

Elimination des projections en cascades (PE) liste1 ( liste2 (T)) = liste1 (T)

Commutativité de la jointure (JC)– T1 T2 = T1 T2

Associativité de la jointure (JA)– T1 (T2 T3) = (T1 T2) T3

Voir évaluation des requêtes

Page 65: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 65

Représentation sous forme d ’arbre de l ’expression algébrique

nomClient ( description = “Herbe à puce ” (((Client Commande) LigneCommande) Article))

Client Commande

LigneCommande

Article

description = «Herbe à puce»

nomClient

Page 66: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 66

Cas d ’une clé de jointure composée

LigneCommande DétailLivraison

Table LigneCommandenoCommande noArticle quantité1 10 101 70 51 90 12 40 22 95 33 20 14 40 14 50 15 70 35 10 55 20 56 10 56 40 17 50 17 95 28 20 3

Table DétailLivraisonnoLivraison noCommande noArticle quantitéLivrée100 1 10 7100 1 70 5101 1 10 3102 2 40 2102 2 95 1100 3 20 1103 1 90 1104 4 40 1105 5 70 2

noCommande noArticle quantité noLivraison quantitéLivrée1 10 10 100 71 10 10 101 31 70 5 100 51 90 1 103 12 40 2 102 22 95 3 102 13 20 1 100 14 40 1 104 15 70 3 105 2

Page 67: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 67

3.4.6 Opération renommer ()

Quels sont les Clients qui ont le même numéro de

téléphone?

Client2 (Client)

Client.noClient, Client2.noClient, ( Client.noTéléphone = Client2.noTéléphone (Client Client2 (Client)))

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Table Client2noClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Client. noClient Client2.noClient40 6060 4010 1020 2030 3040 4050 5060 6070 7080 80

Page 68: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 68

Renommer les colonnes

Quels sont les Clients qui ont le même numéro de

téléphone?

Client2(noClient2, nomClient2,

noTéléphone) (Client) noClient, noClient2 (Client Client2(noClient2, nomClient2,

noTéléphone) (Client))

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Table Client2noClient2 nomClient2 noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

noClient noClient240 6060 4010 1020 20… …

Page 69: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 69

3.4.7 Jointure-Table Commande altérée

noCommande dateCommande numéroClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

noClient nomClient noTéléphone noCommande dateCommande numéroClient10 Luc Sansom (999)999-9999 1 01/06/2000 1010 Luc Sansom (999)999-9999 3 02/06/2000 1010 Luc Sansom (999)999-9999 4 05/07/2000 1020 Dollard Tremblay (888)888-8888 2 02/06/2000 2020 Dollard Tremblay (888)888-8888 6 09/07/2000 2030 Ye San Le Sou (777)777-7777 5 09/07/2000 3040 Jean Leconte (666)666-6666 7 15/07/2000 4040 Jean Leconte (666)666-6666 8 15/07/2000 40

Client noClient = numéroClient Commande altérée =

noClient = numéroClient (Client Commande altérée)

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 70: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 70

Cherchez les LigneCommandes qui ont été livrées en une seule livraison

LigneCommande.noCommande,

LigneCommande.noArtilce, quantité, noLivraison,

quantitéLivrée (LigneCommande

LigneCommande.noCommande =

DétailLivraison.noCommande ET

LigneCommande.noArticle = DétailLivraison.noArticle ET

quantité = quantitéLivrée DétailLivraison)

Table LigneCommandenoCommande noArticle quantité1 10 101 70 51 90 12 40 22 95 33 20 14 40 14 50 15 70 35 10 55 20 56 10 56 40 17 50 17 95 28 20 3

Table DétailLivraisonnoLivraison noCommande noArticle quantitéLivrée100 1 10 7100 1 70 5101 1 10 3102 2 40 2102 2 95 1100 3 20 1103 1 90 1104 4 40 1105 5 70 2

noCommande noArticle quantité noLivraison quantitéLivrée1 70 5 100 51 90 1 103 12 40 2 102 23 20 1 100 14 40 1 104 1

Page 71: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 71

3.4.8 Jointure externe

Inclure les « célibataires » La jointure externe à gauche

T1 = T2 (célibataires de T1 )

La jointure externe à droite

T1 = T2

La jointure externe pleine

T1 == T2

Page 72: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 72

Produire les informations au sujet des Clients et de leurs Commandes incluant les informations sur les Clients qui n’ont pas placé de Commande

Table CommandenoCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Client = Commande

noClient nomClient noTéléphone noCommande dateCommande10 Luc Sansom (999)999-9999 1 01/06/200010 Luc Sansom (999)999-9999 3 02/06/200010 Luc Sansom (999)999-9999 4 05/07/200020 Dollard Tremblay (888)888-8888 2 02/06/200020 Dollard Tremblay (888)888-8888 6 09/07/200030 Lin Bô (777)777-7777 5 09/07/200040 Jean Leconte (666)666-6666 7 15/07/200040 Jean Leconte (666)666-6666 8 15/07/200050 Hafedh Alaoui (555)555-5555 null null60 Marie Leconte (666)666-6666 null null70 Simon Lecoq (444)444-4419 null null80 Dollard Tremblay (333)333-3333 null null

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 73: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 73

3.4.9 Semi-jointure ()Table Commande

noCommande dateCommande noClient1 01/06/2000 102 02/06/2000 203 02/06/2000 104 05/07/2000 105 09/07/2000 306 09/07/2000 207 15/07/2000 408 15/07/2000 40

Client Commande

noClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-6666

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 74: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 74

3.4.10Opérations ensemblistes (,, -) Schémas compatibles

Table T1

A B1 12 2

Table T2

A B2 23 3

T1 T2

A B1 12 23 3

T1 T2

A B2 2

T1 - T2

A B1 1

T2 – T1

A B3 3

Page 75: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 75

Produire les noms et numéros de téléphone des Employés qui sont aussi des Clients de la pépinière

( nomPersonne, noTéléphone ( Client (noClient, nomPersonne, noTéléphone) (Client))) ( nomPersonne, noTéléphone ( Employé (codeEmployé, nomPersonne,

noTéléphone) (Employé)))

Table EmployécodeEmployé nomEmployé noTéléphoneCASD1 Dollard Tremblay (888)888-8888PIOY1 Yan Piochuneshot 911LAFH1 Yvan Lafleur (111)111-1111HASC1 Jean Leconte (666)666-6666

nomPersonne noTéléphoneDollard Tremblay (888)888-8888Jean Leconte (666)666-6666

équivalent à si compatibles

Table ClientnoClient nomClient noTéléphone10 Luc Sansom (999)999-999920 Dollard Tremblay (888)888-888830 Lin Bô (777)777-777740 Jean Leconte (666)666-666650 Hafedh Alaoui (555)555-555560 Marie Leconte (666)666-666670 Simon Lecoq (444)444-441980 Dollard Tremblay (333)333-3333

Page 76: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 76

3.4.11Division ()

A B– plus grande table C qui est telle que

B C A– ~ inverse du produit cartésien

T1 (X) T2 (Y) =– X-Y (T1) - (( X-Y (T1) T2 ) - T1)

Page 77: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 77

Quelles sont les noCommande des Commandes qui incluent tous les Articles dont le prixUnitaire est $10.99

noArticle1070

noArticle ( prixUnitaire = 10.99 (Article))noCommande noArticle

1 101 701 902 402 953 204 404 505 705 105 206 106 407 507 95

noCommande, noArticle (LigneCommande)

noCommande15

noCommande, noArticle (LigneCommande) noArticle ( prixUnitaire = 10.99 (Article))

Page 78: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 78

3.4.12 Ensemble minimal d'opérations de l'algèbre relationnelle

Sélection () Projection () Produit cartésien () Union () Différence (-) Renommage ()

Page 79: 21/05/2014© Robert Godin. Tous droits réservés.1 3Introduction au modèle relationnel 3.1Concepts de base n Domaine : ensemble de valeurs n Relation : ensemble

11/04/23 © Robert Godin. Tous droits réservés. 79

3.4.13 Extensions de l'algèbre relationnelle pour les bases de données

Fonctions sur colonnes– opérations arithmétiques (+, - , *, /,…)– manipulation de chaînes (concaténation,

…)– ...

Fonctions de groupe (ou d'agrégat)– e.g. total, moyenne, écart-type, min, max,…

Récursivité– e.g. fermeture transitive