Exercice N°2 Série de TD N°3 Et Exercice N°1 Série de TD N°4

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 6

Exercice N°2 Série de TD N°3 et Exercice N°1 Série de TD N°4

On considère le schéma relationnel de la base « BD_Bibliothèque » :


PERSONNES (numPers, nomPers, préPers, âge, numSS, ville).
FILIÈRES (codeFilière, nomFilière).
OUVRAGES (codeOuv, titreOuv, année, prix, Filière #).
ÉCRIRE (Auteur #, Ouvrage #, position).
EMPRUNTS (Lecteur #, Ouvrage #, dateEmprunt, dateRetour).

Écrire en algèbre relationnelle puis en SQL les requêtes suivantes

1. Retourner les ouvrages dont l’année est supérieure à 2014


AR :
Ϭannee >2014 (ouvrages)

SQL :
Select * from ouvrages where annee >2014
Select(SQL) : π (projection de l’AR)
Where (SQL) : ϭ (selection de l’AR)

2. Afficher les personnes (numéro, nom, âge et ville) habitant la ville d’« Alger » ou dont l’âge est
supérieur à 40 ans.
AR :
π numPers, nomPers, âge, ville [ ϭville=’Alger’ (personnes) ∪ ϭage>40 (personnes)]

π numPers, nomPers, âge, ville [ ϭville=’Alger’ ou age>40 (personnes)]

π numPers, nomPers, âge, ville [ ϭville=’Alger’ (personnes)] ∪ π numPers, nomPers, âge, ville [ ϭ age>40 (personnes)]

SQL :
Select numPers, nomPers, âge, ville
From personnes
Where ville=’Alger’ OR age>40

Select numPers, nomPers, âge, ville


From personnes
Where ville=’Alger’ or numPers in
(
Select numPers
From personnes
age>40
)
3. Trouver les ouvrages (code, titre et année) qui ont été empruntés au moins une fois.
AR :
π codeOuv, titreOuv, année [ emprunt ⋈ ouvrages]
ϴ
ϴ : ouvrage =codeouv
SQL :
Select codeOuv, titreOuv, année
From emprunt e, ouvrages o
Where e. ouvrage=o.codouv
------------------------------------------------
Select codeOuv, titreOuv, année
From ouvrages
Where codouv in
(
Select ouvrage
From emprunt
)

4. Les ouvrages (titres) qui ont été empruntés en 2019 ?


AR :
π titreOuv [ ϭ dateEmprunt>= ‘01/01/2019’ and dateEmprunt <= ‘31/12/2019’ (emprunt) ⋈ ouvrages]
ϴ
ϴ : ouvrage =codeouv

SQL :
Select titreOuv
From emprunt e, ouvrages o
Where e. ouvrage=o.codouv and dateEmprunt>= ‘01/01/2019’ and dateEmprunt <= ‘31/12/2019’
------------------------------------------------
Select titreOuv
From ouvrages
Where codouv in
(
Select ouvrage
From emprunt where dateEmprunt>= ‘01/01/2019’ and dateEmprunt <= ‘31/12/2019’
)

5. Les codes et les titres des ouvrages de la filière « Info » et dont le prix n’excède pas 50 Euros.

AR :
Π codeOuv, titreOuv [ ϭnomfiliere= ‘Info’ (filieres) ⋈ ϭprix<50 (ouvrages)]
ϴ
ϴ = filieres.codeFilière= ouvrages.filière
SQL :

Select codeOuv, titreOuv


From ouvrages
Where prix<50 and filiere in
(
Select codefiliere
From filieres
Where nomFilière = ‘Info’
)
6. Les titres des ouvrages écrits par «Cushman Pauline».

Π titreouv [ (ouvrage ⋈ ecrire ) ⋈ ϭnompers=’Cushman’and prepers=’pauline’ (personnes)]


ϴ1 ϴ2
ϴ1 : ecrire.ouvrage=ouvrages.codeouv
ϴ2 : personnes.numpers= ecrire.auteur

SQL :
Select titreouv
From ouvrages
Where codeouv in
(
Select ouvrage
From ecrire
Where auteur in
(
Select numpers
From personnes
Where nompers=’Cushman’and prepers=’pauline’
)
)

7. Les noms et prénoms des lecteurs.


AR :
Π nompers, prepers (personne ⋈ emprunt )
ϴ
ϴ : personne.numpers=emprunt.lecteur
SQL :
Select nompers, prepers
From personnes
Where numpers in
(
Select lecteur From emprunt
)
8. Les numéros et les noms des auteurs habitant la ville d’« Alger ».
AR :
Π numpers, nompers (ϭville=’Alger’ (personne) ⋈ ecrire )
ϴ
ϴ : personne.numpers=ecrire.auteur

SQL :
Select numpers, nompers
From personnes
Where numpers in
(
Select auteur From ecrire
)

9. Les auteurs (numéros et noms) qui sont également lecteurs.


AR :
Π numpers, nompers [personne ⋈ ( ecrire ⋈ emprunt ) ]
ϴ1 ϴ2
ϴ1 : personne.numpers=ecrire.auteur
ϴ2 : ecrire.auteur = emprunt.lecteur
SQL:
Select numpers, nompers
From personnes
Where numpers in
(
Select auteur
From ecrire
Where auteur in
(
Select lecteur From emprunt
)
)

10. Les auteurs (numéros, noms et âges) qui ne sont pas également lecteurs.
AR :
Π numpers, nompers, age [ personne ⋈ (Πnumpers (personne) - αlecteur :numpers(Πlecteur(emprunt)))]
SQL:
Select numpers, nompers , age
From personnes
Where numpers not in
(
Select lecteur from emprunt
)
11. Les personnes (numéros, noms et prénoms) habitant dans la même ville que la personne numéro «
N01 » ?
AR :
Π numpers, nompers, prepers [ personne ⋈ (Πville (ϭnumpers = ‘N01’ (personne))]
SQL :
Select numpers, nompers , prepers
From personnes
Where ville in
(
Select ville from peronnes where numpers=’N01’
)

12. Les informations (numéros, noms, prénoms) de l’auteur principal de chaque ouvrage de la filière «
Inf ».
AR :
Π numpers, nompers, prepers [ personne ⋈ (ϭposition = 1 (ecrire) ⋈ ( ouvrages ⋈ ϭnomfiliere=’Info’ (filieres)) )]
ϴ1 ϴ2 ϴ3
ϴ1 : numpers=auteur
ϴ2 :ouvrage=codeouv
ϴ3 : filiere=codefiliere

SQL :
Select numpers, nompers , prepers
From personnes
Where numpers in
(
Select auteur from ecrire where ouvrage in
(
Select codeouv from ouvrage where filiere in
(
Select codefiliere where nomfiliere = ‘Info’
)
)
)

13. Les personnes ayant emprunté tous les livres de la filière « Inf ».
AR :
Personnes ⋈ (Π lecteur, ouvrage (Emprunt ) /αcodeouv :ouvrage (Π codeouv(ouvrages ⋈ ϭnomfiliere=’Info’(filiere))) )
ϴ1 ϴ2
ϴ1 : numpers=lecteur
ϴ2 : filiere=codefiliere
SQL :

SELECT lecteur
FROM `emprunts`
WHERE ouvrage IN (

SELECT codeouv
FROM ouvrage
WHERE filiere IN (

SELECT codefiliere
FROM filiere
WHERE nomfiliere = 'Info'
)
)
GROUP BY lecteur
HAVING count(distinct ouvrage ) = ( // Nombre d’ouvrage de la filière ‘Info’

SELECT count(distinct codeouv )


FROM ouvrage
WHERE filiere IN (

SELECT codefiliere
FROM filiere
WHERE nomfiliere = 'Info'
)
)

14. Les livres empruntés par toutes les personnes


AR :
Ouvrages ⋈ ( Π ouvrage, lecteur (Emprunt ) /α
numpers:lecteur (Π numpers (personnes)))
ϴ
ϴ : codeouv=ouvrage

SQL :

SELECT ouvrage
FROM `emprunts`
GROUP BY ouvrage

Having count( DISTINCT lecteur )=

(
SELECT count( distinct numpers )
FROM `personne`

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy