TRAVAUX PRATIQUES DE BASES DE DONNEES PARTIE A : CONCEPTION DU MCD ET MLD



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

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

Bases de données relationnelles

Les bases de données

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

SQL Historique

TP Bases de données réparties

A QUOI SERVENT LES BASES DE DONNÉES?

Le Langage SQL version Oracle

TP Contraintes - Triggers

Langage SQL : créer et interroger une base

Olivier Mondet

CREATION WEB DYNAMIQUE

1 Introduction et installation

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

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

Le langage SQL Rappels

Le Langage De Description De Données(LDD)

Compétences Business Objects

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

Application web de gestion de comptes en banques

Auto-évaluation Oracle: cours de base

16H Cours / 18H TD / 20H TP

I. MySQL : Serveur et SGBD

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

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

TP3 : Creation de tables 1 seance

I4 : Bases de Données

Devoir Data WareHouse

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. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

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

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

MySQL / SQL EXEMPLES

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

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

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

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

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

Master Exploration Informatique des données DataWareHouse

INFO 364 : Bases de Données Projet Professeur : Esteban Zimányi Assistants : Pierre Stadnik et Mohammed Minout Année Académique :

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

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

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

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

Les BASES de DONNEES dans WampServer

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

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

UML et les Bases de Données

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Cours: Administration d'une Base de Données

PROJET 1 : BASE DE DONNÉES REPARTIES

Rappel sur les bases de donné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

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

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

Création et Gestion des tables

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

Installation et Mise en œuvre de MySQL

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

Chapitre 10. Architectures des systèmes de gestion de bases de données

MODE OPERATOIRE OPENOFFICE BASE

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Intégrité des données

BTS/CGO P10 SYSTEME INFORMATION Année

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

1/ Présentation de SQL Server :

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Bases de données réparties: Fragmentation et allocation

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Présentation Windows Azure Hadoop Big Data - BI

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

Corrigés détaillés des exercices

1. Base de données SQLite

Bases de données - Modèle relationnel

Bases de données et sites WEB Licence d informatique LI345

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

Pratique et administration des systèmes

Raja Bases de données distribuées A Lire - Tutoriel

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

1. Introduction Création d'une requête...2

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Module BDR Master d Informatique (SAR)

Bases de données élémentaires Maude Manouvrier

LE MODELE CONCEPTUEL DE DONNEES

INTRODUCTION AU DATA MINING

Dossier I Découverte de Base d Open Office

Comprendre Merise et la modélisation des données

Bases de Données. Plan

Transcription:

TRAVAUX PRATIQUES DE BASES DE DONNEES PARTIE A : CONCEPTION DU MCD ET MLD Cette partie est à réaliser sur papier uniquement. Il s agit de réaliser un modèle conceptuel de données (MCD) suivi du modèle logique de données (MLD) dans le modèle relationnel. Le cas étudié est celui d une petite entreprise dont les règles de gestion sont énoncées ci-dessous. Dans la suite du TP, une partie de ce MLD sera implémenté sur le SGBD cible (Oracle, Access, etc.) Méthodologie : Réaliser des sous schéma (par exemple le sous schéma des employés avec les divisions) en indiquant chaque fois les règles de gestion utilisées. Penser à indiquer les cardinalités. Faire alors l union des sous schémas et vérifier la cohérence globale. Appliquer les règles de vérification vues en cours. Passer alors au MLD (rappel, une association de cardinalité 1-1 fusionne avec l entité) ATTENTION : Si certaines règles ou précisions vous manquent, spécifiez-les. Règles de gestion : Règle 1 : L entreprise est organisée en divisions identifiées par un numéro, désignées par un nom. Chaque division est dirigée par un employé de l entreprise. Règle 2 : Un employé est identifié par un matricule, nommé par son nom et prénom. Il travaille dans une seule division où il exerce une fonction qui peut être Président (1 pour l entreprise), Directeur (1 par division) ou Vendeur. Un employé perçoit un salaire. Les informations suivantes sur les employées seront stockées : adresse complète, téléphone, date de naissance. Règle 3 : Un employé perçoit une prime sur les ventes qu il réalise directement (vendeur) ou indirectement (directeur ou président). La prime directe s élève à 5% des ventes, les primes indirectes s élèvent à 1% des ventes. Règle 4 : Les clients de l entreprise sont identifiés par un numéro. Les informations suivantes sur les clients seront stockées : nom, prénom, adresse complète, téléphone. Règle 5 : Une vente est identifiée par un numéro de vente. Elle est réalisée par un employé pour un client. De plus les informations suivantes seront stockées : date de la vente, date de livraison, adresse complète de livraison (incluant nom, prénom, adresse et téléphone), frais de port. Règle 6 : Une vente concerne un ou plusieurs produits. Pour chaque produit vendu, on indiquera la quantité vendue. Une remise peut être effectuée en fonction de cette quantité. C est l employé (vendeur) qui décide au cas par cas du taux de cette remise. Règle 7 : Un produit est identifié par un numéro. Il possède un nom et un prix unitaire. Il est fourni par un seul fournisseur. Règle 8 : Un fournisseur est identifié par un numéro. Les informations suivantes sur les fournisseurs seront stockées : nom, prénom, adresse complète, téléphone. Règle 9 : Une vente est livrée par un transporteur (DHL, la poste, etc.). Un transporteur est identifié par un numéro, possède un nom, un prénom, une adresse complète et un téléphone. Page 1

