Modèle logique (schéma relationnel)

19
2016-01-18 1 Séance de cours 3 TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 1 Comprendre les étapes de transformation du modèle conceptuel en un modèle logique (ou modèle relationnel) de données. Étudier l’algèbre relationnelle permettant d’introduire les notions de base de la manipulation de données dans un monde relationnel. TCH054 Bases de données © Lévis Thériault, Hiver 2016. 2 Transformer le modèle conceptuel en un modèle logique (Étape 2) Étudier l’algèbre relationnelle pour manipuler les données relationnelles TCH054 Bases de données © Lévis Thériault, Hiver 2016. 3

Transcript of Modèle logique (schéma relationnel)

Page 1: Modèle logique (schéma relationnel)

2016-01-18

1

Séance de cours 3

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 1

Comprendre les étapes de transformation du modèle conceptuel en un modèle logique (ou modèle relationnel) de données.

Étudier l’algèbre relationnelle permettant d’introduire les notions de base de la manipulation de données dans un monde relationnel.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 2

Transformer le modèle conceptuel en un modèle logique (Étape 2)

Étudier l’algèbre relationnelle pour manipuler les données relationnelles

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 3

Page 2: Modèle logique (schéma relationnel)

2016-01-18

2

Transformer le modèle conceptuel en un modèle logique (Étape 2)

Étudier l’algèbre relationnelle pour manipuler les données relationnelles

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 4

Modèle conceptuel (Étape 1)

Modèle logique (Étape 2) Modèle physique (Étape 3)

EMPLOYÉ NoEmployé PrénomEmployé NomEmployé InitEmployé

1 Simon Le Doux SL

2 Mathieu Le Tendre ML

3 Olivier Le Dur OL

EMPLOYÉ

NoEmployé PrénomEmployé NomEmployé InitEmployé

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation est possédé par (0,N)

possède (0,N)

DateObtention Institution

EMPLOYÉ EMPLOYÉ_DIPLÔME

DIPLÔME NoEmployé PrénomEmployé NomEmployé InitEmployé

NoEmployé (FK) CodeDiplôme (FK) DateObtention Institution

CodeDiplôme NomDiplôme Spécialisation

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 5

Modèle logique Adapte le modèle conceptuel de données en

fonction du système de gestion de base de données (SGBD) choisi pour l’implémentation

Base de données relationnelle Contient plusieurs tables reliées entre elles par

des « clés primaires » et des « clés étrangères »

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 6

Page 3: Modèle logique (schéma relationnel)

2016-01-18

3

L’implémentation de la BD sera réalisée à l’aide d’un Système de Gestion de Base de Données (SGBD) relationnelles tel Oracle.

Une BD relationnelle utilise

uniquement des tables et des attributs pour stocker des données et implanter des règles d’affaires.

Table détail commande

Table produit Nous devons donc convertir le modèle

conceptuel entité-association en un modèle logique relationnel sans perdre d’informations

sur les règles d’affaires identifiées précédemment.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 7

NoProduit Description

NoFournisseur Adresse Tél. Ville

Table produit

Prix NoFournisseur (FK)

Je suis clé étrangère. Je suis noté par (FK)

Table fournisseur

Je suis clé primaire (PK) Je suis soulignée

Représente l’association entre la table Produit et la table Fournisseur

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 8

Dans le modèle logique relationnel: Règle 1: Tous les attributs doivent être atomiques

(pas composés) et simples (pas à valeurs multiples). Règle 2 : Toutes les associations sont 1:N ou 1:1 (pas

d’association N:N). Règle 3 : Pas d’attributs d’associations; les attributs

sont rattachés aux tables seulement. Règle 4 : Les clés primaires représentent les

identificateurs (un simple changement dans la terminologie).

Règle 5 : Les clés étrangères représentent les associations (il faut les ajouter).

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 9

Page 4: Modèle logique (schéma relationnel)

2016-01-18

4

Chaque attribut correspond à une colonne, il faut y mettre une information atomique Si un attribut peut être décomposée en un nombre fixe de

« colonnes », ça va ….on le décompose dans le nombre de colonnes nécessaires

