Devoir Sur Table «La chocolaterie du 5 ème»

Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le langage SQL Rappels

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

1 Introduction et installation

Exercices et solutions

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

SQL Historique

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

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

16H Cours / 18H TD / 20H TP

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

Les bases de données

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

Langage SQL : créer et interroger une base

Corrigés détaillés des exercices

Quad 110 cc - 4 temps - 60 Km/h - QUAD1101 (Lot 10 pcs)

SOMMAIRE. Travailler avec les requêtes... 3

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Make your Food Connections in North America.

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

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

UNIVERSITE PARIS 1 PANTHEON SORBONNE

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

ST3 : Techniques de bases de données avancées

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Cours 4 : Agrégats et GROUP BY

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Lire autrement. Echéancier : 12 séances, 2 séances par semaine avec deux niveaux différents. ( CP/CE1) (CE2/CM1).

INTRODUCTION : Données structurées et accès simplifié

Cours SQL. Base du langage SQL et des bases de données

Merci de suivre les indications suivantes afin de créer votre compte membre :

COURS de BASES de DONNEES

MODE OPERATOIRE OPENOFFICE BASE

TP Contraintes - Triggers

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

TP Bases de données réparties

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Maison de tradition depuis du savoir-faire et du goût... Nougat de Montélimar

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

A l heure de Pâques Equipe rouge : Les «monsieur et madame» branchés

Gestion de base de données

STAGE CUISINE MARDI 6 OCTOBRE 2009 CUISINE DU MARCHE

DESSERTS PATISSIERS. Sirop à baba : eau, sucre, glucose, armagnac (12% à 50 ), 6 babas (farine de blé, œufs, beurre, levure, sel, sucre)

Vincent Augusto

Gestion d'une billeterie défilé des talents

Guide de configuration d'une classe

Auto-évaluation SQL. Document: f0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

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

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

David LUCAS 15/01/10 Ludovic HUET Sébastien LE NECHET Jason JAMOT. Projet BO

Bases de Données Avancées

Le compte épargne temps

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

Travaux pratiques de pâtisserie CFA Avignon

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Introduction aux Bases de Données 2004/2005

Création de site internet

Principe, applications et limites

Bases de Données. Plan

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

GESTION ET STRATEGIE DE L INVESTISSEMENT IMMOBILIER ET DE LA CONSTRUCTION (GESIIC)

MASTER 2 PROFESSIONNEL : GESTION FINANCIERE ET FISCALITE. Année universitaire 2013/2014 INTERLOCUTEURS

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

A QUOI SERVENT LES BASES DE DONNÉES?

Les Entrepôts de Données

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

Cours d Informatique Bases de données

A. Définition et formalisme

Biscuits de Noël. Milan

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

Bases de données relationnelles

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

Introduction à la B.I. Avec SQL Server 2008

INTRODUCTION AU DATA MINING

SESSION 2014 ÉPREUVE À OPTION. (durée : 4 heures coefficient : 6 note éliminatoire 4 sur 20)

JPEG, PNG, PDF, CMJN, HTML, Préparez-vous à communiquer!

S8 - INFORMATIQUE COMMERCIALE

sur pc, tablette ou smartphone... mon site ...GRÂCE AU responsive design!

PostgreSQL. Formations. Catalogue Calendrier... 8

données en connaissance et en actions?

Bases de données avancées Introduction

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

UNIVERSITE PARIS 1 PANTHEON SORBONNE

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Introduction aux Bases de Données

2 Moodle Guide 2c : banque de questions et activité Test. Version du service

SQL pour. Oracle 10g. Razvan Bizoï. Tsoft, Groupe Eyrolles, 2006, ISBN : , ISBN 13 :

Unité 6. Qu est ce que tu prends au petit au petit déjeuner?

Chap. 2: L approche base de données

Gâteau à la mousse au chocolat. Recette par Adriano Zumbo

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

Par. Sophianne Pierre-Louis. Cassandra Sauvé. Sabrina Turmel

GANACHE AU CHOCOLAT BLANC. Lait Selection 33,5% Lait Caramel 34,5% Crème fraîche à 35%

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

Transcription:

Université Paris 1 Panthéon Sorbonne Ecole de Management de la Sorbonne L3 Gestion Finance Informatique Devoir Sur Table «La chocolaterie du 5 ème» Vous êtes employés d une chocolaterie localisée à Paris au 5 ème. Vous avez à votre disposition une base de données contenant les produits et les commandes. Chaque produit a un type (blanc, noir, au lait, diet ou composition) et peut être proposé pour une occasion précise (noël, pâques, saint valentin, etc.). Les compositions sont des produits mélangeant d autres produits du catalogue. (codeprod, nomprod, prixkg, type, occasion) Composition (codecompo, code) * (ncli, nomc, tel, dateentrée, codepostal) (ncom, datecom, ncli, prixtotal, dateliv) ContenuCom (ncom, codeprod, qte) * L attribut codecompo correspond à un codeprod de type «composition» Questions algèbre et SQL Répondre aux questions suivantes utilisant l algèbre relationnelle et le langage SQL : 1) Les noms des clients du 5 ème (code postal «75005») qui ont commandé des chocolats «diet» cette année (2015). 2) Les clients (nom et téléphone) qui ont commandé des produits de Noël en 2014 mais pas en 2015. 3) Les clients (nom) qui ont déjà commandé des produits de pâques et des produits de noël. 4) Les produits (nom produit) mélangeant chocolat noir et chocolat blanc. 5) Les clients (nom et code postal) qui ont déjà commandé tous les produits de Noël diet proposés. 6) Les clients (nom et téléphone) ayant effectué la commande la plus élevée cette année. Questions SQL uniquement Répondre aux questions suivantes uniquement en langage SQL. 7) Le prix moyen des produits par type en ordre décroissant. 8) Les noms des clients en ordre alphabétique ayant commandé plus de 5 produits diet en 2015. 9) Le prix moyen des compositions contenant plus de 3 produits.

