Création de la Base de données pour le système réservation des salles PPE 1-3 Base de données Jordan Dutaillis Steveen Hanta Mathieu Collin Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 1 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 Contenu I. Introduction : ................................................................................................................................... 3 II. Le système de gestion de base de donnée (SGBD) ......................................................................... 3 A. B. III. Comparatif des différents SGBD.................................................................................................. 3 1. Apache Derby .......................................................................................................................... 3 2. MySQL Entreprise .................................................................................................................... 3 3. Oracle DataBase 11g Standard Edition One ............................................................................ 4 4. Microsoft SQL Server 2012 Standard (sort le 1 avril 2013) ..................................................... 4 Le SGBD retenu............................................................................................................................ 5 Le Processus de création de la base de données ........................................................................ 5 A. Le Modèle Conceptuel de Données ............................................................................................ 6 B. Le Modèle Logique des Données................................................................................................. 7 C. Le Modèle Physique de Données ................................................................................................ 8 IV. Les Scripts SQL ............................................................................................................................. 9 A. Le Script de création de la base de données ............................................................................... 9 B. Le Script d’insertion des données dans la base de données ..................................................... 12 C. Le jeu d’essai ............................................................................................................................. 16 D. Conclusion ................................................................................................................................. 17 2 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 CRÉATION DE BASE DE DONNÉES I. Introduction : La maison des ligues de Lorraine autrement appelée M2L est une entité pourvu de salles de réunion muni d’ordinateurs. Ces salles sont réservables depuis leur site Internet. Pour cela, le client doit fournir des informations essentiels, tels que son nom, son adresse, le type de réservation, la durée de réservation ou encore la salle dans laquelle il souhaite réserver. Ces réservations sont reliées à différents problèmes. En effet, quels types de système de gestion de base de données choisir ? Comment le mettre en place ? Comment sécuriser ces données? II. Le système de gestion de base de donnée (SGBD) A. Comparatif des différents SGBD De nos jours, il existe un grand nombre de SGBD au monde. L’équipe de professionnel de Kos Informatique a sélectionné les 4 meilleurs SGBD et les ont comparé pour choisir celui qui était le mieux adapté au attente du site M2L. Leurs choix ont été faits à partir de leur notoriété et des différents avis posté sur le net par divers utilisateurs expérimentés. C’est pourquoi, ci-après se trouve une comparaison des différents SGBD : 1. Apache Derby Apache Derby est une base donnée Open Source (Licence libre) mis en œuvre entièrement par l’environnement de programmation script Java. Il est basé sur les environnements script Java, Java DataBase Connectivity (JDBC) et SQL. Apache possède un faible encombrement : seulement 2.6 Mo. Le système ne nécessite aucune installation, il peut directement être embarqué sur l’application, il est d’ailleurs auto-administré et auto-optimisé, ce qui permet à l’utilisateur de se décharger de toute administration. Le point faible de ce moteur de base de données est son temps de préparation de requête mais des solutions ont été mis en place pour succomber à ce malus, une stratégie de réutilisation de requête est intégré. 2. MySQL Entreprise MySQL Entreprise est une base de données distribuée sous une double licence (GPL). Cependant elle prend 207 Mo de mémoire ce qui n’est pas négligeable. Son interface est simple d’utilisation et la sécurité des données est au point grâce à un sous-logiciel : MySQL Entreprise Backup. De plus c’est le logiciel le plus utilisé au monde, ce qui démontre ses performances. Il coute 11 844,00 € pour un serveur et 3 ans d’accès. Le tableau de bord du logiciel permet une supervision de chaque serveur SQL que dispose l’utilisateur dans une seule console qui fournit un récapitulatif. L’utilisateur pourra donc être averti de quelconque nouvelle requête effectué ou modifiée affectant le système. Il est aussi possible de visualiser les l’état de la base de données sur les serveurs graphiquement. 3 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 De plus, le moteur de base données intègre des conseillers qui permettent à l’utilisateur d’être averti des bogues spécifiques qui peuvent avoir un impact sur le système, les problèmes de paramétrages et de configurations sont aussi reportés auprès de l’utilisateur. Les conseillers peuvent aussi diagnostiquer les problèmes au niveau des performances matérielles. Ces conseillers peuvent aussi prendre un rôle actif sur le système, il peuvent conseillers l’utilisateur mais ils peuvent aussi avoir un rôle de supervision, l’utilisateur peut le programmer pour des tâches automatiques telles que la collecte automatiques de données et les stocker. Ils peuvent aussi effectuer des tâches spécifiques selon un planning. 3. Oracle DataBase 11g Standard Edition One Oracle DataBase est un des systèmes de gestion de base de données relationnel (SGBDR) les plus utilisés au monde, fournit par Oracle Corporation. Il permet à plusieurs utilisateurs d’accéder simultanément aux données tout en garantissant une disponibilité et des mécanismes de récupération en cas d’incident. Celui-ci offre des améliorations en termes de performance, de gestion, d’applications réseau et de routage. Contrairement à la version Standard, il n’y a pas de limite de stockage. Il est utilisable sur un serveur supportant un maximum de deux sockets, le prix de ce logiciel s’élève à 4 521,44 € HT pour 1 serveur et 5 licences d’accès (138.242 € par licence supplémentaire). http://www.microatlantic.com/oracle/Oracle%20Database%2011g.pdf 4. Microsoft SQL Server 2012 Standard (sort le 1 avril 2013) Microsoft SQL Server 2012 Standard s’occupe des fonctions de bases de base, d'analyse et de reporting basiques. Le système d’exploitation se vend sous une licence payante. Néanmoins, Pour couvrir un serveur physique, une licence devra être acquise pour chacun des cœurs de l’ordinateur hôte, avec un minimum de 4 « licences cœur » par processeur physique. L’application est assez gourmande en espace disque puisque rien que son fichier d’installation prend 4.02 Go d’espace disque. Etant une solution Microsoft, Microsoft SQL Server 2012 offre de meilleures performances pour certaines librairies du Framework.NET. Un des gros avantages de cette plateforme est qu’elle possède des fonctions avancé d’audit et d’administration simple à utiliser et à configurer. La stratégie de sécurité peut soit être définie par l’IT local ou soit par une configuration recommandé (selon de le type d’organisation). Cette solution de ne possède pas de limite de stockage de données. Cette solution est particulièrement orientée sur le Cloud, en effet Windows Azure qui est le service de Cloud Computing de Microsoft est associé à SQL Server 2012. Enfin, son prix est de 3 574,74 € HT pour 1 serveur et 10 licences d’accès. 4 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ B. Groupe B1 Le SGBD retenu Kos Informatique a du sélectionner le SGBD adapté aux besoins de M2L. De plus, la répartition du budget précédent de 35 000€ nous laisse le choix entre un logiciel payant (3802.04€ maximum) ou non. Kos Informatique a sélectionné les 4 meilleures bases de données du marché, payant ou non, et les a comparé pour choisir la meilleure, selon les critères suivants : - - Interface facile d’utilisation : Le professionnel manipulant la SGBD devra pouvoir facilement manipuler les données grâce au plus simple mais efficace des SGBD. Interface graphique ET ligne de commande OU uniquement ligne de commande : En effet, l’utilisation d’une base de données requiert un personnel expérimenté qui connait déjà toutes les facettes de la ligne de commande. Pour s’aider, une interface graphique pourra être envisagée. Environnement stable : Le logiciel choisis devra être stable, donc il ne devra jamais planter ou avoir de « bug ». Au prix de 3 574,74 €, Microsoft Server SQL 2012 Standard semble être le système d’exploitation répondant le mieux aux besoins de M2L. En effet, son interface, d’après les nombreuses captures d’écrans comparés prises sur le net, semble être assez simple d’utilisation faisant appel à une interface graphique ainsi qu’à une interface en ligne de commande. C’est pourquoi Kos Informatique a décidé de choisir Microsoft Server SQL 2012 Standard afin de gérer entièrement le système de gestion de base de données de M2L. III. Le Processus de création de la base de données La mise en place d’une base de données requiert 3 étapes. Nous devons donc tout d’abord effectué le MCD (Modèle conceptuel de Données), le MLD (Modèle Logique de Données) et le MPD (Modèle Physique de Données) qui est la structure finale de la base de données. Ces 3 modèles doivent être faits dans cet ordre-là. Ces 3 différentes étapes vont nous permettre de réaliser la base de données afin de répartir aux mieux les différentes informations que l’utilisateur va renseigner lors d’une réservation de salles. Ci-après se trouve donc le premier modèle : le MCD Le MCD ci-joint a pour but de conceptualiser l’application. Il y regroupe donc 8 tables : Clients, Type Client, Service, Confirmation, Tarif, Réservation, Type Réservation, Salle, Type Salle. Toutes ces tables sont reliées avec différentes cardinalités. 5 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ A. Groupe B1 Le Modèle Conceptuel de Données 6 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ B. Groupe B1 Le Modèle Logique des Données Ensuite se trouve l’avant dernière étape du modèle de données : Le Modèle Logique de Données (MLD). 7 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ C. Groupe B1 Le Modèle Physique de Données 8 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ IV. Groupe B1 Les Scripts SQL A. Le Script de création de la base de données Voici le script de création de la base de données de réservation des salles spécifique a Microsoft Server 2012. /*==============================================================*/ /* Nom de SGBD : Microsoft SQL Server 2008 */ /* Date de création : 02/03/2013 15:21:06 */ /*==============================================================*/ if exists (select 1 from sysobjects where id = object_id('CLIENT') and type = 'U') drop table CLIENT GO if exists (select 1 from sysobjects where id = object_id('CONFIRMATION') and type = 'U') drop table CONFIRMATION GO if exists (select 1 from sysobjects where id = object_id('RESERVATION') and type = 'U') drop table RESERVATION GO if exists (select 1 from sysobjects where id = object_id('SALLE') and type = 'U') drop table SALLE GO if exists (select 1 from sysobjects where id = object_id('SERVICE') and type = 'U') drop table SERVICE GO if exists (select 1 from sysobjects where id = object_id('TARIF') and type = 'U') drop table TARIF GO if exists (select 1 from sysobjects 9 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 where id = object_id('TYPE_CLIENT') and type = 'U') drop table TYPE_CLIENT GO if exists (select 1 from sysobjects where id = object_id('TYPE_RESERVATION') and type = 'U') drop table TYPE_RESERVATION GO if exists (select 1 from sysobjects where id = object_id('TYPE_SALLE') and type = 'U') drop table TYPE_SALLE GO /*==============================================================*/ /* Table : CLIENT */ /*==============================================================*/ CREATE table CLIENT ( NO_CLI NO_TYPECLI NO_TARIF NOM_CLI PREN_CLI NO_TEL NO_FAX EMAIL NO_RUE NOM_RUE CODEPOSTAL NOM_VILLE CONSTRAINT PK_CLIENT ) GO numeric(5) not null, numeric(10) not null, numeric(5) not null, text not null, text not null, varchar(10) not null, varchar(10) null, varchar(30) null, numeric(5) null, varchar(30) null, numeric(5) null, varchar(30) not null, primary key nonclustered (NO_CLI) /*==============================================================*/ /* Table : CONFIRMATION */ /*==============================================================*/ CREATE table CONFIRMATION ( NO_CONFIRM numeric(1) not null, DATE_CONFIRM datetime not null, CONSTRAINT PK_CONFIRMATION primary key nonclustered (NO_CONFIRM) ) GO /*==============================================================*/ /* Table : RESERVATION */ /*==============================================================*/ CREATE table RESERVATION ( NO_RESERVE numeric(15) NO_CLI numeric(5) NO_SALLE numeric(5) NO_TYPE numeric(10) NO_SERVICE numeric(10) NO_CONFIRM numeric(1) DATE_DEBUT datetime HEURE_DEBUT datetime DUREE_RESERVE datetime not null, not null, not null, not null, not null, null, not null, not null, not null, 10 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 PRIX_RESERVE numeric(5,2) not null, DESCRIPTION_BREVE varchar(50) not null, DESCRIPTION_COMPLETE varchar(500) not null, CONSTRAINT PK_RESERVATION primary key nonclustered (NO_RESERVE) ) GO /*==============================================================*/ /* Table : SALLE */ /*==============================================================*/ CREATE table SALLE ( NO_SALLE numeric(5) not null, NO_TYPESALLE numeric(5) not null, NOM_SALLE varchar(15) not null, BATI_SALLE varchar(15) not null, CAPAC_SALLE numeric(5,0) not null, EQUIP_SALLE varchar(35) not null, CONSTRAINT PK_SALLE primary key nonclustered (NO_SALLE) ) GO /*==============================================================*/ /* Table : SERVICE */ /*==============================================================*/ CREATE table SERVICE ( NO_SERVICE numeric(10) not null, LIBELLE_SERVICE varchar(15) not null, PRIX_SERVICE numeric(5,2) not null, CONSTRAINT PK_SERVICE primary key nonclustered (NO_SERVICE) ) GO /*==============================================================*/ /* Table : TARIF */ /*==============================================================*/ CREATE table TARIF ( NO_TARIF numeric(5) not null, NIVEAU_TARIF numeric(1) not null, CONSTRAINT PK_TARIF primary key nonclustered (NO_TARIF) ) GO /*==============================================================*/ /* Table : TYPE_CLIENT */ /*==============================================================*/ CREATE table TYPE_CLIENT ( NO_TYPECLI numeric(10) not null, TYPECLI varchar(15) not null, CONSTRAINT PK_TYPE_CLIENT primary key nonclustered (NO_TYPECLI) ) GO /*==============================================================*/ /* Table : TYPE_RESERVATION */ /*==============================================================*/ CREATE table TYPE_RESERVATION ( NO_TYPE numeric(10) not null, LIBELLE_TYPE varchar(15) not null, DATE datetime not null, CONSTRAINT PK_TYPE_RESERVATION primary key nonclustered (NO_TYPE) ) GO 11 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 /*==============================================================*/ /* Table : TYPE_SALLE */ /*==============================================================*/ CREATE table TYPE_SALLE ( NO_TYPESALLE numeric(5) not null, NOM_TYPESALLE varchar(10) not null, TYPE_SALLE varchar(10) not null, TARIF_SALLE money not null, CONSTRAINT PK_TYPE_SALLE primary key nonclustered (NO_TYPESALLE) ) GO B. Le Script d’insertion des données dans la base de données INSERT INTO CLIENT (No_Cli, Nom_Cli, Pren_Cli, Tel_Cli, Fax_Cli, Mail_Cli, No_Rue, Nom_Rue, CdPostale, Ville) VALUES (1,'Martin','Emma','01 32 54 00 00','01 32 54 01 01','[email protected]',11,'rue des Aires',34677,'Saint-Maurice') (2,'Bernard','Enzo','01 32 54 02 01','01 32 54 00 05','[email protected]',22,'rue de Berdiansk',34400,'Giloque') (3,'Dubois','Ines','01 32 54 01 02','01 32 54 00 06','[email protected]',33,'avenue Pierre-Fraysse',56700,'Grick') (4,'Thomas','Leo','01 32 54 07 08','01 32 54 00 07','[email protected]',44,'rue de la République',48600,'Martinasur-Seine') (5,'Robert','Tom','01 32 54 08 07','01 32 54 00 09','[email protected]',55,'ruelle des Amoureux',46778,'Val-duSigne') (6,'Richard','Eva','01 32 54 80 07','01 32 54 00 10','[email protected]',66,'rue Lavoisier',50003,'Leclerc') (7,'Petit','Paul','01 32 54 50 08','01 32 54 00 11','[email protected]',77,'rue Ampère',45000,'Saint-Denis') (8,'Durand','Axel','01 32 54 02 03','01 32 54 00 12','[email protected]',88,'rue Louis-Antelme',34000,'Tampon') (9,'Leroy','Lou','01 32 54 00 01','01 32 54 00 14','[email protected]',99,'rue Molière',32000,'Méro') (10,'Moreau','Elsa','01 32 54 03 00','01 32 54 00 15','[email protected]',1010,'rue Emile-Combes',38000,'Cerly') GO 12 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 INSERT INTO SERVICE (No_service, Libelle_Service, Prix_Service) VALUES (1,'Orangina',10) (2,'Ordinateur particulier',25) (3,'Logiciel particulier',15) (4,'Tapis de souris',0) (5,'Oasis',1) (6,'Coca-Cola',1) (7,'Café',1) (8,'Eau',0) (9,'Thé standard',0) (10,'Thé Exotique',1) GO INSERT INTO TYPE_RESERVATION (No_Type, Libelle_Type, Périodicité) VALUES (1,'occasionnel','Ponctuelle') (2,'régulier','quotidient') (3,'régulier','mensuelle') (4,'régulier','trimestrielle') (5,'régulier','semestrielle') (6,'régulier','annuelle') (7,'régulier','hebdomadaire') (8,'régulier','quotidien') GO 13 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 INSERT INTO SALLE (No_Salle, Nom_Salle, Bati_Salle, Surface_Salle, Capac_Salle, Equip_Salle) VALUES (1,'Majorelle','Batiment A',30,40,'Prise ethernet') (2,'Grüber','Batiment A',25,12,'Vidéoprojecteur') (3,'Lamour','Batiment C',,10,'Videoprojecteur') (4,'Longway','Batiment B',30,15,'Prise ethernet') (5,'Daum','Batiment D',27,15,'Videoprojecteur') (6,'Gallé','Batiment B',22,10,'Prise ethernet') (7,'Corbin','Batiment C',20,10,'Prise ethernet') (8,'Baccarat','Batiment B',20,15,'Videoprojecteur') GO INSERT INTO RESERVATION (No_Reserve, Date_debut, Heure_debut, Duree_Reserve, Description_reserve, No_Cli, No_Service, No_Salle, No_Type) VALUES (1,'15/03/2013','09h00','01h00','REUNION',1,1,1,1) (2,'22/03/2013','11h30','02h00','LOCATION',2,2,2,2) (3,'27/03/2013','15h45','01h15','RENDEZ-VOUS VISITEUR',3,3,3,3) (4,'01/04/2013','17h00','02h00','CONFERENCE',4,4,4,4) (5,'10/04/2013','09h30','02h00','RENDEZ-VOUS VISITEUR',5,5,5,5) (6,'24/04/2013','13h30','03h30','REUNION',6,6,6,6) (7,'04/05/2013','08h30','02h00','CONFERENCE',7,7,7,7) (8,'26/05/2013','15h00','01h30','REUNION',8,8,8,8) (9,'05/06/2013','14h00','03h00','LOCATION',9,9,9,9) (10,'21/06/2013','16h00','01h00','REUNION',10,10,10,10) GO 14 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 INSERT INTO CONFIRMATION (No_confirm, Date_Confirm) VALUES (1,'01/01') (2,'02/02') (3,'03/03') (4,'04/04') (5,'05/05') GO INSERT INTO TYPE_CLIENT (No_TypeCli, TypeCli) VALUES (1,'association') (2,'lycée') (3,'collèges') (4,'club sportif') (5,'commité départementaux') (6,'société privée') GO INSERT INTO TARIF (No_tarif, Niveau_Tarif) VALUES (1,'club sportif’,1) (2,’Association’,2) (3,'') (4,'autres',4) GO 15 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 INSERT INTO TYPE_SALLE (No_TypeSalle, Type_Salle, Tarif_Salle) VALUES (1,'réunion',50) (2,'multimédia',60) (3,'amphithéâtre',70) (4,'convivialité',20) GO C. Le jeu d’essai Afin d’assurer l’étanchéité de la base de données conçu, l’équipe Kos Informatique a créé un jeu d’essai, qui fait appel à plusieurs requêtes pour chaque tables. Une fois ces données ajoutées, elles permettront d’être sûre que la base de donnée soit correct, puis supprimer pour laisser place aux valeurs réelles. /*Commande pour vérifier le nom et prénom des clients en les triant dans l'ordre des noms: */ SELECT Nom_Cli, Pren_Cli FROM CLIENT ORDER BY Nom_Cli; /*Commande pour vérifier l'intégralité de la table Réservation: */ SELECT * FROM RESERVATION; /* Commande pour vérifier les 3 premiers clients:*/ SELECT * FROM CLIENT LIMIT 3; /* Commande pour vérifier le numéro et le prix des services 8 à 9 */ SELECT No_Service, Prix_Service FROM SERVICE LIMIT 7,2; 16 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko BTS SIO. PPE 1-3 KOS INF☼ Groupe B1 /* Commande pour compter le nombre total de confirmation */ SELECT COUNT(*) AS nbconfirmation FROM CONFIRMATION /* Commande pour sélectionner les types de salles qui ont un coûts supérieur à 50€ */ SELECT No_TypeSalle, Type_Salle, Tarif_Salle FROM TYPESALLE WHERE Tarif_Salle > 50 D. Conclusion La base de données conçue par l’équipe de Kos Informatique, s’appliquera donc dans le SGBD Microsoft Server SQL 2012 Standard du site M2L, choisis méticuleusement. De plus, ces informations seront remplies par le client, dans le processus de réservation en ligne du site Internet de la Maison des Ligues De lorraines. 17 Jordan Dutaillis / Steveen Hanta / Mathieu Collin / Ismaël Sacko