You are on page 1of 25

PREREQUIS

La jointure va permettre lorsque cela est ncessaire de travailler sur une table qui regroupe les informations de plusieurs tables. Exemple jointure des 3 tables.

Si des valeurs nulles existent sur des attributs de jointures, une jointure externe (gauche ou droite) va tre utilise pour visualiser toutes les informations disponibles.

Pourquoi reprsenter l'information l'aide de plusieurs relations alors qu'elle peut tre reprsente comme ci-dessus ? -Anomalie de modification -Anomalie de suppression -Anomalie d'insertion

EXERCICE 1 Donner: -le schma de la base de donnes


schma(LIBRAIRIE)={ISBN,Intitul,Auteur,Prix,ID,Nom,Prnom,CP,Livre,Client,Date}

ADOM(Client)={1,2,3,Pascal,Dupont,Martin,Jean,Pierre,Marie,29000,63000}

-le domaine actif de la relation Client

-le domaine actif de l'attribut Auteur


ADOM(Auteur,Livre)={Rowling,Pascal,Loana,Corneille}

Justifier les deux cls primaires de la relation Achat Achat[Livre] Livre[ISBN] Achat[Client] Client[ID] Quelles sont les cls trangres de la base de donnes et quelles sont leur utilit? -Les cls trangres sont Livre et Client (la partie gauche d'une DI dont la partie droite est une cl primaire est une cl trangre). Elles permettent de faire la relation entre la date d'achat et les tables Client et Livre.

A B signifie: A implique B Valider ou rfuter (donner un contre exemple) les dpendances suivantes: ISBN Auteur vrai

Intitul Auteur faux t2[intitul]='Les penses'=t3[intitul] or t2[Auteur]='pascal' t3[Auteur]='Loana' Autrement dit, la connaissance de l'intitul ne permet pas de dduire le nom de l'auteur. vrai vrai

PrixAuteur PrnomID

Les dpendances d'inclusions Valider ou rfuter (donner un contre exemple) les dpendances suivantes: Achat[Client]Client[ID] Client[ID]Achat[Client] vrai vrai faux

Client[Nom] Livre[Auteur]

Les valeurs de Nom ne sont pas incluses dans Auteur. Client[Nom,Prnom] Client[Nom,Prnom] faux

Les valeurs {<Pascal Jean><Dupont Pierre><Martin Marie>} ne sont pas incluses dans {<Jean Pascal><Pierre Dupont><Marie Martin>}

EXERCICE 2 Exprimer en algbre relationnelle et en SQL les requtes suivantes: 1.Donner tous les livres de la librairie

Projection: Permet de faire une coupe verticale(choix de l'attribut afficher) AR nom_attribut(relation) ISBN,Intitul,Auteur,Prix(Livre) En SQL projection s'effectue l'aide de la clause SELECT

2.Donner les clients dont le code postal est 63000 Slection: Permet de faire une coupe horizontale (choix d'un ou plusieurs tuples)

AR

formule de slection (relation) CP=63000(Client)

-La formule de slection peut tre compose l'aide des oprateurs .

-En SQL la slection s'effectue l'aide de la clause WHERE la formule de slection peut tre compose avec AND, OR, et NOT

3.Donner les livres dont le prix est suprieur 10 et infrieur 15 AR Prix>10 Prix<15 (Livre)

4.Donner les livres dont le prix est infrieur 10 ou dont l'auteur est 'Pascal' AR Prix<10 Auteur='Pascal' (Livre)

5.Donner l'identifiant des clients qui ont achet un livre -On cherche les identifiants des clients qui sont prsents dans la table Achat (projection). AR Client(Achat)

-En algbre relationnelle on travaille avec des ensembles, l'information n'est pas redondante. La rponse de la requte va tre 1, 2, 3. -En SQL multi-ensembles pour liminer la redondance on utilise DISTINCT

5.Donner l'identifiant des clients qui ont achet un livre -On cherche les identifiants des clients qui sont prsents dans la table Achat (projection). AR Client(Achat)

-En algbre relationnelle on travaille avec des ensembles, l'information n'est pas redondante. La rponse de la requte va tre 1, 2, 3. -En SQL multi-ensembles pour liminer la redondance on utilise DISTINCT

6.Donner les livres qui n'ont jamais t achets On cherche les livres prsents dans la table Livre mais absents dans la table Achat. Pour cela on utilise l'oprateur ensembliste Diffrence. Attention lorsqu'on utilise les oprateurs ensemblistes Union Intersection ou Diffrence les relations doivent avoir le mme schma( mme attributs). AR SQL ISBN(Livre)-Livre(Achat) SELECT ISBN FROM Livre MINUS SELECT Livre FROM Achat;

-Les oprateurs ensemblistes forcent la smantique ensembliste. (DISTINCT) -Pour ACCESS et certains SGBD seul l'oprateur UNION est disponible donc les solutions suivantes vont tre prfres:

Oprateur IN : vrifie si la valeur existe dans un sous-ensemble SELECT .. FROM R WHERE X IN (SELECT....)

Oprateur EXISTS: Test l'existence ou l'absence de donnes dans la sous requte SELECT .. FROM R WHERE EXISTS (SELECT * FROM S WHERE C) La condition C doit comporter un attribut de R

Les sous-requtes de la clause WHERE sont introduites par les mots cls : IN,EXIST, ANY,ALL.

7.Donner l'intitul et la date d'achat de chaque livre. -Lorsqu'on dsire travailler sur plusieurs tables une jointure va tre ncessaire. La jointure est un produit cartsien suivi d'une slection et d'une projection . En Algbre relationnelle, l'attribut qui va permettre de faire la jointure est implicite. -En langage SQL il va falloir prciser dans la clause WHERE quelles sont les valeurs qui doivent tre gales entre les 2 relations pour effectuer la jointure. AR Intitul,Date (Livre(LivreISBN(ClientID(Achat))))

La premire tape: -Le produit cartsien Livre*Achat SELECT * FROM Livre,Achat

Slection SELECT * FROM Livre,Achat WHERE livre.ISBN=Achat.Livre;

Projection

8.Donner le nom des clients qui ont achet le livre intitul 'Le cid'

Nom (ID=Client (Livre(LivreISBN(ClientID(Achat)))Client))

SELECT * FROM Livre,Client,Achat WHERE Livre.ISBN=Achat.Livre AND Client.ID=Achat.Client

SELECT Client.nom FROM Livre,Client,Achat WHERE Livre.ISBN=Achat.Livre AND Client.ID=Achat.Client AND Livre.Intitule='Le Cid';

9.Donner le prnom des clients qui se termine par la lettre 'e' -% Remplace une chane de caractre

SQL 1.Donner le prix moyen d'un livre Les fonctions d'agrgation SUM (somme des valeurs d'une colonne), AVG(moyenne des valeurs d'une colonne,) MIN, MAX, COUNT(nombre de lignes d'une table) retournent une ligne une colonne.

2.Donner le nombre de client pour chaque ville GROUP BY permet d'utiliser les fonctions d'agrgation sur des sous-ensembles de valeurs.

3.Donner le nom des clients qui ont command au moins deux livres

On regroupe par Client GROUP BY (ID ou Nom) et on effectue une projection

HAVING va permettre de dfinir des slections sur les lments d'une partition. Ici le nombre de livre command > 2

4.Quelle est la somme totale dpense par client

5.Donner le montant total des ventes par jour

6.Donner les livres dont le prix est suprieur au prix moyen des livres Prix moyen des livres

On va comparer le prix des livres au rsultat de cette requte: Sous requte. Les sous-requtes de la clause WHERE sont introduites par les mots cls : IN,EXIST, ANY,ALL.

On peut aussi utiliser ANY dans ce cas. Utilisation WHERE X bop ANY (SELECT , FROM, WHERE ) WHERE X bop ALL (SELECT , FROM, WHERE )

Diffrence entre ANY et ALL

ANY Vrifie si le prix est suprieur une des valeurs de la colonne prix

ALL Vrifie si le prix est suprieur toutes les valeurs de la colonne prix

You might also like