Contexte. Maquettage des formulaires. Connexion à SQL Server 2012

Documents pareils
CREATION WEB DYNAMIQUE

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

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)

Configurer la supervision pour une base MS SQL Server Viadéis Services

MS SQL Express 2005 Sauvegarde des données

Historisation des données

Présentation Windows Azure Hadoop Big Data - BI

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

Gestion de base de données

SQL Historique

Encryptions, compression et partitionnement des données

Création et Gestion des tables

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

1. Base de données SQLite

TP Contraintes - Triggers

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

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

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Paginer les données côté serveur, mettre en cache côté client

I. MySQL : Serveur et SGBD

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

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

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

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

Olivier Mondet

Devoir Data WareHouse

Langage SQL : créer et interroger une base

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

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

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

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

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

Attaques applicatives

Compétences Business Objects

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

PHP et les Bases de données - Généralités

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

Bases de données relationnelles

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

TP3 : Creation de tables 1 seance

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

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

Le Langage De Description De Données(LDD)

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

I4 : Bases de Données

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

Modélisation et Gestion des bases de données avec mysql workbench

Les BASES de DONNEES dans WampServer

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

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

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

Gestion du cache dans les applications ASP.NET

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

OpenPaaS Le réseau social d'entreprise

Rapport de Mini-Projet en ArcGIS Engine

Manuel Viadeis CRM Connecteur intégration L100 étendue.

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

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Gestion de stock pour un magasin

Introduction aux Bases de Données 2004/2005

Intégrité des données

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Les bases de données

Objectifs du TP : Initiation à Access

Stockage du fichier dans une table mysql:

A QUOI SERVENT LES BASES DE DONNÉES?

1 Position du problème

SQL Server administration SERVEUR DE BASES DE DONNEES OLIVIER D.

Corrigés détaillés des exercices

Master Exploration Informatique des données DataWareHouse

Bases de données avancées

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

Bases de SQL. Hacks 1-6 CHAPITRE UN

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

VAMT 3. Activation de produits Microsoft

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

Les déclencheurs. Version 1.0. Grégory CASANOVA

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

A QUOI SERVENT LES BASES DE DONNÉES?

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

BASES DE DONNEES TP POSTGRESQL

Data Tier Application avec SQL Server 2008 R2

Gestion des transactions et accès concurrents dans les bases de données relationnelles

SQL Server 2000, Analysis Services et DTS

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

Cours SQL. Base du langage SQL et des bases de données

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

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

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Utilitaires méconnus de StrataFrame

Introduction à JDBC. Accès aux bases de données en Java

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Pour valider les pré-requis nécessaires, avant d'aborder le TP, répondez aux questions ciaprès

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

Transcription:

Contexte L équipe développement est chargée de développer une application Windows afin de permettre au personnel d Humanist Network de gérer les missions humanitaires dans le monde entier. Après étude du modèle conceptuel des données validé par les ingénieurs, nous avons mise en place des maquettes avant de développer sous Visual Studio 2013. Nous avons élaborée le modèle logique des données afin de créer la base de données sous SQL Server 2012. Toute communication de l application avec le SGBD SQL Server 2012 se fait par le biais de Procédure. Maquettage des formulaires Avant tout développement pur, des maquettes ont été effectué par l équipe de développement. Nous avons profité du fait que le développement se faisait sous Visual Studio 2013 pour y inscrire notre travail de maquettage. De ce fait les maquettes sont les interfaces graphiques de notre application sous Visual Studio 2013. Connexion à SQL Server 2012

Menu (associé à chaque page) Parcourir les Missions, affectation de bénévoles, renouvèlement de Mission

Parcourir les donateurs (à partir de la collection)

Ajout d un personnel (Bénévole par procédure, Donateur à la fermeture de l application) Ajout d une mission (Risque + vaccin après sélection du Pays)