Si un attribut a un nombre variable de valeurs, on ne peut le décomposer dans un nombre fixe de colonnes, il faudra créer une nouvelle table

Tous les attributs doivent être atomiques (pas composés) et simples (pas à valeurs multiples).

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 10

1. Décomposer les attributs composés en ses parties.

2. Chacune de ces parties devient un attribut.

EMPLOYÉ

NoEmployé NomEmployé Adresse Diplômes

NoEmployé NomEmployé Adresse Diplômes

100 Pierre Dion 123, rue Brébeuf,

Montréal, Québec,

A2B 3C4

BAA Finance,

MSc TI

200 Louis Cyr 1123, avenue

Désaulniers,

Montréal, Québec,

A2B 3C4

BSc Math,

MSc Physique,

PhD Finance

EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays Diplômes

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 11

1. Transformer l’attribut à valeurs multiples en une entité.

2. Créer une association N:N entre l’entité originale et l’entité représentant l’attribut à valeurs multiples.

3. Désigner un identificateur. 4. L’analyse est itérative. À ce

moment, nous remarquons qu’il manque des informations concernant cette association.

NoEmployé NomEmployé Adresse Diplômes

100 John Doe 123, rue Brébeuf,

Montréal, Québec,

A2B 3C4

BAA Finance,

MSc TI

200 Jane Smith 1123, avenue

Désaulniers,

Montréal, Québec,

A2B 3C4

BSc Math,

MSc Physique,

PhD Finance

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation

est possédé par (0,N)

possède (0,N)

DateObtention

Institution EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays Diplômes

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 12

Page 5: Modèle logique (schéma relationnel)

2016-01-18

5

Lorsque nous avons une association N:N, il est impossible de mettre dans les tables les informations contenues dans les associations sans créer une table supplémentaire.

Une association N:N devient une entité :

1. Nommer l’entité.

2. L’identificateur de la nouvelle entité est la combinaison des identificateurs de chaque entité de l'association.

3. Les attributs de l’association deviennent les attributs de la nouvelle entité.

4. La cardinalité (1,1) est assignée à la nouvelle entité et (0,N) ou (1,N) à l’entité déjà existante selon les cardinalités existantes.

Toutes les associations sont 1:N ou 1:1 (pas d’association N:N).

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 13

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation

PARCHEMIN

NoEmployé CodeDiplôme DateObtention Institution

est possédé par (1,1)

correspond à (1,1)

EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays

possède (0,N)

est imprimé sur (0,N)

1 : N

1 : N

EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation

DateObtention

Institution

possède (0,N)

est possédé par (0,N)

N : N

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 14

EMPLOYÉ

NoEmployé NomEmployé DateEmbauche

supervise (0,N)

est supervisé par (0,N) N : N

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 15

EMPLOYÉ

NomEmployé

DateEmbauche

NoEmployé

EMPLOYÉ

NoEmpl

SupNoEmpl

SUPERVISEUR

NoEmployé

NoEmployéSup

est supervisé par (0,N)

supervise (1,1)

1 : N

Page 6: Modèle logique (schéma relationnel)

2016-01-18

6

NoEmployé

10

11

12

NoEmployé NoEmployéSup

10 11

10 12

11 12

12 NULL

16

Table EMPLOYÉ Table SUPERVISEUR

Supposons les enregistrements suivants :

11 supervise l’employé #10 12 supervise l’employé #10 12 supervise l’employé #11

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 16

Les liens entre les tables doivent être contenus dans celles-ci d'une manière ou d’une autre

Pas d’attributs d’associations; les attributs sont rattachés aux tables seulement.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 17

Situation 1: Les attributs d’association proviennent d'une association N:N. Ils devraient donc apparaître dans la nouvelle

entité créée pour remplacer l’association N:N (voir règle 2).

Situation 2: Les attributs d’association

proviennent d'une association 1:N. Ils devraient apparaître dans l'entité du côté

plusieurs (N) de l'association.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 18

Page 7: Modèle logique (schéma relationnel)

2016-01-18

7

EMPLOYÉ

NoEmployé NomEmployé

PROJET

NoProjet NomProjet

Travaille sur (0,1)

Fait travailler (0,N)

HeuresTravaillées

1 : N

