Modélisation et définition de données II

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

Cours Bases de données 2ème année IUT

Langage SQL : créer et interroger une base

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

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

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

Le Langage De Description De Données(LDD)

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

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

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

Olivier Mondet

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

SQL Historique

Systèmes de Gestion de Bases de Données

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

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

TP3 : Creation de tables 1 seance

Ora2Pg Performances. (C) 2013 Gilles Darold

Intégrité des données

Création et Gestion des tables

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

CREATION WEB DYNAMIQUE

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Compétences Business Objects

FileMaker 13. Guide de référence SQL

PHP 5. La base de données MySql. A. Belaïd 1

MySQL / SQL EXEMPLES

Gestion de base de données

TP Contraintes - Triggers

BTS/CGO P10 SYSTEME INFORMATION Année

Bases de données relationnelles

1/ Présentation de SQL Server :

Historisation des données

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

Bases de Données OLAP

1. Base de données SQLite

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Le langage SQL (première partie) c Olivier Caron

Introduction aux Bases de Données 2004/2005

1 Position du problème

Notes de cours : bases de données distribuées et repliquées

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

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

Sybase Adaptive Server Enterprise 15

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

Le langage SQL Rappels

Master Exploration Informatique des données DataWareHouse

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

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Pour les débutants. langage de définition des données

Comprendre les bases de données

Cours 4 : Agrégats et GROUP BY

KPI (Key Performance Indicator) dans MOSS

Corrigés détaillés des exercices

Installation d'un serveur FTP géré par une base de données MySQL

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Optimisation SQL. Quelques règles de bases

Exercices sur SQL server 2000

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Intégrité sémantique dans les bases de données relationnelles

Bases de données Cours 4 : Le langage SQL pour ORACLE

Auto-évaluation Oracle: cours de base

Présentation Windows Azure Hadoop Big Data - BI

I4 : Bases de Données

Résumé S Q L. Auteur: Alexandre PATIN Edition: 22 février alexandre.patin@free.fr URL :

A QUOI SERVENT LES BASES DE DONNÉES?

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

SUPPORT DE COURS / PHP PARTIE 3

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Devoir Data WareHouse

LE LANGAGE SQL2 1. INTRODUCTION

OpenPaaS Le réseau social d'entreprise

Les BASES de DONNEES dans WampServer

BD51 BUSINESS INTELLIGENCE & DATA WAREHOUSE

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Développement de base de données Microsoft SQL Server Durée : 5 jours Référence : DPSQL12. Contenu

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

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

TP Bases de données réparties

Réplication logique avec PostgreSQL 9.4

Encryptions, compression et partitionnement des données

Université de Nice Sophia-Antipolis. Langage SQL. version 5.7 du polycopié. Richard Grin

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

Gestion des utilisateurs et de leurs droits

Exercices et solutions

Les bases de données

Bases de données. Mihaela Mathieu

Structured Query Language

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

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

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

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Cours: Les Jointures 1

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

Optimisation de MySQL

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Transcription:

Modélisation et définition de données II 1 Modélisation d un emploi du temps On désire gérer les emplois du temps des différents personnels (enseignants, enseignantschercheurs et chercheurs) de l UFR, pour savoir à tout moment s il est possible de les joindre, et où. Pour cela, on considère que, en dehors des périodes où ils peuvent être joints dans leur bureau, les personnels peuvent être en réunion, quel que soit leur statut. Une réunion est désignée par une date précise, une tranche horaire et une salle de réunion. On veut connaître les autres personnes participant à la réunion. Chaque personne est désignée par son nom, son prénom, le bureau où on peut la joindre. Les enseignants peuvent, de plus, être en cours. Un cours est identifié par la matière enseignée à laquelle est affectée toujours la même salle. Il est désigné par une période de début et de fin (ex. de février à mai), un jour de la semaine, une tranche horaire et une salle de cours. Plusieurs enseignants peuvent enseigner la même matière dans l année, à des jours et créneaux horaire différents. Un enseignant peut enseigner plusieurs fois la même matière dans l année, à des périodes différentes. Les chercheurs peuvent être à certaines périodes de l année en mission en dehors de l UFR. Une mission est désignée par une date de début et de fin, un lieu de mission avec le numéro de téléphone correspondant. Les chercheurs appartiennent à un laboratoire dont on peut joindre le secrétariat en cas d urgence. Les enseignants-chercheurs sont à la fois enseignants et chercheurs, avec un pourcentage plus ou moins grand d enseignement (par rapport à la recherche) à effectuer. Ils peuvent donc être soit en réunion, soit en mission, soit en cours. Établir le schéma Entité-Association de cette application. Ne pas oublier de préciser les cardinalités des associations et les identificateurs des entités. N oubliez pas de respecter les règles de bonnes conduites. Réfléchissez aux contraintes que vous pouvez imposer sur cette base de données. CREATE SCHEMA td6 ; SET s e a r c h p a t h TO td6 ; CREATE SEQUENCE td6. s e q p e r s o n n e l i d ; CREATE TABLE p e r s o n n e l ( p e r s o n n e l i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q p e r s o n n e l i d : : r e g c l a s s ), nom CHARACTER VARYING( 3 0 ) NOT NULL, prenom CHARACTER VARYING( 3 0 ) NOT NULL, bureau INTEGER, UNIQUE(nom, prenom ) CREATE SEQUENCE td6. l a b o r a t o i r e i d ; CREATE TABLE td6. l a b o r a t o i r e ( l a b o r a t o i r e i d INTEGER PRIMARY KEY DEFAULT n e x t v al ( td6. l a b o r a t o i r e i d : : r e g c l a s s ), nom CHARACTER VARYING( 3 0 ) NOT NULL, s e c r e t a r i a t CHARACTER( 1 0 ) CHECK( s e c r e t a r i a t SIMILAR TO 0[0 9]{9} ), UNIQUE(nom) CREATE TABLE td6. chercheur ( l a b o r a t o i r e i d INTEGER REFERENCES td6. l a b o r a t o i r e ) INHERITS( td6. p e r s o n n e l 1

CREATE TABLE td6. e n s e i g n a n t ( ) INHERITS( td6. p e r s o n n e l CREATE TABLE td6. e n s e i g n a n t c h e r c h e u r ( pourcentage INTEGER CHECK(0 < pourcentage AND pourcentage <100) ) INHERITS ( td6. chercheur, td6. e n s e i g n a n t CREATE SEQUENCE td6. s e q s a l l e i d ; CREATE TABLE td6. s a l l e ( s a l l e i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q s a l l e i d : : r e g c l a s s ), batiment c h a r a c t e r varying ( 3 0 ), numero i n t e g e r, UNIQUE( batiment, numero ) CREATE SEQUENCE td6. s e q m i s s i o n i d ; CREATE TABLE td6. mission ( m i s s i o n i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q m i s s i o n i d : : r e g c l a s s ), l i e u CHARACTER VARYING (100) NOT NULL, s t a r t d a t e TIMESTAMP, enddate TIMESTAMP CHECK ( s t a r t d a t e < enddate ), p e r s o n n e l i d INTEGER REFERENCES td6. chercheur, EXCLUDE USING g i s t ( p e r s o n n e l i d WITH =, t s r a n g e ( s t a r t d a t e, enddate ) WITH &&) ALTER TABLE td6. chercheur ADD CONSTRAINT pk chercheur PRIMARY KEY ( p e r s o n n e l i d ALTER TABLE td6. e n s e i g n a n t ADD CONSTRAINT pk enseignant PRIMARY KEY ( p e r s o n n e l i d ALTER TABLE td6. e n s e i g n a n t c h e r c h e u r ADD CONSTRAINT p k e n s e i g n a n t c h e r c h e u r PRIMARY KEY ( p e r s o n n e l i d CREATE SEQUENCE td6. s e q r e u n i o n i d ; CREATE TABLE td6. reunion ( r e u n i o n i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q r e u n i o n i d : : r e g c l a s s ), s a l l e i d INTEGER REFERENCES td6. s a l l e, s t a r t d a t e TIMESTAMP, enddate TIMESTAMP CHECK ( s t a r t d a t e < enddate ), EXCLUDE USING g i s t ( s a l l e i d WITH =, t s r a n g e ( s t a r t d a t e, enddate ) WITH &&) CREATE TABLE td6. p e r s o n n e l r e u n i o n ( r e u n i o n i d INTEGER REFERENCES td6. reunion, p e r s o n n e l i d INTEGER REFERENCES td6. p e r s o n n e l CREATE SEQUENCE td6. s e q m a t i e r e i d ; CREATE TABLE td6. matiere ( m a t i e r e i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q m a t i e r e i d : : r e g c l a s s ), t i t r e CHARACTER VARYING( 3 0 ) CREATE SEQUENCE td6. s e q c o u r s i d ; CREATE TABLE td6. cours ( c o u r s i d INTEGER PRIMARY KEY DEFAULT nextval ( td6. s e q c o u r s i d : : r e g c l a s s ), m a t i e r e i d INTEGER REFERENCES td6. matiere, semestre INTEGER CHECK( semestre IN ( 1, 2 ) ), j o u r CHARACTER VARYING( 8 ) CHECK( j o u r IN ( l u n d i, 2

mardi, mercredi, j e u d i, vendredi, samedi, dimanche ) ), heure debut time, h e u r e f i n time CHECK ( heure debut < h e u r e f i n ), p e r s o n n e l i d INTEGER REFERENCES td6. enseignant, s a l l e i d INTEGER REFERENCES td6. s a l l e, EXCLUDE USING g i s t ( s a l l e i d WITH =, j o u r WITH =, t s r a n g e ( date 2000 01 01 + heure debut, date 2000 01 01 + h e u r e f i n ) WITH &&) ALTER TABLE td6. c o u r s ADD COLUMN annee INTEGER CHECK ( annee >=1970 CREATE TABLE td6. c a l e n d r i e r ( annee INTEGER CHECK ( annee >= 1970), semestre INTEGER CHECK ( semestre IN ( 1, 2 ) ), CONSTRAINT p k c a l e n d r i e r PRIMARY KEY( annee, semestre ), date debut date, d a t e f i n date CHECK( date debut< d a t e f i n ), CONSTRAINT compat CHECK (EXTRACT(YEAR FROM date debut )=annee ) ALTER TABLE td6. cours ADD CONSTRAINT e x c l e n s e i g n a n t EXCLUDE USING g i s t ( p e r s o n n e l i d WITH =, j o u r WITH =, t s r a n g e ( date 2000 01 01 + heure debut, date 2000 01 01 + h e u r e f i n ) WITH && 2 Proposer des requêtes pour répondre aux questions suivantes 1. Combien y a-t-il de clients à Moscou? SELECT COUNT( customer id ) FROM s a k i l a. customer NATURAL JOIN s a k i l a. c i t y WHERE c i t y= Moscow ; s a k i l a. address NATURAL JOIN 2. Pour chaque pays indiquez le nombre de clients. SELECT country,count( customer id ) FROM s a k i l a. customer NATURAL JOIN s a k i l a. address NATURAL JOIN s a k i l a. c i t y NATURAL JOIN s a k i l a. country GROUP BY c o u n t r y i d ; 3. Pour chaque customer_id, quelle est la catégorie de film qu il a le plus loués? WITH NbRented AS (SELECT customer id, c a t e g o r y i d, COUNT( f i l m i d ) as 3

N FROM r e n t a l NATURAL JOIN i n v e n t ory NATURAL JOIN GROUP BY customer id, c a t e g o r y i d ) f i l m c a t e g o r y SELECT customer id, c a t e g o r y i d FROM NbRented as R WHERE N = ( SELECT MAX(N) FROM NbRented WHERE customer id = R. customer id 4. Quel est le nombre moyen de clients par pays? WITH CustomerPerCountry AS (SELECT country,count( customer id ) AS N FROM s a k i l a. customer NATURAL JOIN s a k i l a. address NATURAL JOIN s a k i l a. c i t y NATURAL JOIN s a k i l a. country GROUP BY c o u n t r y i d ) SELECT AVG(N) FROM CustomerPerCountry ; 5. Lister les pays pour lesquels toutes les villes ont au moins un client. WITH CityWithNoCustomer AS (SELECT c i t y i d, c o u n t r y i d FROM s a k i l a. c i t y as V WHERE NOT EXISTS (SELECT FROM customer NATURAL JOIN address WHERE c i t y i d=v. c i t y i d ) ) SELECT c o u n t r y i d FROM s a k i l a. country WHERE c o u n t r y i d NOT IN (SELECT c o u n t r y i d FROM CityWithNoCustomer 6. Déterminer la liste des films disponibles dans toutes les pays. L agrégation est pratique dans ce cas. On compte le nombre de pays où le film est disponible et on vérifie que c est le même nombre que le nombre de pays. SELECT f i l m i d FROM i n v e n t o r y NATURAL JOIN s t o r e NATURAL JOIN address NATURAL JOIN c i t y GROUP BY f i l m i d HAVING COUNT(DISTINCT c o u n t r y i d ) = (SELECT COUNT( c o u n t r y i d ) FROM s a k i l a. country 7. Créer un rapport qui montre le titre, la note, la catégorie, le prix, la longueur des films qui durent plus de trois heures triés par taux de location décroissants. 3 Contraintes On utilisera les schémas Sakila et world. Exprimer en SQL les contraintes suivantes : 1. Une capitale doit appartenir au pays dont elle est la capitale. 4

2. La somme des pourcentages des langues parlées dans un pays ne doit pas excéder 100. 3. La somme des populations des villes d un pays doit être inférieur ou égal à sa population totale. 4. Un même DVD ne peut pas être loué deux fois en même temps. 5. Les locations de DVD sont toujours effectuées par un employé qui travaille dans le magasin où se trouve le DVD. 6. Les clients ont été enregistrés dans la base de données (champ create_date) avant leur première location. 5