TD1- Conception d une BDD et Utilisation sous Access et Oracle

Dimension: px
Commencer à balayer dès la page:

Download "TD1- Conception d une BDD et Utilisation sous Access et Oracle"

Transcription

1 TD1- Conception d une BDD et Utilisation sous Access et Oracle Partie 1 - Conception Il s'agit de M. Bushboy, le directeur d'une agence de location de voitures qui vous a appelé (en tant qu'analyste expert) pour vous demander de l'aider à informatiser son SI. Voilà le discours enregistré entre M. Bushboy et vous : M. Bushboy : je souhaite optimiser le fonctionnement de mes agences situées partout en France Vous : Avant de commencer mon analyse, pouvez-vous me dire pourquoi? M. Bushboy : Malheureusement, je ne peux pas vous en dire plus, c'est confidentiel Vous : D accord, pouvez-vous m expliquer comment se déroule une location? M. Bushboy : En effet, un client arrive dans une de nos agences (situées dans différentes villes mais identifiées par un code) et signe un bon de location après avoir choisi son véhicule. Vous : Que renseignez vous sur ce fameux bon? M. Bushboy : Et bien, nous avons un numéro de bon et bien sûr une date de début de location ainsi que l immatriculation du véhicule concerné. Vous : le prix varie selon quel critère? M. Bushboy : Le prix varie évidemment en fonction du nombre de kilomètres effectués par le client. Nous relevons d ailleurs ceci lors du retour du véhicule, ce qui nous permet de compléter notre bon de location en saisissant la date de retour et le kilométrage effectué. Vous : Et la location d une Ferrari est équivalente à celle d un C15? M. Bushboy : A votre avis? Vous : Je n'en ai aucune idée. M. Bushboy : Bien sûr que non! On voit que vous n'avez jamais géré une agence de location. Nous classons chaque véhicule par catégorie et chaque catégorie possède un prix au kilomètre. Nous calculons ensuite le prix de la location en multipliant le nombre de kilomètres parcourus par le prix au kilomètre de la catégorie correspondant au véhicule loué. Vous : Avez-vous un système de point de fidélité pour vos meilleurs clients? M. Bushboy : euh non nous gardons seulement ses préférences au niveau des catégories de véhicule. En fait, il donne une note entre 1 et 10 pour les différentes catégories qu il a déjà utilisées. Vous : Gardez-vous un historique des notes données à une catégorie par une client? M. Bushboy : cela serait effectivement intéressant mais pas pour l instant. Vous : conformément à votre déclaration à la CNIL, quelles informations traitez vous sur vos clients? M. Bushboy : On leur donne juste un numéro et on conserve leur nom et leur ville. Vous : Mais comment vous faites en cas de réservation par téléphone? M. Bushboy : Nous procédons de la même manière. 10/09/ Richard CHBEIR, Florent BARTH

2 Vous : Mais si vous voulez rappeler le client en cas de problème (indisponibilité de véhicule, grève, etc.) comment vous faites? M. Bushboy : Bah, c'est une bonne question. Pour l'instant, nous ne le faisons pas. Vous : D'accord, dites-moi comment vous gérez la maintenance de votre parc? M. Bushboy : Nous conservons pour chaque véhicule le kilomètre de révision. Vous : C'est tout? M. Bushboy : Ben oui. Vous : Ok, je vais étudier votre SI et je vous contacterai la semaine prochaine. Merci M. Bushboy. Travail à faire : 1) Ecrivez le schéma E-A (MCD). 2) Trouvez un modèle logique relationnel correspondant (MLD). Partie 2 QBE Access 3) Ouvrez une session et démarrez le SGBDR ACCESS 4) Importez les données à l intérieur de votre nouvelle BDD se trouvant actuellement sous format XML (le chemin d accès sera donné par votre enseignant). L importation pourra générer des erreurs qui n ont pas d impact sur la suite du TD. 5) Créez maintenant les relations entre les tables du schéma selon votre modèle logique. 6) Traduisez les requêtes suivantes en QBE (Query By Example) : 1. Liste des véhicules par ordre croissant du kilométrage de révision. 2. Liste des clients de DIJON et PARIS. 3. Liste des «VilleClient» distinctes en minuscules. 4. Liste des clients dont le nom commence par un «B». 5. Liste des véhicules loués dont la date de début de location se situe entre le 01/01/2002 et le 01/04/ Nom du Client qui a fait le plus grand trajet avec un véhicule. 7. Pour organiser des transferts de véhicules permettant d équilibrer la répartition du parc, on désire connaître le nombre de véhicules disponibles par classe pour chaque agence. 8. Pour détecter certaines erreurs de saisies, on désire connaître la liste des véhicules faisant l objet de plusieurs locations simultanées. 9. Liste des Clients et le montant qu ils ont dû payer pour chaque location. 10. Liste des Villes et du nombre de clients par ville pour les villes ayant plus de deux clients. Partie 3 : SQL Oracle 7) Tracez le schéma E-A (MCD) précédent sous Windesign. Choisissez bien vos types de données. Pour les dates, choisissez ici le type texte car dans Oracle la manipulation des dates nécessite un traitement particulier qui sera abordé dans les prochains TD. 10/09/ Richard CHBEIR, Florent BARTH

