Professional Documents
Culture Documents
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
ADOM(Client)={1,2,3,Pascal,Dupont,Martin,Jean,Pierre,Marie,29000,63000}
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
-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))))
Projection
8.Donner le nom des clients qui ont achet le livre intitul 'Le cid'
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
HAVING va permettre de dfinir des slections sur les lments d'une partition. Ici le nombre de livre command > 2
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 )
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