EMPLOYÉ

NoEmployé NomEmployé HeuresTravaillées

PROJET

NoProjet NomProjet

Travaille sur (0,1)

Fait travailler (0,N)

1 : N

côté N côté 1

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 19

Les clés primaires représentent les identificateurs (un simple changement dans la terminologie).

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 20

Les associations entre les entités doivent pouvoir être représentées dans les tables. Comment réussir à le faire ? Comment dire que l’enregistrement d’une table est lié à l’enregistrement d’une table ?

On le fait en introduisant la clé primaire d’un des deux enregistrements comme attribut de l’autre.

Exemple: pour dire qu’une commande est passée par un client, on copie le « NoClient » (clé primaire de la table Client) dans la table Commande (celui-ci devient la clé étrangère) dans la table Commande.

Les clés étrangères représentent les associations. Il faut les ajouter et mettre une flèche (la tête de flèche pointe du côté 1, soit du côté clé primaire) à la place des associations.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 21

Page 8: Modèle logique (schéma relationnel)

2016-01-18

8

CLIENT

NoClient

Prénom

Nom

COMMANDE

NoCommande

DateCommande

Place (0,N)

Est placée (1,1)

CLIENT

NoClient

Prénom

Nom

COMMANDE

NoCommande

DateCommande

NoClient (FK)

Un client peut placer plusieurs commandes. On matérialise cette association en copiant la clé primaire se trouvant du côté 1 comme une clé étrangère du côté N.

1 : N

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 22

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation

PARCHEMIN

NoEmployé (FK) CodeDiplôme (FK) DateObtention Institution

EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays

DIPLÔME

CodeDiplôme NomDiplôme Spécialisation

DateObtention

Institution

possède (0,N)

est possédé par (0,N)

EMPLOYÉ

NoEmployé NomEmployé Numéro Rue Ville Province CodePostal Pays

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 23

EMPLOYÉ

NoEmployé NomEmployé DateEmbauche

supervise (0,N)

est supervisé par (0,1)

EMPLOYÉ

NoEmployé NomEmployé DateEmbauche NoEmployéSup (FK)

Dans une association récursive, nous devons

renommer la FK même si elle représente la même PK

puisque nous ne pouvons avoir deux attributs avec le

même nom.

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 24

Page 9: Modèle logique (schéma relationnel)

2016-01-18

9

COMMANDE

NoCommande DateCommande

CLIENT

NoClient NomClient AdresseClient

FOURNISSEUR NoFournisseur NomFournisseur AdresseFournisseur

PRODUIT CodeProduit Description PrixSuggéré

PrixDeVente Quantité

fournit (0,N)

est fourni par (1,1)

est inclu dans (0,N)

inclut (1,N)

est passée par (1,1)

passe (0,N)

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 25

COMMANDE

NoCommande DateCommande NoClient (FK)

CLIENT

NoClient NomClient No Rue Ville CodePostal Pays

FOURNISSEUR

NoFournisseur NomFournisseur No Rue Ville CodePostal Pays

PRODUIT CodeProduit Description PrixSuggéré NoFournisseur (FK)

COMMANDE_PRODUIT NoCommande (FK) CodeProduit (FK) PrixDeVente Quantité

TCH054 Bases de données © Lévis Thériault, Hiver 2016. 26

Transformer le modèle conceptuel en un modèle logique (Étape 2)

Étudier l’algèbre relationnelle pour manipuler les données relationnelles

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 27

Page 10: Modèle logique (schéma relationnel)

2016-01-18

10

Domaine : ensemble de valeurs définies par son type de données Relation : ensemble de n-uplets (tuples)

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 28

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

ligne /

tuple

colonne /

attribut

table /

relation

Champ

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 »)

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 29

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

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 30

Page 11: Modèle logique (schéma relationnel)

2016-01-18

11

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 31

Table Article

noArticle description prixUnitaire quantitéEnStock

10 Cèdre en boule 10.99 10

20 Sapin 12.99 10

40 Epinette bleue 25.99 10

50 Chêne 22.99 10

60 Erable argenté 15.99 10

70 Herbe à puce 10.99 10

80 Poirier 26.99 10

81 Catalpa 25.99 10

