BDWA EXAMEN - 27 MARS 2006 Documents autorisés. Exercice 1. Requêtes décisionnelles



Documents pareils
Oracle Décisionnel : Modèle OLAP et Vue matérialisée D BILEK

Entrepôts de données. NEGRE Elsa Université Paris-Dauphine

Entrepôt de données : Extensions du langage SQL (SQL-3/SQL-99) pour lʼolap (7.1)

Les Entrepôts de Données

1 Introduction et installation

Bases de données multidimensionnelles et mise en œuvre dans Oracle

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Le langage SQL Rappels

SQL Historique

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

TP Bases de données réparties

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Plan. Ce qu est le datawarehouse? Un modèle multidimensionnel. Architecture d un datawarehouse. Implémentation d un datawarehouse

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

TD n 10 : Ma première Base de Données

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

SQL Server 2012 Implémentation d'une solution de Business Intelligence (Sql Server, Analysis Services...)

et les Systèmes Multidimensionnels

Bases de Données OLAP

2 Serveurs OLAP et introduction au Data Mining

Les bases de données

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Langage SQL : créer et interroger une base

MODE OPERATOIRE OPENOFFICE BASE

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Fouille de Données : OLAP & Data Warehousing

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

Cours: Les Jointures 1

Collabora'on IRISA/INRA sur le transfert de nitrates et l améliora'on de la qualité des eaux des bassins versants:

Le Langage De Description De Données(LDD)

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

16H Cours / 18H TD / 20H TP

Introduction à la B.I. Avec SQL Server 2008

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

ETL Extract - Transform - Load

Plan. Introduction Eléments de la théorie des systèmes d'informations Les entrepôts de données (Datawarehouse) Les datamart Architecture Modélisation

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Les entrepôts de données

Bases de données relationnelles

Présentation du module Base de données spatio-temporelles

Les entrepôts de données et l analyse de données

Les bases fondamentales du langage Transact SQL

Encryptions, compression et partitionnement des données

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

LES ENTREPOTS DE DONNEES

Lamia Oukid, Ounas Asfari, Fadila Bentayeb, Nadjia Benblidia, Omar Boussaid. 14 Juin 2013

BI = Business Intelligence Master Data-ScienceCours 3 - Data

Durée : 4 heures coefficient : 4 Le sujet se présente sous la forme de deux dossiers indépendants

Présentation Windows Azure Hadoop Big Data - BI

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Le Langage SQL version Oracle

MTI820 Entrepôts de données et intelligence d affaires. Les applica+ons de BI

Compétences Business Objects

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Datawarehouse: Cubes OLAP. Marlyse Dieungang Khaoula Ghilani

Tutorial sur SQL Server 2000

Entrepôt de données 1. Introduction

Introduction au Système de Gestion de Base de Données et aux Base de Données

Pascale Borla-Salamet Consultante Avant Vente Oracle France. Oracle Exadata Performance et Optimisation de votre Datawarehouse

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

Jean-François Boulicaut & Mohand-Saïd Hacid

SQL SERVER 2008, BUSINESS INTELLIGENCE

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

1 Modélisation d une base de données pour une société de bourse

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Mémoire de fin d études. Thème Conception et réalisation d un Data Warehouse pour la mise en place d un système décisionnel

Les bases de l optimisation SQL avec DB2 for i

FileMaker 13. Guide de référence SQL

Devoir Data WareHouse

Evry - M2 MIAGE Entrepôts de Données

Exercices sur SQL server 2000

Urbanisation des SI-NFE107

Application Form/ Formulaire de demande

Dossier I Découverte de Base d Open Office

SWISS ORACLE US ER GRO UP. Newsletter 5/2014 Sonderausgabe. OBIF DB licensing with VMware Delphix 12c: SQL Plan / Security Features

Master Développement Durable et Organisations Master s degree in Sustainable Development and Organizations Dossier de candidature Application Form

Quelques aspects du Relationnel-Objet du SGBD Oracle

La présente publication est protégée par les droits d auteur. Tous droits réservés.

INTRODUCTION AU DATA MINING

CREATION WEB DYNAMIQUE

BD51 BUSINESS INTELLIGENCE & DATA WAREHOUSE

Intégrité des données

Session S12 Les bases de l optimisation SQL avec DB2 for i

SQL Server et Active Directory

Bases de Données relationnelles et leurs systèmes de Gestion

Introduction aux outils BI de SQL Server Création de cubes dans SQL Server Analysis Services (SSAS)

Business Intelligence avec Excel, Power BI et Office 365

Le "tout fichier" Le besoin de centraliser les traitements des fichiers. Maitriser les bases de données. Historique