3 8) Générez le modèle logique sous Windesign et produisez le script SQL de création du schéma de la BDD sous Oracle. Pensez à décocher l option de "création" et d "ouverture" de la base. 9) Avant de pouvoir utiliser Oracle sur votre machine, il faut configurer sa connexion au serveur Oracle de la manière suivante : Lancez Oracle Net Configuration, et rajoutez la BDD «BDDIQ» du serveur serv-iq-ora (ayant une adresse IP ) en choisissant «Configuration d un nom de service réseau local» dans la fenêtre qui va apparaître (Figure 1). Indiquer le nombre de port utilisé par défaut pour la connexion ici : Figure 1: Assistant de Configuration de la connexion vers le serveur Oracle 10) Lancez maintenant SQL*Plus (ou SQL PLUS worksheet) et utilisez Nom d utilisateur : Sx_Py Mot de passe : Sx_Py Chaîne hôte : BDDIQ Demandez à votre enseignant la valeur de x et y Vous pouvez consulter l annexe pour avoir plus de détails sur SQL*Plus. 11) Créez maintenant le schéma généré par WinDesign dans Oracle. Insérez les données dans Oracle se trouvant dans la base Access. Pour insérer un enregistrement en SQL, vous utilisez les syntaxes suivantes : Ou INSERT INTO nom_table VALUES(valeur_champs_1, valeur_champs_1, ) INSERT INTO nom_table(champi, champ j) VALUES(valeur_champs_i, valeur_champs_j) N oubliez pas que vous pouvez exécuter un fichier externe dans SQL*Plus. Pensez à préparer un script SQL global permettant d insérer la totalité de vos données. Vous avez toute la liberté pour trouver une solution qui vous évite de saisir toutes les données. 10/09/ Richard CHBEIR, Florent BARTH

4 12) Exprimez avec SQL*Plus les requêtes suivantes permettant d extraire les informations suivantes : 1. Liste de toutes les agences de l entreprise. 2. Liste des clients de DIJON. 3. Liste des clients dont le nom commence par un «B». 4. Liste des véhicules (numeroimmatriculation et codeclasse) qui n ont jamais été loués. 5. Nombre de km effectués tout véhicule confondu par client par ordre décroissant. 6. Quels sont les véhicules disponibles à Dijon dans les classes préférées de Mr Baillekar (triées par préférences décroissantes). 7. Nombre de clients à DIJON. 8. Code de l agence qui n a pas de voiture en «stock». 9. Liste des clients qui ont effectué plus de 300 Km avec un véhicule de type Sportive. 10/09/ Richard CHBEIR, Florent BARTH

5 Annexe SQL*Plus est l'utilitaire d'oracle qui permet de soumettre directement des commandes SQL. Il ne reste plus qu'à effectuer votre première requête (attention au point-virgule à la fin de la commande) : SQL> select table_name from user_tables; Ou SQL> select * from cat; Pour insérer un commentaire, il suffit de mettre : SQL> -- c est un commentaire Cette requête permet de vous afficher la liste des tables disponibles dans votre schéma. Pour décrire la structure d une table, utilisez la commande : SQL> describe nom_table; SQL*Plus permet de regrouper un ensemble de commandes SQL dans un fichier, et de les exécuter ensuite en utilisant la commande: Ou SQL> start «Nom_fichier» ; Pour obtenir de l'aide sur la commande donnée en argument, utiliser la commande SQL> Help «commande» Autres commandes : SQL> list; SQL> run; SQL> save fichier; SQL> get fichier; SQL> exit; -- Affiche le dernier ordre exécuté -- exécute le contenu du buffer -- enregistre le contenu du buffer dans fichier.sql -- stocke le fichier.sql dans le buffer -- Sortir de SQLPLUS 10/09/ Richard CHBEIR, Florent BARTH