90 Pommier 25.99 10

95 Génévrier 15.99 10

noArticle description prixUnitaire quantitéEnStock

60 Erable argenté 15.99 10

70 Herbe à puce 10.99 10

95 Génévrier 15.99 10

prixUnitaire < 20.00 ET noArticle > 30 (Article)

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 32

noClient, dateCommande (Commande)

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

noClient dateCommande

10 01/06/2000

20 02/06/2000

10 02/06/2000

10 05/07/2000

30 09/07/2000

20 09/07/2000

40 15/07/2000

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 33

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

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

noCommande dateCommande noClient

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

dateCommande > 05/07/2000 Commande

noClient dateCommande

30 09/07/2000

20 09/07/2000

40 15/07/2000

Page 12: Modèle logique (schéma relationnel)

2016-01-18

12

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 34

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

Client Commande

Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient

10 Luc Sansom (999)999-9999 1 01/06/2000 10

10 Luc Sansom (999)999-9999 2 02/06/2000 20

10 Luc Sansom (999)999-9999 3 02/06/2000 10

10 Luc Sansom (999)999-9999 4 05/07/2000 10

10 Luc Sansom (999)999-9999 5 09/07/2000 30

10 Luc Sansom (999)999-9999 6 09/07/2000 20

10 Luc Sansom (999)999-9999 7 15/07/2000 40

10 Luc Sansom (999)999-9999 8 15/07/2000 40

20 Dollard Tremblay (888)888-8888 1 01/06/2000 10

20 Dollard Tremblay (888)888-8888 2 02/06/2000 20

20 Dollard Tremblay (888)888-8888 3 02/06/2000 10

… … … … … …

...

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 35

Client Commande Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient

10 Luc Sansom (999)999-9999 1 01/06/2000 10

10 Luc Sansom (999)999-9999 2 02/06/2000 20

10 Luc Sansom (999)999-9999 3 02/06/2000 10

10 Luc Sansom (999)999-9999 4 05/07/2000 10

10 Luc Sansom (999)999-9999 5 09/07/2000 30

10 Luc Sansom (999)999-9999 6 09/07/2000 20

10 Luc Sansom (999)999-9999 7 15/07/2000 40

10 Luc Sansom (999)999-9999 8 15/07/2000 40

20 Dollard Tremblay (888)888-8888 1 01/06/2000 10

20 Dollard Tremblay (888)888-8888 2 02/06/2000 20

20 Dollard Tremblay (888)888-8888 3 02/06/2000 10

… … … … … …

Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient

10 Luc Sansom (999)999-9999 1 01/06/2000 10

10 Luc Sansom (999)999-9999 3 02/06/2000 10

10 Luc Sansom (999)999-9999 4 05/07/2000 10

20 Dollard Tremblay (888)888-8888 2 02/06/2000 20

20 Dollard Tremblay (888)888-8888 6 09/07/2000 20

30 Lin Bô (777)777-7777 5 09/07/2000 30

40 Jean Leconte (666)666-6666 7 15/07/2000 40

40 Jean Leconte (666)666-6666 8 15/07/2000 40

clé primaire = clé étrangère

Client.noClient = Commande.noClient (Client Commande)

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 36

Client.noClient = Commande.noClient (Client Commande)Client.noClient nomClient noTéléphone noCommande dateCommande Commande. noClient

10 Luc Sansom (999)999-9999 1 01/06/2000 10

10 Luc Sansom (999)999-9999 3 02/06/2000 10

10 Luc Sansom (999)999-9999 4 05/07/2000 10

20 Dollard Tremblay (888)888-8888 2 02/06/2000 20

20 Dollard Tremblay (888)888-8888 6 09/07/2000 20

30 Ye San Le Sou (777)777-7777 5 09/07/2000 30

40 Jean Leconte (666)666-6666 7 15/07/2000 40

40 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 dateCommande

10 Luc Sansom (999)999-9999 1 01/06/2000

10 Luc Sansom (999)999-9999 3 02/06/2000

10 Luc Sansom (999)999-9999 4 05/07/2000

20 Dollard Tremblay (888)888-8888 2 02/06/2000

20 Dollard Tremblay (888)888-8888 6 09/07/2000