Partie B : Algèbre relationnelle Rappels : Notations de l algèbre relationnelle : Union : R U S Différence : R - S Projection : Liste d attributs (R) Restriction : σ Critère (R) Produit cartésien : Intersection : Jointure : Division : R x S R S R S R S Exercice 1 : Soient les relations suivantes : RESULTATS (R) ENSEIGNEMENTS (S) Cours Etudiant Note Cours Prof Math Toto A Math Martin Math Lulu B Physique Dupont Latin Toto A Latin Martin Physique Toto A Calculer et exprimer en français σ Cours = Math (R) Cours (S) - Cours (R) Cours (R) - Cours (S) Etudiant (R ( Cours (S))) Prof (σ Note = A et Etudiant = Toto (R S)) Exercice 2 : Expression des opérateurs dérivés R(X,Y) et S(X, Z) sont deux relations, exprimer les opérateurs suivants à l'aide des opérateurs de base: σ, π,, -, Jointure naturelle, théta jointure : Semi-Join Anti-Join Left Outer Join Full Outer Join R(X,Y) et S(Y) sont deux relations, Division : R S R < S R S R= S R= = S R S = Q(X). Exprimer Q(X) Exercice 3 : Soit le schéma de base suivant : SALLE FILM PRODUIT VU AIME JOUE (Nom, Horaire, Titre) (Titre, Description, Réalisateur) (Producteur, Titre) (Spectateur, Titre) (Amateur, Titre) (Acteur, Titre) Ecrire les requêtes suivantes en algèbre relationnelle : 1. Où et à quelle heure peut on voir le film Alien? 2. Où peut-on voir un film avec Fernandel (acteur)? 3. Quels sont les acteurs qui ont produit un film? 4. Quels sont les acteurs qui produisent un film dans lequel ils jouent? 5. Quels acteurs jouent dans les films de Blier (réalisateur)? 6. Quels acteurs ne jouent que dans les films de Blier (réalisateur)? 7. Quels acteurs jouent dans tous les films de Blier (réalisateur)? 8. Quels sont les spectateurs qui aiment tous les films qu ils voient? 9. Quels spectateurs aiment un film qu ils n ont pas vu? 10. Quels films ne passent dans aucune salle? 11. Qui ne produit aucun film de Alan Parker (réalisateur)? 12. Quels sont les producteurs qui ne voient que les films qu ils produisent? Page 2

Partie C : Installer / Configurer Oracle Express Edition V.10 Pour une installation windows : Installer Oracle Express Edition V.10. 1. Récupérer le fichier d'installation a. http://www-smis.inria.fr/~bouganim/tp/oracle 2. Installer : choisir toutes les options par défaut, utiliser comme password "oracle" 3. Créer l'utilisateur "TP" avec password "oracle" a. Se connecter en tant qu'administrateur (login system password oracle) b. Créer l'utilisateur TP/oracle et lui donner tous les privilèges c. Se déconnecter 4. Se connecter avec le login TP et password oracle IMPORTANT : Pendant toute la durée du TP : Ouvrir une fenêtre éditeur (texte, word ou autre) et copier à chaque fois les requêtes envoyées à Oracle (dans leurs dernières versions) pendant le TP. Le but est double : (1) Cela me permet de savoir ce que vous avez fait pour vous aider (2) Cela sert de compte rendu de TP. Page 3