Optimisation SQL. Quelques règles de bases

Introduction à Business Objects. J. Akoka I. Wattiau

BIRT (Business Intelligence and Reporting Tools)

Bienvenue dans la Génération C

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Transcription:

Nom : Prénom : Page 1 Université Pierre et Marie Curie Paris 6 BDWA EXAMEN - 27 MARS 2006 Documents autorisés Master d'informatique Exercice 1. Requêtes décisionnelles On considère une base de données de schéma S suivant : CLIENTS (id_client, nom_client, id_pays) PAYS (id_pays, nom_pays, region) PRODUITS (id_prod, nom_prod, description, categorie) TEMPS(id_temps, jour, annee, mois) VENTES (id_prod, id_client, id_temps, quantité_vendue, montant_ventes) 7 pts Question 1. Définissez une vue V1 (Pays, Produit, MeilleureAnnee) sur le schéma S, donnant, par pays et par produit, l année où les ventes ont été les meilleures pour ce produit dans ce pays. CREATE VIEW V1 AS SELECT DISTINCT nom_pays Pays, nom_prod Produit, annee MeilleureAnnee FROM VENTES V, TEMPS T, PRODUITS P, CLIENTS C, PAYS Pa WHERE V.id_prod= P.id_prod AND V.id_temps = T.id_temps AND V.id_client = C.id_client AND C.id_pays = Pa.id_pays AND Montant_ventes = ( SELECT MAX(montant_ventes) FROM VENTES V1, TEMPS T1, PRODUITS P1, CLIENTS C1, PAYS Pa1 WHERE V1.id_prod= P1.id_prod AND V1.id_temps = T1.id_temps AND V1.id_client = C1.id_client AND C1.id_pays = Pa1.id_pays AND Pa.id_pays = Pa1.id_pays AND P.id_prod = P1.id_prod ) Question 2. Définissez une vue V2 (Pays, Produit, Annee, Ventes) sur le schéma S, donnant la somme des ventes par pays, par produit, et par année. CREATE VIEW V2 AS SELECT DISTINCT nom_pays Pays, nom_prod Produit, annee Annee, SUM(montant_ventes) Ventes FROM VENTES V, TEMPS T, PRODUITS P, CLIENTS C, PAYS Pa WHERE V.id_prod= P.id_prod AND V.id_temps = T.id_temps AND V.id_client = C.id_client AND C.id_pays = Pa.id_pays GROUP BY nom_pays, nom_prod, annee Question 3. Ecrivez une requête R1 sur la vue V2 en utilisant une fonction analytique permettant de calculer la somme des ventes des 5 dernières années (année en cours incluse) par pays, produit et année. prompt R1 somme des ventes par pays, produit et année sur les 5 dernières années prompt solution avec fenetre glissante select pays, produit, annee, sum(ventes) over (partition by pays, produit order by annee range between 4 preceding and current row) as somme5ans from V2 order by pays, produit, annee

Nom : Prénom : Page 2 prompt solution avec requete imbriquée select pays, produit, annee, ( select sum(ventes) from v2 b where a.pays = b.pays and a.produit = b.produit and b.annee between (a.annee - 4) and a.annee ) somme5ans from V2 a group by pays, produit, annee order by pays, produit, annee prompt solution avec jointure select a.pays, a.produit, a.annee, sum(b.ventes) as somme5ans from V2 a, V2 b where a.pays = b.pays and a.produit = b.produit and b.annee between (a.annee - 4) and a.annee group by a.pays, a.produit, a.annee order by a.pays, a.produit, a.annee prompt solution erronée : la somme ne se limite pas à un produit et une année : select pays, produit, annee, sum(ventes) over (order by annee range between 4 preceding and current row) as somme5ans from V2 order by pays, produit, annee Question 4. Définissez une vue V3, donnant la somme des ventes par pays, produit, année et l année où les ventes ont été les meilleures pour ce produit dans ce pays. CREATE VIEW V3 AS SELECT V1.Pays, v1.produit, Annee, Ventes, MeilleureAnnee FROM V1, V2 WHERE V1.Pays = V2.Pays AND V1.Produit=V2.Produit Question 5. Ecrivez la requête SQL sur la vue V2, qui permet de construire un tableau contenant, pour l Italie et pour la France, les ventes de chaque produit par année, en respectant les règles suivantes : Les ventes de livres en 2004 sont de 1000. En 2005, les ventes de livres sont la somme des ventes de livres en 2003 et 2004. Les ventes de disques en 2005 sont les mêmes qu en 2004. Ce tableau contient des données extraites de la vue et des données calculées. Un exemple de tableau montrant un résultat de cette requête est donné ci-dessous : PAYS PRODUIT ANNEE VENTES Italie Livre 2001 1000 Italie Livre 2002 5333 Italie Disque 2002 81500 France Livre 2001 1000 France Livre 2002 6130