(1) Les noms des clients du 5 ème (code postal «75005») qui ont commandé des chocolats «diet» cette année (2015). (1,0) type = "diet" Contenucom "1/1/2015" codepostal = "75005" nomc datecom est une date, donc jour/mois/année (1) Les noms des clients du 5 ème (code postal «75005») qui ont commandé des chocolats «diet» cette année (2015). (1,0) SELECT C.nomC as C, as P, as Co, ContenuCom as Cc C.ncli = Co.ncli AND Co.ncom = Cc.ncom les «alias» (C, p, Co, Cc) aident à indiquer de AND Cc.codeProd = P.codeProd quel table on parle AND P.type = "diet" AND C.codePostal = "75005" AND Co.dateCom BETWEEN "1/1/2015" AND on fait attention aux nom des attributs et des tables : ClientS C P.codeProd datecom est une date, donc jour/mois/année

(2) Les clients (nom et téléphone) qui ont commandé des produits de Noël en 2014 mais pas (de produit de Noël) en 2015. (1,5) "1/1/2015" Contenucom "1/1/2014" Contenucom "31/12/2014" occasion =" Noël " occasion =" Noël " ncli ncli choix de l attribut pour la différence : on cherche les clients, donc ncli une commande ne peut pas être à la fois en 2014 et en 2015, donc pas ncom (une seule date par commande) nomc, tel SELECT (2) Les clients (nom et téléphone) qui ont commandé des produits de Noël en 2014 mais pas (de produit de Noël) en 2015. (1,5) C.nomC, C.tel as C, as P, as Co, ContenuCom as Cc C.ncli = Co.ncli AND Co.ncom = Cc.ncom AND Cc.codeProd = P.codeProd AND P.occasion = "Noël" AND Co.dateCom BETWEEN "1/1/2014" AND "31/12/2014" AND Co.ncli NOT IN ( SELECT Co2.ncli as Co2, as P2, c est le client qui n a pas commandé en 2015 même attribut de la différence dans le NOT IN Les noms des tables ne changent pas, juste leur alias Co Co2 ContenuCom as Cc2 Co2.ncom = Cc2.ncom AND Cc2.codeProd = P2.codeProd AND P2.occasion = "Noël" AND Co2.dateCom BETWEEN "1/1/2015" AND ) On choisit l alias qu on veut : Toto est aussi bon que C

(3) Les clients (nom) qui ont déjà commandé des produits de pâques et des produits de noël. (1,0) occasion =" pâques" Contenucom Contenucom occasion =" Noël " on peut aussi faire avec une jointure sur ncli ncli ncli On cherche les clients, donc ncli Le client a pu commandé un produit de pâques dans une commande, et un produit de noël dans une autre. Donc, pas de ncom, ni code. nomc, tel (3) Les clients (nom) qui ont déjà commandé des produits de pâques et des produits de noël. (1,0) SELECT C.nomC as C, as P, as Co, ContenuCom as Cc C.ncli = Co.ncli AND Co.ncom = Cc.ncom AND Cc.codeProd = P.codeProd AND P.occasion = "pâques" AND Co.ncli IN ( SELECT Co2.ncli Un produit ne peut pas avoir occasion=«pâques» et occasion=«noël», ces sont donc deux produits différents. as Co2, as P2, ContenuCom as Cc2 Co2.ncom = Cc2.ncom AND Cc2.codeProd = P2.codeProd AND P2.occasion = "Noël" ) On cherche les clients qui ont pu commandé un produit de Noël dans une commande, puis un produit de pâques dans une autre. On va donc utiliser le ncli avec le IN.

(4) Les produits (nom produit) mélangeant chocolat noir et chocolat blanc Un produit qui mélange chocolat noir et blanc est forcément une composition. Le produit qu on cherche est donc une composition qui contient au moins un produit de type=«blanc» et au moins un autre produit de type=«noir». On va donc devoir regarder le contenu des compositions (table composition) pour trouver celle qui contient un produit en chocolat blanc (type=«blanc») et un autre en chocolat noir (type=«noir»). Dans la table Composition, codecompo est le codeprod du produit de type composition, alors que code est le codeprod de ceux qui participent à la composition. Le produit n 3 (Poule en chocolat) est une composition avec des œufs en chocolat noir et des œufs en chocolat blanc. codeprod type nomprod 1 noir œuf noir... 2 blanc œuf blanc 3 composition Poule avec des œufs codecompo code 3 1 3 2 (4) Les produits (nom produit) mélangeant chocolat noir et chocolat blanc (1,0) type = "blanc" Composition codeprod=code on peut aussi faire avec une intersection sur codecompo codecompo=codecompo Composition type = "noir" codeprod=code codecompo codecompo C est le nom de la composition qui nous intéresse, la jointure doit donc se faire sur codecompo=codeprod codecompo=codeprod nomprod