30 Ye San Le Sou (777)777-7777 5 09/07/2000

40 Jean Leconte (666)666-6666 7 15/07/2000

40 Jean Leconte (666)666-6666 8 15/07/2000

Page 13: Modèle logique (schéma relationnel)

2016-01-18

13

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 37

noClient nomClient noTéléphone noCommande dateCommande

10 Luc Sansom (999)999-9999 1 01/06/2000

10 Luc Sansom (999)999-9999 3 02/06/2000

10 Luc Sansom (999)999-9999 4 05/07/2000

20 Dollard Tremblay (888)888-8888 2 02/06/2000

20 Dollard Tremblay (888)888-8888 6 09/07/2000

30 Lin Bô (777)777-7777 5 09/07/2000

40 Jean Leconte (666)666-6666 7 15/07/2000

40 Jean Leconte (666)666-6666 8 15/07/2000

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

Client Commande

Colonnes communes : colonnes de jointure ou clé de jointure

Schéma : union des colonnes

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 38

COMMANDE

NoCommande DateCommande NoClient (FK)

CLIENT

NoClient NomClient NoTéléphone

ARTICLE NoArticle Description PrixUnitaire

LIGNECOMMANDE NoCommande (FK) NoArticle (FK) Quantité

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 39

nomClient ( description = “Herbe à puce ”

(Client Commande LigneCommande Article))

COMMANDE

NoCommande DateCommande NoClient (FK)

CLIENT

NoClient NomClient NoTéléphone

ARTICLE NoArticle Description PrixUnitaire

LIGNECOMMANDE NoCommande (FK) NoArticle (FK) Quantité

Page 14: Modèle logique (schéma relationnel)

2016-01-18

14

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

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

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

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 40

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 = T2 T1

Associativité de la jointure (JA)

T1 (T2 T3) = (T1 T2) T3

Voir évaluation des requêtes

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 41

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

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 42

Client Commande

LigneCommande

Article

description = «Herbe à puce»

nomClient

Page 15: Modèle logique (schéma relationnel)

2016-01-18

15

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 43

LigneCommande DétailLivraison

Table LigneCommande

noCommande noArticle quantité

1 10 10

1 70 5

1 90 1

2 40 2

2 95 3

3 20 1

4 40 1

4 50 1

5 70 3

5 10 5

5 20 5

6 10 5

6 40 1

7 50 1

7 95 2

8 20 3

Table DétailLivraison

noLivraison noCommande noArticle quantitéLivrée

100 1 10 7

100 1 70 5

101 1 10 3

102 2 40 2

102 2 95 1

100 3 20 1

103 1 90 1

104 4 40 1

105 5 70 2

noCommande noArticle quantité noLivraison quantitéLivrée

1 10 10 100 7

1 10 10 101 3

1 70 5 100 5

1 90 1 103 1

2 40 2 102 2

2 95 3 102 1

3 20 1 100 1

4 40 1 104 1

5 70 3 105 2

Quels sont les Clients qui ont le même numéro de téléphone?

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 44

Client2 (Client)

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

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

Table Client2

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

Client. noClient Client2.noClient

40 60

60 40

10 10

20 20

30 30

40 40

50 50

60 60

70 70

80 80

Quels sont les Clients qui ont le même numéro de téléphone?

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 45

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

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

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

Table Client2

noClient2 nomClient2 noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

noClient noClient2

40 60

60 40

10 10

20 20

… …

Page 16: Modèle logique (schéma relationnel)

2016-01-18

16

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 46

Table Commande altérée

noCommande dateCommande numéroClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

noClient nomClient noTéléphone noCommande dateCommande numéroClient

10 Luc Sansom (999)999-9999 1 01/06/2000 10

10 Luc Sansom (999)999-9999 3 02/06/2000 10

10 Luc Sansom (999)999-9999 4 05/07/2000 10

20 Dollard Tremblay (888)888-8888 2 02/06/2000 20

20 Dollard Tremblay (888)888-8888 6 09/07/2000 20

30 Ye San Le Sou (777)777-7777 5 09/07/2000 30

40 Jean Leconte (666)666-6666 7 15/07/2000 40