Nom : Prénom : Page 3 France Disque 2002 89700 Requete R2 SELECT SUBSTR(pays,1,20) country, SUBSTR(produit,1,15) product, annee, ventes FROM V2 WHERE pays in ('Italie', 'France') MODEL RETURN UPDATED ROWS MAIN simple_model PARTITION BY (pays) DIMENSION BY (produit, annee) MEASURES (ventes) RULES (ventes['livre', 2004] = 1000, ventes['livre', 2005] = ventes['livre', 2004] + ventes['livre', 2003], ventes['disque', 2005] = ventes['disque', 2004]) ORDER BY pays, produit, annee Complément de l exercice, à faire éventuellement en TD : CREATE VIEW sales_view AS SELECT country_name country, prod_name product, calendar_year year, SUM(amount_sold) sales, COUNT(amount_sold) cnt, MAX(calendar_year) KEEP (DENSE_RANK FIRST ORDER BY SUM(amount_sold) DESC) OVER (PARTITION BY country_name, prod_name) best_year, MAX(calendar_year) KEEP (DENSE_RANK LAST ORDER BY SUM(amount_sold) DESC) OVER (PARTITION BY country_name, prod_name) worst_year FROM sales, times, customers, countries, products WHERE sales.time_id = times.time_id AND sales.prod_id = products.prod_id AND sales.cust_id =customers.cust_id AND customers.country_id=countries.country_id GROUP BY country_name, prod_name, calendar_year Cette requete utilise les fonctions analytiques FIRST et LAST, et permet de Calculer la somme et le nombre de ventes, regroupées par pays, produit, et année. Pour chaque produit vendu dans un pays, on aura l année où les ventes ont été meilleures pour ce produit dans ce pays. C est l attribut best_year. L année où les ventes pour ce produit ont été les pires est donnée dans worst_year. Exercice 2 : OLAP : Agrégation, Modèle, Cube Soit S1 le schéma relationnel suivant: Personne (nss, nom, age, étude) nss est le n de sécurité sociale étude est le niveau d étude d une personne Entreprise (ne, nom, ville, activité) ne est l identifiant de l entreprise Emploi (nss, ne, salaire) L employé nss a un emploi rémunéré dans l entreprise ne Remarque: la clé de chaque relation est soulignée 7 pts Question 1 Une personne peut occuper plusieurs emplois, pendant sa carrière, dans une ou plusieurs entreprises avec des salaires éventuellement différents. Soit nbemp le nombre d emplois d une personne. Ecrire en SQL la requête R1 qui donne le salaire moyen pour chaque nombre d emplois différents? Par exemple, si la base de données contient des personnes qui ont eu 1, 2, 4 ou 5 emplois, le résultat de la requête R1 est :

