Bases de données Licence Pro QSSI patrick.marcel@univ-tours.fr http://www.info.univ-tours.fr/ marcel
contexte nous avons vu comment exprimer des requêtes simples nous avons vu des requêtes que nous ne pouvons pas exprimer nous allons donc enrichir nos langages
plan 1. quel est le problème? 2. de quels nouveaux opérateurs a-t-on besoin? 2.1 union 2.2 différence 2.3 agrégation 3. quels sont les langages d interrogation? 3.1 l algèbre relationnelle, pour les TD 3.2 SQL (deuxième partie), pour les TP
quel est le problème? exemple de requêtes non exprimables avec l algèbre conjonctive 1. union quels sont les films réalisés par lynch ou ki-duk? 2. négation quels sont les films qui ne sont pas réalisés par besson? 3. agrégation quel est le nombre de films de chaque nationalité?
de quels nouveaux opérateurs a-t-on besoin? l union l union : que veut-on exprimer? quels sont les films réalisés par lynch ou ki-duk? que faut-il faire? trouver l ensemble des films réalisés par lynch trouver l ensemble des films réalisés par ki-duk calculer l union ensembliste attention : les schémas doivent être compatibles!
de quels nouveaux opérateurs a-t-on besoin? l union exemples quels sont les films réalisés par lynch ou ki-duk? en algèbre, on aimerait écrire : π titre (σ réalisateur= lynch (films) σ réalisateur= ki duk (films)) ou encore π titre (σ réalisateur= lynch réalisateur= ki duk (films))
de quels nouveaux opérateurs a-t-on besoin? l union définition algébrique soit une relation R de schéma R[A 1,...,A n ] soit une relation S de schéma S[A 1,...,A n ] R S calcule une relation T de schéma T [A 1,...,A n ] contenant à la fois l ensemble des tuples de la relation R et l ensemble des tuples de la relation S la sélection est généralisée aux formules disjonctives
de quels nouveaux opérateurs a-t-on besoin? la différence la différence : que veut-on exprimer? quels sont les films qui ne sont pas réalisés par besson? trouver l ensemble des films trouver parmi ces films ceux qui sont réalisés par besson calculer la différence ensembliste des deux ensembles attention : les schémas doivent être compatibles!
de quels nouveaux opérateurs a-t-on besoin? la différence exemple quels sont les films qui ne sont pas réalisés par besson? π titre (films σ réalisateur= besson (films)) ou π titre (σ réalisateur besson (films))
de quels nouveaux opérateurs a-t-on besoin? la différence définition soit une relation R de schéma R[A 1,...,A n ] soit une relation S de schéma S[A 1,...,A n ] R S calcule une relation T de schéma T [A 1,...,A n ] contenant l ensemble des tuples de la relation R qui n appartiennent pas à la relation S
de quels nouveaux opérateurs a-t-on besoin? la différence que peut-on calculer avec la négation? exemple d utilisation de deux négations : quels sont les spectateurs qui ne sont pas les spectateurs pour lesquels il existe un film qu il n ont pas vu? ce sont donc les spectateurs qui ont vu tous les films plus d exemples en TD...
de quels nouveaux opérateurs a-t-on besoin? l agrégation l agrégation : que veut-on exprimer? comment exprimer : quel est le nombre de films de chaque nationalité? quels sont les réalisateurs ayant faits plus de 2 films par an? on a besoin : de comparateurs comme,,... de fonction d agrégat permettant de compter (count), d ajouter (sum),...
de quels nouveaux opérateurs a-t-on besoin? l agrégation intérêt quel est le nombre de films de chaque nationalité? considérons π titre,nationalité (films réalisateur=nom réalisateurs) titre starwars dune nikita locataires nationalité américaine américaine française coréenne il faut : 1. grouper les films par nationalité 2. pour chaque groupe, compter les films
de quels nouveaux opérateurs a-t-on besoin? l agrégation définition une fonction d agrégat f est une fonction dont l ensemble de départ est un ensemble de valeurs d attribut dont l ensemble d arrivée est N
de quels nouveaux opérateurs a-t-on besoin? l agrégation exemple la fonction d agrégat sum est une fonction calculant la somme d un ensemble de valeurs numériques soit R de schéma R[A,B] et d instance {(1,2),(2,3),(3,3),(5,2)} sum A (R) = 11 sum B (R) = 10
de quels nouveaux opérateurs a-t-on besoin? l agrégation algèbre l opérateur de projection est étendu comme suit soit une relation R de schéma R[A 1,...,A n ] X 1,...,X m,y des attributs pris parmi A 1,...,A n soit f une fonction d agrégation π X1,...,X m;f Y (R) calcule une relation T de schéma T [X 1,...,X m,f Y ] telle que f est appliquée séparément sur chaque groupe de tuples de R correspondant à une valeur des attributs X 1,...,X m
de quels nouveaux opérateurs a-t-on besoin? l agrégation exemple quel est le nombre de films de chaque nationalité? π nationalité;counttitre (films réalisateur=nom réalisateurs) nationalité américaine 2 française 1 coréenne 1
de quels nouveaux opérateurs a-t-on besoin? l agrégation exemple quels sont les réalisateurs ayant fait plus de 2 films par an? π réalisateur (films) π réalisateur (σ counttitre < 2 (π réalisateur,année;counttitre (films)))
quels sont les langages d interrogation? l algèbre relationnelle l algèbre relationnelle (TD) l algèbre conjonctive (SPCR) avec les opération d union et de différence s appelle l algèbre relationnelle l algèbre relationnelle étendue avec l opérateur d agrégation s appelle algèbre relationnelle étendue avec l agrégation
quels sont les langages d interrogation? SQL SQL : opérateurs ensemblistes union, intersection, différence : SELECT realisateur FROM films UNION SELECT acteur FROM films; SELECT realisateur FROM films MINUS SELECT acteur FROM films; SELECT realisateur FROM films INTERSECT SELECT acteur FROM films;
quels sont les langages d interrogation? SQL opérations ensemblistes union : utilisation du OR dans le WHERE intersection, différence : avec les opérateurs ensemblistes ou avec les IN, NOT IN dans le WHERE pour des requêtes imbriquées
quels sont les langages d interrogation? SQL union SELECT spectateur FROM vu WHERE titre = 2001 OR titre = 2046 ;
quels sont les langages d interrogation? SQL intersection SELECT realisateur FROM films WHERE realisateur IN (SELECT producteur FROM produit);
quels sont les langages d interrogation? SQL différence SELECT spectateur FROM vu WHERE spectateur NOT IN (SELECT spectateur FROM aime);
quels sont les langages d interrogation? SQL division quel spectateur a vu tous les films? SELECT DISTINCT spectateur FROM vu WHERE spectateur NOT IN (SELECT spectateur FROM vu,films WHERE (spectateur,films.titre) NOT IN (SELECT spectateur,titre FROM vu));
quels sont les langages d interrogation? SQL agrégation ALTER TABLE films ADD COLUMN budget integer(8); SELECT realisateur, avg(budget) FROM films GROUP BY realisateur; de nombreuses fonctions d agrégation sont disponibles : avg, count, sum,...
quels sont les langages d interrogation? SQL having SELECT realisateur, avg(budget) AS budget moyen FROM films GROUP BY realisateur HAVING budget moyen > 1000000;
quels sont les langages d interrogation? SQL order by SELECT realisateur, avg(budget) AS budget moyen FROM films GROUP BY realisateur HAVING budget moyen > 1000000 ORDER BY budget moyen DESC;
quels sont les langages d interrogation? SQL vues une vue est une table temporaire définie par une requête accessible comme toute autre table
quels sont les langages d interrogation? SQL vues CREATE VIEW salle film non lucas AS SELECT nom FROM salle, films WHERE salle.titre = films.titre AND realisateur!= lucas ;
quels sont les langages d interrogation? SQL vues exemple : quels sont les salles qui ne proposent que des films de lucas? SELECT nom FROM salle WHERE nom NOT IN (SELECT * FROM salle film non lucas);