Dans cette activité, nous vous proposons une série de questions. Le questionnaire vous permettra de consolider vos connaissances et de revenir, au besoin, sur certains passages du texte de référence que vous avez étudié au cours de l’activité précédente.
Répondez aux questions et analysez attentivement vos réponses en vous demandant : « Quels sont les arguments qui font que cette réponse pourrait être la bonne ? » et « Quels sont les arguments qui font que cette réponse pourrait être une mauvaise réponse ? »
Vérifiez votre réponse en cliquant sur le bouton Solution. Pour chaque question, la réponse et une explication sont fournies.
Terminez le travail avec l’activité d’auto-évaluation suivante.
Activité d’auto-évaluation
Pour vous préparer au travail noté, faites l’activité qui suit.
Soit le schéma relationnel suivant :
Professeur (identifiant du professeur, nom, adresse, salaire,bâtiment où est le bureau)
Cours (sigle du cours, identifiant du professeur, numéro de la salle de cours, début du cours, fin du cours)
Salle de cours (numéro de la salle de cours, capacité du local, bâtiment)
Q1. Afin d’assurer l’unicité des tuples de chaque entité, quels attributs pourraient constituer la clé primaire de chaque entité ?
identifiant du professeur, sigle du cours, numéro de la salle de cours.
Q2. Quels sont les professeurs gagnant plus de 80,000$ ?
RESTRICT(Professeur,salaire>80000)
Q3. Quels sont les professeurs donnant des cours dans le même bâtiment où est leur bureau ?
R1=JOIN(Professeur,Salle de cours)
R2=JOIN(R1,Cours)
R3=RESTRICT(R2,bâtiment où est le bureau=bâtiment)
PROJECT(R3,identifiant du professeur, nom)
Il y a d’autres formulations acceptables, comme par exemple :
R1 = JOIN (Professeur, Cours, Salle de cours)
R2 = RESTRICT (R1, bâtiment = bâtiment où est le bureau)
PROJECT (R2, nom)
Q4. Quels sont les professeurs ne donnant que des cours dans le même bâtiment où est leur bureau ?
R1=JOIN(Professeur,Salle de cours)
R2=JOIN(R1,Cours)
R3=RESTRICT(R2,bâtiment où est le bureau<>bâtiment)
R4=PROJECT(R3,identifiant du professeur, nom)
R5=PROJECT(R2,identifiant du professeur, nom)
DIFFERENCE(R5,R4)
On peut accepter d’autres formulations comme celle-ci :
R1 = JOIN (Professeur, Cours, Salle de cours)
R2 = RESTRICT (R1, bâtiment = bâtiment où est le bureau)
R3 = PROJECT (R2, nom)
R4 = RESTRICT (R1, bâtiment ≠ bâtiment où est le bureau)
R5 = PROJECT (R4, nom)
RESULTAT = MINUS (R2 - R4)
Q5. Quels sont les professeurs donnant un cours avant 9h00 ?
R1=JOIN(Professeur,Cours)
R2=RESTRICT(R1,début du cours<9h00)
PROJECT(R2,identifiant du professeur, nom)
Q6. Identifiez au moins deux clés de l’entité Professeur.
Tout ensemble d’attributs contenant l’identifiant du professeur est une clé. On pourrait donc utiliser les clés suivantes :
identifiant du professeur , nom, adresse, salaire
identifiant du professeur , nom
identifiant du professeur , nom, adresse
...
Q7. Identifiez une clé étrangère dans le schéma.
L’attribut numéro de la salle de cours de l’entité cours est une clé étrangère.
Q8. Est-ce qu’une entité doit absolument contenir une clé étrangère ?
Non.
Q9. Est-ce qu’une entité doit absolument contenir une clé ?
Non.
Q10. Est-ce qu’une clé étrangère d’une entité doit absolument être une clé primaire d’une autre entité ?
Non. Il faut que ça soit une clé d’une autre entité, mais pas nécessairement une clé primaire. Par contre, dans la pratique, c’est souvent le cas qu’un clé étrangère est une clé primaire d’une autre entité.
Q11. Quels sont les professeurs qui enseignent plus de 3 cours ?
R1=JOIN(cours, professeur)
R2=AGREGAT(R1,identifiant du professeur,nom,compte(sigle du cours) )
R3=RESTRICT(R2,sigle du cours>3)
PROJECT(R3,identifiant du professeur,nom)
Q12. Quels sont les professeurs qui enseignent plus de 5 cours ou moins de 3 cours ?
R1=JOIN(cours, professeur)
R2=AGREGAT(R1,identifiant du professeur,nom,compte(sigle du cours) )
R3=RESTRICT(R2,sigle du cours>5)
R4=RESTRICT(R2,sigle du cours<3)
R5=PROJECT(R3,identifiant du professeur,nom)
R6=PROJECT(R4,identifiant du professeur,nom)
UNION(R5,R6)
Q13. Quels sont les professeurs qui enseignent plus de 5 cours et qui enseignent le cours INF 1250 ?
R1=JOIN(cours, professeur)
R2=AGREGAT(R1, identifiant du professeur,nom,compte(sigle du cours) )
R3=RESTRICT(R2, compte(sigle du cours)>5)
R4=RESTRICT(R3, sigle du cours = INF 1250)
PROJECT(R4, identifiant du professeur,nom)
Q14. Quels sont les professeurs qui enseignent plus de 5 cours et un nombre pair de cours ?
R1=JOIN(cours, professeur)
R2=AGREGAT(R1,identifiant du professeur,nom,compte(sigle du cours) )
R3=RESTRICT(R2,COMPTE(sigle du cours)>5)
R4=RESTRICT(R2,COMPTE(sigle du cours) est pair)
R5=PROJECT(R3,identifiant du professeur,nom)
R6=PROJECT(R4,identifiant du professeur,nom)
INTERSECTION(R5,R6)
Q15. Soient les tuples suivants :
R1 :
Jean
plombier
Pierre
électricien
R2 :
Jeanne
policière
Élodie
ingénieure
Qu’est-ce que union(R1,R2) ? Qu’est-ce intersection(R1,R2) ? Qu’est-ce que difference (R1,R2) ?
union(R1,R2) :
Jean
plombier
Pierre
électricien
Jeanne
policière
Élodie
ingénieure
intersection(R1,R2) : l’ensemble vide
difference (R1,R2) :
Jean
plombier
Pierre
électricien
Q16. Écrivez une requête qui donne la chaîne de caractère « vide » s’il n’y a rien dans R et « non vide » s’il y a quelque chose.