Création de la base de données Nous avons choisi JMerise pour recopier le MCD donnée dans le cahier des charges. JMerise est un outil de modélisation des MCD que nous avons préféré car nous y sommes expérimentés et qu il permet d une : - De vérifier si la syntaxe du MCD est correcte - De générer un script SQL du MCD La syntaxe n étant pas la même sur SQL Server 2012, nous avons corrigé les erreurs de syntaxes. Une table était manquante à notre script SQL : la méta-entité que nous avons nommée «enroler». Script de la méta-entité : CREATE TABLE [dbo].[enroler]( [nummission] [int] NOT NULL, [numperso] [int] NOT NULL, [coderole] [varchar](20) NULL, CONSTRAINT [PK_enroler] PRIMARY KEY CLUSTERED ( [nummission] C, [numperso] C )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] La base de données a été généré sur SQL Serveur 2012, pour travailler à distance une sauvegarde et réplication de la base de données ont été effectué quand nécessaire. Connexion à la base de données L utilisateur de l application doit premièrement s identifier (voir maquette «Connexion à SQL Server 2012») Puis l application développée sous Visual Studio 2013 communique avec la base de données hébergée sous SQL Server 2012 par le biais d une classe de Connexion. Cette classe utilise l adresse IP du serveur hébergé par l équipe de réseaux. Ces derniers ont crée deux utilisateur sur le serveur, l un administrateur de la base de données, l autre utilisateur (lecture et écriture) de la base de données propre à l application.

ChaineConnexion = "Server=" + m_nomserveur + ";Database=" + m_nombd + ";User Id=" + m_login + ";Password=" + m_mdp + ";" Ainsi l utilisateur de l application peut lire et insérer des nouvelles informations. Structure de la base de données Procédure stockée Toute communication avec la base de données s effectue par procédure stockée.

Ajouter un Don ALTER PROCEDURE [dbo].[adddon] -- Add the parameters for the stored procedure here @unnumperso varchar(50), @unedate varchar(50), @unmontant varchar(50), @resultat VARCHAR(50) OUT TRANSACTION; IF NOT EXISTS (SELECT * FROM personne WHERE numperso = @unnumperso) set @resultat= 'Personne n''existe pas'; ELSE IF EXISTS (SELECT * FROM date WHERE datedon = @unedate) set @resultat= 'Date déjà existante'; INSERT INTO donner values(@unnumperso,@unedate,@unmontant) set @resultat= 'nouvelle date inséré'; ELSE INSERT INTO date values(@unedate); set @resultat= 'nouvelle date inséré'; INSERT INTO donner values(@unnumperso,@unedate,@unmontant) set @resultat= 'Donnée inséré'; COMMIT; Ajouter une Mission ALTER PROCEDURE [dbo].[addmission] -- Add the parameters for the stored procedure here @unnummission int, @unnommission varchar(50), @unedescmission varchar(100),@unedatecreamission varchar(50),@unedatedebmission varchar(50),@unedatefinmission varchar(50),@unnumpays int, @resultat VARCHAR(50) OUT IF EXISTS (SELECT * FROM mission WHERE nummission = @unnummission) begin set @resultat= 'numéro de la mission existant'; end else begin INSERT INTO mission values(@unnummission,@unnommission,@unedescmission,@unedatecreamission,@unedatedebmiss ion,@unedatefinmission,@unnumpays); set @resultat= 'mission insérer'; end Ajouter une Personne ALTER PROCEDURE [dbo].[addpersonne] -- Add the parameters for the stored procedure here @unnumperso int, @unnomperso varchar(50), @unprenomperso varchar(50), @uneadresperso varchar(100),@untelperso varchar(50), @resultat VARCHAR(50) OUT IF EXISTS (SELECT * FROM personne WHERE numperso = @unnumperso) begin set @resultat= 'numéro du client existant'; end

else begin INSERT INTO personne values(@unnumperso,@unnomperso,@unprenomperso, @uneadresperso,@untelperso); set @resultat= 'client inséré'; end Lister les bénévoles compétents pour une mission ALTER PROCEDURE [dbo].[goodbenevole] (@uncodespec varchar(10)) Select personne.numperso, nomperso, prenomperso from personne inner join benevole on personne.numperso = benevole.numperso inner join avoir on benevole.numperso = avoir.numperso inner join role on avoir.codespec = role.codespec WHERE role.codespec = @uncodespec Lister les bénévoles sur chaque mission ALTER PROCEDURE [dbo].[benevoleaffecter] (@unnummission int) Select nomperso, prenomperso from affecter inner join benevole on affecter.numperso = benevole.numperso inner join personne on benevole.numperso = personne.numperso WHERE nummission = @unnummission Lister les donateurs ALTER PROCEDURE [dbo].[listedonateur] Select personne.numperso, nomperso, prenomperso, adresperso, telperso, montant, datedon FROM donner INNER JOIN personne ON donner.numperso = personne.numperso ORDER BY datedon desc Lister les missions ALTER PROCEDURE [dbo].[listemission] (@unnummission int) IF EXISTS (Select * from enroler where NumMission=@unNumMission) Select nommission, descmission, datecreamission, datedebmission, datefinmission, nompays, risque, nomvaccin, descvac, librole, codespec FROM enroler INNER JOIN role on enroler.coderole = role.coderole INNER JOIN mission on enroler.nummission = mission.nummission INNER JOIN pays ON mission.numpays = pays.numpays INNER JOIN necessiter on pays.numpays = necessiter.numpays INNER JOIN vaccin on necessiter.numvaccin = vaccin.numvac