Partie D : Création / Modification du schéma / Insertion Il s'agit de construire le schéma de la base. Nous nous intéresserons dans la suite du TP à une sous partie du schéma simplifié et restreint aux commandes. Pour minimiser la saisie, on utilisera comme noms des tables les noms abrégés (3 lettres). Table client : CLI (NumCli, NomCli, Pays) Table commande : COM (NumCom, NumCli, FraisPort, AnCom); Table détail commande : DET (NumCom, NumPro, Qte, Remise) Table produit : PRO (NumPro, NumFou, NomPro, TypePro) Table fournisseur : FOU (NumFou, NomFou, Pays, Tel); AnCom : Année de commande (ex 1992) FraisPort : Frais de port NomCli : Nom du client NomFou : Nom du fournisseur NomPro : Nom du produit NumCli : Numéro de client NumCom : Numéro de la commande NumFou : Numéro de fournisseur NumPro : Numéro de produit Pays : Pays du client ou du fournisseur Qte : Quantité commandée Remise : Remise effectuée Tel : Téléphone du fournisseur TypePro : Type de produit D1. Dessiner sur papier le schéma de la base. Faites ressortir les clés primaires (en souligné) et étrangères (en souligné et pointillé) Il servira tout au long du TP. D2. Créer les relations de la base ci-dessus (pensez aux clés primaires et étrangères) D3. Quel ordre faut il respecter lors de la création de ces tables? Est-ce le seul possible? D4. Vérifier vos créations : Utiliser la commande : desc <nomtable> D5. Modifier un type précédemment défini : NomCli devient char(30). D6. Ajouter un attribut Téléphone (Tel) pour les clients D7. Ajouter le prix unitaire (PrixUnit) pour les produit D8. Rajoutez une contrainte de nom nullité à l'attribut NomPro D9. Insérer un jeu de données cohérent dans vos relations (un ou deux tuples par relation) D10. Essayez l'interface d'oracle Express (cf. Navigateur d'objets) D11. Vider toutes vos tables. Quel ordre faut il respecter? Est-ce le seul possible? D12. Supprimer toutes vos tables. Quel ordre faut il respecter? Est-ce le seul possible? - Exemple : create table PRO ( NumPro number(5) constraint Cle_Pro primary key, NumFou [number(2)] constraint Pro_Ref_Fou references FOU, NomPro char(20) constraint NomPro_Not_Null not null); - Les types disponibles sont : number(n), char(n), date, number(m,n) - Faire attention à la cohérence de type des attributs de jointures (même domaine). - Modifier le type des attributs : ALTER TABLE <nom table> MODIFY ( <attr> newtype, ) - Ajouter un attribut à une relation : ALTER TABLE <nom table> ADD ( <newattr> type, ) Page 4

Partie E : Insertion massive de données Mise en place : Récupérer les fichiers CREATE.sql, CLI.ctl, COM.txt, DET.ctl, PRO.ctl, FOU.ctl (http://www-smis.inria.fr/~bouganim/tp/insertion) Création de la base à l'aide d'un script E1. Exécutez le script CREATE.sql (Utilisez l'interface à cet effet) Chargement massif de données : Utilisation de SQL Loader * SQL loader est un utilitaire Oracle permettant d'importer massivement des données depuis un fichier au format texte. Une entête de fichier permet de préciser le format de ce dernier. Le chargement d'un fichier texte a les effets suivants : Chargement dans la base des données valides Création d'un fichier de log indiquant le déroulement des opérations Création éventuelle d'un fichier.bad contenant les données invalides E2. Quatre des cinq fichiers fournis comportent l'entête (extension ctl). Rajoutez l'entête du cinquième fichier. E3. Chargez les cinq relations en se basant sur l'exemple ci-dessous C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlldr TP/oracle c:\tp\cli.ctl c:\tp\cli.log E4. Vérifier que vous avez l'intégralité des données : 91 Clients, 1078 Commandes, 2809 Détails, 77 Produits et 29 Fournisseurs. E5. Trouvez les erreurs dans les fichiers, corrigez les E6. Supprimez le contenu des tables incomplètes E7. Rechargez les données valides. Exemples : LOAD DATA (Charger des données) INFILE * (les données se trouvent dans ce fichier) APPEND (On veut les ajouter dans la table.) INTO TABLE CLI (c est dans la table CLI) FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY (Attention quote/guillemet/quote) (champs terminés par des ;) ( encadrés éventuellement par des " ) (CodeCli,NomCli,Pays,Tel) (liste des attributs indiqués ci-dessous) BEGINDATA (les données commencent après cet inst ) 1, Maria,Pologne,4867427275 (1 er tuple codecli = 1, nomcli = Maria, etc.) 2,"Ana",Autriche","4905219433" (2 ème tuple.) 3,"Antonio","Espagne","7062001573" (3 ème tuple ) Page 5

Partie F : Insertion / Mise à jour / suppression de données F1. Mettre en majuscule les noms des clients (fonction UPPER) F2. Multiplier par deux les remises associées aux commandes passées après 1996 F3. Supprimer les clients français F4. Supprimer les clients qui ont commandé avant 1991 F5. Récupérer le fichier CLEAN.sql sur http://www-smis.inria.fr/~bouganim/tp/manip F6. Exécutez le script CLEAN.sql (Utilisez l'interface à cet effet) Partie G : Manipulation des données Répondez aux questions suivantes en interrogeant votre base : G1. Liste des clients français triés par ordre alphabétique? G2. Noms des clients français ou anglais? G3. Quels sont les produits vendus à "Antonio" G4. Quels sont les fournisseurs de produits de prix < 50 FF G5. Y a-t-il des fournisseurs de produits de prix < 50 FF et supérieur à 400 FF? G6. Nom des fournisseurs qui fournissent le produit Chef le moins cher? G7. Y a-t-il des fournisseurs qui sont clients (même nom) G8. Quels sont les fournisseurs qui ne fournissent que des produits de prix < 50 FF G9. Quels sont les fournisseurs qui ne fournissent aucun produits de prix < 50 FF G10. Noms des clients qui n'ont pas passé de commandes? G11. Couples des numéros de clients différents? G12. Nombre de produits dans la base G13. Pour chaque type de produit, donner le prix moyen et le prix max.? G14. Même question mais uniquement pour les types où il y a plus de 10 produits. G15. Donner pour chaque fournisseur la liste des noms des produits par ordre alphabétique G16. Donner pour chaque client, la liste des produits commandés et leur nombre pour l'ensemble des commandes passées. G17. Calculez, pour chaque ligne de commande, le prix total à payer. (Penser à la remise et à la quantité) G18. Calculez le total à payer par commande G19. Calculez le total à payer par client G20. Quels sont les clients qui ont commandé plus de 10000 FF Page 6

Partie H : Concurrence d'accès dans Oracle Préparation On va maintenant étudier le comportement concret d'oracle en cas d'accès concurrents à la même ressource. Pour cela on va simuler l'exécution concurrente de programmes à l'aide du petit ensemble de lectures/écritures. Rajouter un attribut numérique à votre table CLI (champ nommé <Solde>) Créer 1 client nommés Joe (attention au majuscules/minuscules) Récupérez 3 fichiers, nommés Solde.sql, Depot.sql et Retrait.sql http://www-smis.inria.fr/~bouganim/tp/concurrence Solde.sql Depot.sql Retrait.sql PROMPT 'Solde de Joe'; SELECT Solde FROM CLI where NomCLI= 'Joe'; PROMPT 'Un dépôt de 6000 FF est fait sur le compte de Joe' UPDATE CLI SET solde = solde + 6000 WHERE NomCLI = 'Joe'; PROMPT 'Nouveau Solde de Joe'; SELECT Solde FROM CLI where NomCLI = 'Joe'; PROMPT 'Joe retire 4000 FF'; UPDATE CLI SET solde = solde - 4000 WHERE NomCLI = 'Joe'; PROMPT 'Nouveau Solde de Joe'; SELECT Solde FROM CLI where NomCLI = 'Joe'; Ouvrez deux fenêtres SQLPLUS (C:\oraclexe\app\oracle\product\10.2.0\server\BIN\sqlplus). Chaque session est considérée par ORACLE comme un utilisateur, et on a donc 2 utilisateurs, nommés 1 et 2, en situation de concurrence. Dans tout ce qui suit, on note INSTR i l'exécution de l'instruction INSTR par l'utilisateur i. Par exemple Depot 1 correspond à l'exécution du fichier Depot dans la première fenêtre par la commande @Depot. On note de même ROL i et COM i l'exécution des commandes rollback; et commit; dans la fenêtre i. Expérimentez les exécutions suivantes et essayez de comprendre le fonctionnement du verrouillage d'oracle. 1. L'utilisateur 1 (Joe) effectue un retrait. L'utilisateur 2 ne fait que consulter les soldes COM 1, COM 2, Solde 1, Solde 2,Retrait 1, Solde 2, ROL 1, Solde 1, Solde 2. 2. idem, mais avec un commit : COM 1, COM 2, Solde 1, Solde 2,Retrait 1, Solde 2, COM 1, Solde 1, Solde 2, 3. L'utilisateur 1 (Joe) fait un retrait, alors que son salaire est crédité par sa banque (utilisateur 2). Un blocage est apparu. Pourquoi? COM 1, COM 2, Solde 1, Solde 2, Retrait 1, Solde 2, Depot 2, Solde 1,COM 1, COM 2. Expérimentez les exécutions précédentes en spécifiant le mode suivant APRES CHAQUE COMMIT : SET TRANSACTION ISOLATION LEVEL SERIALIZABLE Comparez et expliquez comment Oracle verrouille les données. Page 7