40 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 Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 47

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 LigneCommande

noCommande noArticle quantité

1 10 10

1 70 5

1 90 1

2 40 2

2 95 3

3 20 1

4 40 1

4 50 1

5 70 3

5 10 5

5 20 5

6 10 5

6 40 1

7 50 1

7 95 2

8 20 3

Table DétailLivraison

noLivraison noCommande noArticle quantitéLivrée

100 1 10 7

100 1 70 5

101 1 10 3

102 2 40 2

102 2 95 1

100 3 20 1

103 1 90 1

104 4 40 1

105 5 70 2

noCommande noArticle quantité noLivraison quantitéLivrée

1 70 5 100 5

1 90 1 103 1

2 40 2 102 2

3 20 1 100 1

4 40 1 104 1

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

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 48

Page 17: Modèle logique (schéma relationnel)

2016-01-18

17

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 49

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

Client = Commande

noClient nomClient noTéléphone noCommande dateCommande

10 Luc Sansom (999)999-9999 1 01/06/2000

10 Luc Sansom (999)999-9999 3 02/06/2000

10 Luc Sansom (999)999-9999 4 05/07/2000

20 Dollard Tremblay (888)888-8888 2 02/06/2000

20 Dollard Tremblay (888)888-8888 6 09/07/2000

30 Lin Bô (777)777-7777 5 09/07/2000

40 Jean Leconte (666)666-6666 7 15/07/2000

40 Jean Leconte (666)666-6666 8 15/07/2000

50 Hafedh Alaoui (555)555-5555 null null

60 Marie Leconte (666)666-6666 null null

70 Simon Lecoq (444)444-4419 null null

80 Dollard Tremblay (333)333-3333 null null

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 50

Table Commande

noCommande dateCommande noClient

1 01/06/2000 10

2 02/06/2000 20

3 02/06/2000 10

4 05/07/2000 10

5 09/07/2000 30

6 09/07/2000 20

7 15/07/2000 40

8 15/07/2000 40

Client Commande

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

Schémas compatibles

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 51

Table T1

A B

1 1

2 2

Table T2

A B

2 2

3 3

T1 T2

A B

1 1

2 2

3 3

T1 T2

A B

2 2

T1 - T2

A B

1 1

T2 – T1

A B

3 3

Page 18: Modèle logique (schéma relationnel)

2016-01-18

18

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 52

( 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éphone

CASD1 Dollard Tremblay (888)888-8888

PIOY1 Yan Piochuneshot 911

LAFH1 Yvan Lafleur (111)111-1111

HASC1 Jean Leconte (666)666-6666

nomPersonne noTéléphone

Dollard Tremblay (888)888-8888

Jean Leconte (666)666-6666

équivalent à si

compatibles

Table Client

noClient nomClient noTéléphone

10 Luc Sansom (999)999-9999

20 Dollard Tremblay (888)888-8888

30 Lin Bô (777)777-7777

40 Jean Leconte (666)666-6666

50 Hafedh Alaoui (555)555-5555

60 Marie Leconte (666)666-6666

70 Simon Lecoq (444)444-4419

80 Dollard Tremblay (333)333-3333

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

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 53

Fonctions sur colonnes

opérations arithmétiques (+, - , *, /,…)

manipulation de chaînes (concaténation, …)

...

Fonctions de groupe (ou d'agrégat)

ex. total, moyenne, écart-type, min, max,…

Récursivité

ex. fermeture transitive

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 54

Page 19: Modèle logique (schéma relationnel)

2016-01-18

19

Rivard, S. (2013). Le développement de systèmes d’information: une méthode intégrée à la transformation des processus. 4ième édition, Québec, Québec: Presses de l’Université du Québec, Annexe 9.

Pépin, L. (2013). Système d’information en gestion. Notes de cours. HEC Montréal, Montréal, Québec.

Godin, R. (2012). Systèmes de gestion de bases de données par l’exemple. 3ième édition, Montréal, Canada: Loze‐Dion, Chapitre 3.

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 55

Implémenter le modèle logique en un modèle physique à l’aide du langage SQL (Étape 3)

TCH054 Bases de données © Robert Godin, Lévis Thériault, Hiver 2016. 56