WHERE mission.nummission = @unnummission ELSE Select nommission, descmission, datecreamission, datedebmission, datefinmission, nompays, risque, nomvaccin, descvac FROM mission INNER JOIN pays ON mission.numpays = pays.numpays INNER JOIN necessiter on pays.numpays = necessiter.numpays INNER JOIN vaccin on necessiter.numvaccin = vaccin.numvac WHERE nummission = @unnummission Liste le nom des missions ALTER PROCEDURE [dbo].[listenommission] Select nommission, nummission, descmission FROM mission Affecter un Bénévole à une mission (voir trigger plus bas) Insert INTO enroler values (@unnummission, @unnumperso, @uncoderole) Application Développé sous Visual Studio 2013, au démarrage l application stock dans une collection l ensemble des donateurs et leurs dons. Private Sub frmprincipal_load(sender As Object, e As EventArgs) Handles MyBase.Load maconnexion2.ouvrir() Dim cmd As New SqlCommand With cmd.connection = maconnexion2.getconnexion.commandtext = "listedonateur".commandtype = CommandType.StoredProcedure 'au lieu de Text End With Dim rdr As SqlDataReader = cmd.executereader(commandbehavior.closeconnection) While rdr.read Dim undonateur As New Donateur(rdr.Item("numPerso"), rdr.item("nomperso"), rdr.item("prenomperso"), rdr.item("adresperso"), rdr.item("telperso"), 0) CollDonateurs.Add(unDonateur) Dim undon As New Don(rdr.Item("numPerso"), rdr.item("datedon"), rdr.item("montant"), 0) CollDon.Add(unDon) End While End Sub L ajout de donateur et de dons se fait à l intérieur des collections. A la fermeture de l application, la base de données est mise à jour à partir des classes et des collections : Private Sub frmprincipal_closed(byval sender As Object, _

For Each Donateur In CollDonateurs If (Donateur.NewDonateur = 1) Then CALL adddonateur() For Each Don In CollDon If (Don.Num = Donateur.Num) And (Don.NewDon = 1) Then CALL adddon() MessageBox.Show("Insertion des nouveaux Dons...") End If Next MessageBox.Show("Mise à jour de la BDD") End If Next End Sub Déclencheur (Trigger) Une mission peut soit être dénué de bénévole, soi en avoir. Afin d envoyer les bons bénévoles sur les bonnes missions il est important de connaître les spécialités de chaque bénévole. Un bénévole ne peut être affecté sur une mission que si sa spécialité correspond au rôle de la mission. Ainsi, une mission peut : - soi n avoir aucun bénévole et donc aucun rôle - soi avoir au moins un bénévole pour que la méta-entité n ai pas de clé primaire vide. Cependant un même bénévole peut avoir plusieurs spécialités et un rôle correspond à une et une seule spécialité. Par conséquent si l on met un déclencheur sur affecter (la mission n a pas encore de bénévole) et que le bénévole à plusieurs spécialités alors on ne pourra pas choisir le rôle. C est pourquoi le déclencheur sera sur la méta-entité «enroler», lequel dispose du couple de clé primaire/étrangère du numéro de mission et du numéro de personne ainsi que la clé étrangère du code rôle. Pour conclure, l application permettra de choisir un rôle pour la mission et une procédure stocker renverra les bénévoles compétents pour ce rôle. Il faut donc, avant d insérer dans enroler : - Récupérer le numéro de la mission - Récupérer le numéro de la personne - Vérifier que les numéros existent - Vérifier que la personne est un bénévole - Vérifier que la spécialité de la personne correspond au rôle demandé par la mission