SELECT (4) Les produits (nom produit) mélangeant chocolat noir et chocolat blanc (1,0) Pcompo.nomProd as Pcompo, as Pblanc, Composition C Le produit qui nous intéresse est la composition. Le codeprod de celui qui nous intéresse correspond au codecompo. Pblanc.type= "blanc" AND Pblanc.codeProd = C.code AND Pcompo.codeProd = C.codeCompo AND C.codeCompo IN ( SELECT C2.codeCompo as Pnoir, Compostion as C2 Pnoir.type = "noir" AND Pnoir.codeProd = C2. code ) Un produit n a qu un type, il ne peut pas être blanc, noir et une composition à la fois. On a donc à faire à trois produits différents : la composition qu on cherche, un en chocolat blanc et un en chocolat noir. C est la composition qui contient les deux autres produit, il faut donc utiliser le codecompo pour l intersection. (5) Les clients (nom et code postal) qui ont déjà commandé tous les produits de Noël diet proposés. (1,5) R ( A, B) S ( B ) ncli codeprod ContenuCom occasion= "noël" type= "diet" ncli = ncli ncli, codeprod codeprod nomc, codepostal

(5) Les clients (nom et code postal) qui ont déjà commandé tous les produits de Noël diet proposés. (1,5) SELECT C.nomC, C.codePostal as C Il y a des conditions sur notre B NOT EXISTS ( (être de Noël diet), on les trouvera SELECT * dans le du 2 e SELECT. as P P.type = "diet" AND P.occasion="noël" AND NOT EXISTS ( SELECT * as Co, ContenuCom as Cc Co.ncom = Cc.ncom Ce qu on cherche (notre A) à clients (ncli) Pour tous les produit (notre B) à (codeprod) Ce qui permet de relier A et B à commande et contenucom AND C.ncli = Co.ncli AND P.codeProd = Cc.codeProd ) ) Dans le dernier SELECT on relie les tables entre elles, mais aussi avec A (clients) et avec B (codeprod). (6) Les clients (nom et téléphone) ayant effectué la commande la plus élevée cette année. (1,5) "1/1/2015" 1 "1/1/2015" 2 "1/1/2015" prixtotal1 < prixtotal2 ncom, ncli ncom1, ncli1 Il faut trouver la commande de prix le plus élevé, avant de récupérer son client, car ce même client peut avoir réalisé d autres commandes de valeur inférieur nomc, tel

(6) Les clients (nom et téléphone) ayant effectué la commande la plus élevée cette année. (1,5) SELECT C.nomC, C.tel as C, as Co C.ncli = Co.ncli AND Co.dateCom BETWEEN "1/1/2015" AND AND Co.prixTotal = ( SELECT MAX (Co2.prixTotal) as Co2 Co2.dateCom BETWEEN "1/1/2015" AND ) La date dans les 2 select est importante car le client qui a fait la commande la plus élevée cette année ne l a pas fait les autres années. (7) Le prix moyen des produits par type en ordre décroissant (par type en ordre alphabétique inversée). (1,5) SELECT AVG (prixkg), type GROUP BY type ORDER BY type DESC On souhaite la moyenne par type, il faut donc grouper les produits par type pour calculer la moyenne à GROUP BY Le DESC va permettre d afficher en ordre décroissant L attribut qui est dans l ORDER BY se trouve forcément dans le SELECT

(8) Les noms des clients en ordre alphabétique ayant commandé plus de 5 produits diet en 2015. (2,0) SELECT C.nomC, C.ncli as C, as Co, ContenuCom as Cc, as P C.ncli = Co.ncli AND Co.ncom=Cc.ncom AND Cc.codeProd=P.codeProd AND P.type = "diet" AND Co.dateCom BETWEEN "1/1/2015" AND GROUP BY C.ncli HAVING Count(*)>5 ORDER BY C.nomC Les 5 produits n ont pas été forcément acquis dans une même commande. On doit donc grouper (GROUP BY) par client. Il n y a pas d attribut pouvant nous donné le nombre d articles d un type. Il faut donc compter les n-uplets. à HAVING Et si on a un HAVING, on a un GROUP BY On peut aussi utiliser Count(P.codeProd) (9) Le prix moyen des compositions contenant plus de 3 produits. (1,5) SELECT AVG (P.prixKg), Cp.codeCompo as P, Composition as Cp P.codeProd = Cp.codeCompo GROUP BY Cp.codeCompo HAVING Count(*) > 3 On s intéresse aux compositions, c est donc Cp.codeCompo qui identifie les produits qui nous intéressent.