Nom : Prénom : Page 4 nbemp salaire_moyen ------------------- 1 2102 2 1511 4 2312 5 5312 Ex : 1511 est le salaire moyen de tous les emplois des personnes qui ont eu exactement 2 emplois dans leur carrière. select nbemp, avg(salaire_moyen) as salaire_moyen from ( select count(*) as nbemp, avg(salaire) as salaire_moyen from emploi group by nss) group by nbemp Ici on a un cas particulier : la moyenne des salaires moyens pour une valeur donnée de nbemp est égale à la moyenne des salaires des personnes concernées. Par exemple pour nbemp = 2, on a ((s11 + s12)/2 + (s21 + s22 )/2)/ 2 = (s11+ s12 + s21+ s22) /4 Ceci se vérifie car on effectue la moyenne des salaires moyens d un même nbemp. Attention : en général la moyenne n est pas distributive Par exemple pour nbemp = 3 et nbemp=1 ((S11+ s12 + S13)/3 + s21) /2 (s11 + s12 + s13 + s21) /4 Question 2 a) Ecrire en SQL une requête R2 qui donne, pour chaque niveau d étude, la moyenne des salaires des personnes qui ont ce niveau d étude. Le résultat de la requête a le schéma : R2(etude, salaire_moyen) prompt moyenne des salaires des personnes ayant le même niveau d'etude select etude, avg(salaire) as salaire_moyen from Emploi e, Personne p where e.nss = p.nss b) Le salaire moyen d une personne est la moyenne des salaires perçus pendant sa carrière. Ecrire en SQL une requête R3 qui donne, pour chaque niveau d étude, la moyenne du salaire moyen des personnes qui ont ce niveau d étude. Le schéma de la requête R3(etude, salaire_moyen). prompt moyenne des salaires MOYENS de chaque personne regroupés par niveau d'etude: select etude, avg(salaire_moyen) as salaire_moyen from ( select etude, avg(salaire) as salaire_moyen from Emploi e, Personne p where e.nss = p.nss group by p.nss, etude

Nom : Prénom : Page 5 ) prompt autre solution avec un group by en moins (mais une requete imbriquée en plus) select etude, avg(salaire_moyen) as salaire_moyen from ( select etude, (select avg(salaire) from Emploi where nss = p.nss) as salaire_moyen from Personne p ) prompt autre solution avec un IN select etude, avg(salaire_moyen) as salaire_moyen from ( select etude, salaire_moyen ) from Personne p, ( select nss, avg(salaire) as salaire_moyen where p.nss = a.nss from Emploi group by nss) a c) R2 et R3 sont elles équivalentes? Justifier Non la moyenne n est pas distributive Question 3 On dispose d un outil OLAP pour analyser les salaires selon l âge et le niveau d étude des personnes et la situation géographique des entreprises. L analyse selon l âge peut se faire par année ou par décade (tranches de 10 années à partir de 14 ans et jusqu à 73 ans). L analyse du niveau d étude peut se faire par le niveau d enseignement atteint en fin d études (primaire, secondaire, supérieur) ou par le dernier diplôme obtenu (certificat de fin d étude primaire, BEPC, Bac, Licence, Master). L analyse de la situation géographique peut se faire par ville, département, région ou pays. Tenir compte de l existence éventuelle de villes synonymes dans plusieurs régions ou pays Quel est le schéma relationnel en étoile le plus approprié pour cette analyse? Pour chaque relation, donner son nom et ceux de ses attributs, souligner les attributs de la clé. Rmq : Nommer un attribut clé étrangère avec le même nom que l attribut clé correspondant. Table de fait : Salarié(age, diplôme, nv, salaire) Dimensions :

Nom : Prénom : Page 6 Age (age, décade) L attribut Age.age est un nombre un nombre d année, l attribut Age.décade est un n de décade, par exemple int( (age-4) /10 ) Etude (diplôme, enseignement) Ville(nv, ville, département, région, pays) Compléter le schéma précédent pour pouvoir analyser les salaires - selon les tranches d âge suivantes {mineurs, jeunes de 18 à 25 ans, actifs de 26 à 65 ans, plus de 65 ans}, en plus des tranches préalablement définies. - le type d enseignement suivi : généraliste, professionnel ou mixte - l aspect maritime du département où travaille la personne (avec ou sans front de mer) Le schéma obtenu est il en étoile, flocon ou constellation? Le nom du diplôme ne permet pas de déduire su l enseignement est pro ou généraliste. C est pourquoi on remplace le nom de diplôme par un attribut numéro de diplôme ndipl. Table de fait : Salarié(age, ndipl, nv, salaire) Chaque décade n est pas incluse dans une seule tranche, donc les tranches ne sont pas un niveau supérieur au dessus des décades. La dimension année a deux branches AgeDécade (année, décade) AgeTranche(année, tranche) Etude (ndipl, diplôme, enseignement) Etude (ndipl, type) Ville (nv, ville, département, région, pays) Ville (département, maritime) Schéma en flocon : une seule table de fait, les dimensions ont plusieurs branches Question 4 On utilise la fonction moyenne (average) pour agréger les mesures lors des opérations de rollup et de projection agrégative. Soit C1 le cube qui présente les salaires moyens suivant les dimensions : décade, diplôme, département. Quelles sont, dans l ordre, les opérations à appliquer sur C1 pour obtenir les cubes suivants? Répondre en donnant pour chaque opération, son nom suivi d une brève description. C2 présente, pour chaque région et chaque diplôme, le salaire moyen des personnes de plus de 24 ans, qui ont perçu au moins une fois dans leur carrière un salaire supérieur à 1000, et qui ont quitté l université avec une licence. C2 Nom de l opération 1 :... description :... Nom de l opération 2 :... description :...

Nom : Prénom : Page 7 1 dice avec prédicat sal >1000 2 projection sur les décades : de la 2 ème à la nième décade 3 projection agrégative des décades restantes 4 slice sur la dimension du niveau d étude : licence 5 Rollup : département région C3 contient, pour chaque ville, le salaire moyen des personnes de 65 ans Nom de l opération 1 :... description :... Nom de l opération 2 :... description :...... 1 drill down : décade age 2 slice sur l age = 65 3 drill down department ville 4 projection agrégative sur le niveau d etude