PPE 1.3 Contexte GSB Gestion des visites Projet MediBase Version 1.1 LUIS Maxime - DIMET Alan - BOURLANGE Eden – PLOUVIEZ Maxime 1 Partie informatique Première phase CREATION DE LA BASE DE DONNEES Le choix du SGBDR Nous avons choisi le SGBDR PostgreSQL, c’est un logiciel libre avec une communauté très active avec de très bonnes critiques. De plus, notre choix s’est basé sur la popularité de ce SGBDR sur les forums de développements tel que developpez.net (voir sources pour plus de détails) où d’ailleurs il est majoritaire à un sondage d’outils SQL. D’autant plus que cet outil a déjà été utilisé en cours ce qui prouve ses performances notamment avec la gestion des utilisateurs. Ce logiciel est même inclus d’office sur certaines distributions Linux. 2 Le script SQL : Après avoir étudié le schéma conceptuel de données (MCD) et le schéma relationnel de données (MLD), nous avons fini le script SQL permettant la création des tables souhaitées dans notre SGBDR. CREATE TABLE Visiteur( vis_NumSecu Int NOT NULL , vis_nom Varchar (25) , vis_adresse Varchar (25) , vis_cp Varchar (25) , vis_ville Varchar (25) , vis_dateEmbauche Date , PRIMARY KEY (vis_NumSecu ) ); CREATE TABLE Visite( v_num Int NOT NULL , v_date Date , v_lieu Varchar (25) , v_description Varchar (25) , vis_NumSecu Int NOT NULL, pra_num Int NOT NULL, PRIMARY KEY (v_num ) ); CREATE TABLE Medicament( med_depotLegal Int NOT NULL , med_nomCommercial Varchar (25) , med_composition Varchar (25) , med_effets Varchar (25) , med_contreIndic Varchar (25) , PRIMARY KEY (med_depotLegal ) ); CREATE TABLE EchantillonMedic( ech_num Int NOT NULL , ech_prixHT Double , med_depotLegal Int NOT NULL, PRIMARY KEY (ech_num ) ); CREATE TABLE proposer( v_num Int NOT NULL , 3 ech_num Int NOT NULL , PRIMARY KEY (v_num ,ech_num ) ); CREATE TABLE Praticien( pra_num Int NOT NULL, pra_nom Varchar (25), pra_coef_notoriete Double NOT NULL, PRIMARY KEY (pra_num) ); CREATE TABLE posseder( pra_num Int NOT NULL, spe_code Varchar (25), PRIMARY KEY(pra_num,spe_code) ); CREATE TABLE Specialite( spe_code Varchar (25), spe_libelle Varchar (25), PRIMARY KEY(spe_code) ); Migration des données Après avoir fait des recherches sur l’implantation d’un fichier .xls (tableau excel) sur notre SGBDR nous avons trouvé qu’il était possible, en convertissant le fichier en .csv et d'effectuer la commande «COPY» afin d’implanter les données du tableau dans une table souhaitée. Le fichier .mdb peut être lu sous Microsoft Excel et, par conséquent, il suffit d’enregistrer une fiche de données souhaitées, de la convertir à son tour et d'effectuer la même commande. 4 Requêtes SQL -Afficher les visiteurs classés par ordre alphabétique : Select vis_nom from Visiteur order by vis_nom ASC ; -Afficher le nom et l’adresse des praticiens qui ont reçu une visite ces deux dernières années : Select pra_nom, pra_adresse from praticien natural join visite where v_date between [29/01/12] and [20/01/14]; 5 -Augmenter les prix HT des échantillons inférieurs à 1,5 euros de 5%: Update EchantillonMedic set ech_prixht=ech_prixht * 1,05 where ech_prixHT < 1.5 ; -Afficher les noms commerciaux des médicaments qui n’ont pas été proposé aux praticiens : Select med_nomCommercal, med_depotLegal from medicament natural join echantillonmedic natural join proposer where v_num is not exists; From Medicament, EchantillonMedic natural join proposer where v_num is not exists ; 6 Partie informatique Deuxième phase DEPLOIEMENT Nous avons choisi de déployer notre base de données sur la distribution Linux DEBIAN 7. Debian a été conçu pour être stable, c’est-à-dire que les versions des logicielles peuvent être plus anciennes que les autres distributions. Mais Debian a pour vocation de toujours être stable ce qui conviendra donc parfaitement pour un serveur ! Les paquets envoyés et reçus sont vérifiés comme étants stables et fonctionnels. Nous avons configuré notre serveur de telle sorte (en ip statique): Et voici la configuration réseau du poste de travail des utilisateurs GSB : Requête SQL - Création des trois comptes d’utilisateurs Création des trois comptes d’utilisateurs : -Create group staff WITH user admin, praticien, visiteur; -Grant select, insert, delete, update on * to admin with grant option ; -Grant select on EchantillonMedic to praticien; -Grant select, insert, delete, update on Visite to visiteur; 7 8 Partie informatique Troisième phase EVOLUTION DE LA BASE DE DONNEES MLD : Visiteur(vis_NumSecu, vis_nom, vis_adresse, vis_cp, vis_prenom, vis_ville, vis_dateembauche, sec_code, lab_code) vis_numsecu clé primaire de la relation visiteur Visite(v_num, v_date, v_lieu, vis_numsecu, v_description, pra_num) v_num clé primaire de la relation visite pra_num clé étrangère en référence à la relation praticien vis_numsecu clé étrangère en référence à la relation visiteur Specialite(spe_code, spe_libelle) spe_code clé primaire de la relation specialite Region(code_reg, libellé) code_reg clé primaire de la relation region Proposer(v_num, ech_num) v_num, ech_num clé primaire de la relation proposer Praticien(pra_num, pra_nom, pra_coef_notoriete) pra_num clé primaire de la relation praticien Pra_diplome(code_diplome, pra_num) code_diplome, pra_num clé primaire de la relation pra_diplome Posseder(pra_num, spe_code) pra_num, spe_code clé primaire de la relation posseder 9 Medicament(med_depotlegal, med_nomcommercial, med_composition, med_effets, med_contreindic) med_depotlegal clé primaire de la relation medicament Habite(code_region, vis_num) code_region, vis_num clé primaire de la relation habite Echantillonmedic(ech_num, ech_prixHT, med_depotlegal, tauxtva) ech_num clé primaire de la relation echantillonmedic med_depotlegal clé étrangère en reference à la relation medicament Diplome(codediplome, libelle) codediplome clé primaire à la relation Diplome Requêtes SQL Réaliser une vue qui permette d’afficher la somme des prix TTC des échantillons par visites : CREATE VIEW tva_visite as select sum(tva*echprixHT) from ech_medic natural join proposer group by v_num; Afficher le praticien le plus diplômé : Select pra_num, pra_nom from Praticien natural join pra_diplome where code_diplome = (select max(count(code_diplome)) from praticien natural join pra_diplome); Afficher la moyenne des sommes des prix TTC des échantillons par visites : Select avg(*) from tva_visite; Afficher les visiteurs par région qui ont effectué plus de 5 visites : Select vis_nom from visiteurs natural join region where count(vis_num)>5 order by code_reg; Afficher le prix TTC maximum de toutes les visites réalisés (de tous les échantillons réalisés) : Select max(echprixht*TVA) from echantillonmedic natural join visite group by vis_num; 10 Partie Juridique DROITS INFORMATIQUE Première partie : Deuxième partie : Troisième partie : Dans le cadre d'une amélioration de la gestion des données de l'entreprise GSB pour les praticiens. Il est donc obligatoire de respecter les formalités à réaliser afin de respecter la législation Informatique et Libertés : - Notifier la mise en œuvre du fichier et ses caractéristiques à la CNIL, sauf cas de dispense prévus par la loi ou par la CNIL. - Mettre les personnes concernées en mesure d’exercer leurs droits en les en informant. 11 - D'assurer la sécurité des informations afin d'empêcher qu’elles soient modifiées, endommagées ou que des tiers non autorisés n'y aient accès. - Se soumettre aux contrôles et vérifications de la CNIL et répondre à toute demande de renseignements qu’elle formule dans le cadre de ses missions. SOURCES http://fadace.developpez.com/sgbdcmp/ (Site pour trouver SGBD ) http://www.marche-public.fr/Marches-publics/Definitions/Entrees/Donne-caracterepersonnel.htm (Définition juridique des données perso). http://doc.ubuntu-fr.org/postgresql http://www.cnil.fr/linstitution/qui-sommes-nous/ (CNIL) http://www.developpez.net/forums/d30385/bases-donnees/postgresql/importer-fichier-xlsvers-postgresql/ 12