Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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é
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
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
… …
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
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
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
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