Programmation Web
Programmation Web
UNIVERSITÉ D’ANTANANARIVO
----------------------
ÉCOLE SUPÉRIEURE POLYTECHNIQUE
-----------------------
MENTION TÉLÉCOMMUNICATION
MÉMOIRE
en vue de l’obtention
du DIPLÔME de LICENCE
Domaine : Sciences de l’Ingénieur
Mention : Télécommunication
Parcours : Système et Traitement de l’Information (STI)
Présidente :
Examinateur :
Directeur de mémoire :
i
REMERCIEMENTS
Le présent mémoire est le fruit de trois années d’études supérieures à l’école Supérieure
Polytechnique d’Antananarivo.
Je rends grâce à Dieu pour m’avoir donné le courage, la volonté et la santé durant la réalisation de
ce travail.
− Monsieur RANDRIANA Heritiana Nambinina Erica, Maître de Conférences, membre du jury, qui
a accepté d’examiner ce mémoire malgré ses innombrables occupations.
Mes vifs remerciements s’adressent aussi aux enseignants et personnels de l’ESPA, et à ceux du
Département Télécommunication en particulier, ils ont fait de moi ce que je suis aujourd’hui.
Un grand merci à nos parents qui ont toujours été présent à chaque moment de notre vie. Leur
inconditionnels amour et leur soutien nous a procuré la force d’aboutir à un tel résultat.
Enfin, à tous ceux qui ont contribué de près ou de loin à la réalisation de ce mémoire de fin d’étude.
Puissiez-vous trouver dans ces quelques lignes mes sincères remerciements et ma reconnaissance.
i
TABLE DES MATIÈRES
REMERCIEMENTS ........................................................................................................................ i
1.2.1 Internet........................................................................................................................ 2
[Link] TCP/IP.................................................................................................................. 4
[Link] IP .......................................................................................................................... 5
1.2.3 Web.............................................................................................................................. 5
ii
[Link] Client .................................................................................................................... 9
iii
1.5.4 Rôle du contrôleur .................................................................................................... 20
iv
[Link] Règles de transformation du MCD au MLD...................................................... 30
v
3.3.7 Importation du script SQL dans phpMyAdmin ....................................................... 46
BIBLIOGRAPHIE ........................................................................................................................ 58
RENSEIGNEMENTS ................................................................................................................... 60
vi
ABRÉVIATIONS
vii
SI Système d'Information
IP Internet Protocol
viii
INTRODUCTION GÉNÉRALE
Dans notre ère numérique en constante évolution, les soins de santé sont à la croisée de la médecine
et de la technologie. Cette révolution, bien que silencieuse, est d’une puissance remarquable,
transformant les pratiques traditionnelles et modernisant la gestion des hôpitaux et des
établissements médicaux. Au cœur de cette transformation se trouve l'application web de gestion
hospitalière, une plateforme novatrice qui réinvente la gestion hospitalière telle que nous la
connaissons.
Loin de se limiter à une simple automatisation des tâches, cette application représente une avancée
majeure dans la gestion des établissements de santé. Elle offre une solution intégrée et complète,
permettant non seulement d’optimiser les processus internes, mais aussi de rationaliser l’utilisation
des ressources humaines et matérielles. En combinant les technologies les plus récentes avec des
pratiques de gestion éprouvées, elle répond aux besoins croissants et variés des établissements
hospitaliers, des cliniques privées aux grands centres hospitaliers universitaires.
Les avantages sont nombreux : une meilleure coordination entre départements, une gestion
optimisée des dossiers, un suivi précis des patients et une expérience améliorée pour soignants et
patients. En automatisant les tâches administratives répétitives, le personnel médical peut se
consacrer pleinement à offrir des soins de qualité.
C’est précisément cette vision qui motive le titre de ce travail : « MISE EN PLACE D’UNE
APPLICATION WEB DE GESTION HOSPITALIÈRE ». Ce titre illustre l’objectif principal de ce
projet, qui consiste à explorer, concevoir et mettre en œuvre une solution technologique adaptée aux
défis actuels du secteur de la santé.
Pour structurer cette exploration, nous avons opté pour une approche en trois chapitres distincts. Le
premier chapitre se concentrera sur l’environnement web, offrant une introduction aux concepts
fondamentaux qui sous-tendent les applications modernes. Le deuxième chapitre sera consacré aux
bases de données, un pilier essentiel pour le fonctionnement efficace et sécurisé de toute application
web. Enfin, le troisième chapitre décrira le processus détaillé de conception, de développement et
de mise en œuvre de l’application de gestion hospitalière.
Ainsi, cette étude détaillée nous permettra de saisir l'essence de cette révolution silencieuse mais
radicale dans le domaine de la gestion hospitalière, tout en jetant un regard éclairé sur l'avenir
prometteur de la santé.
1
CHAPITRE 1
ENVIRONNEMENT WEB
1.1 Introduction
Aujourd'hui, les applications web sont devenues indispensables dans notre routine quotidienne,
proposant des services et des fonctionnalités accessibles depuis n'importe quel appareil connecté à
Internet. Ces applications ont transformé notre manière d'interagir, de communiquer et d'accéder à
l'information.
Dans les pages qui suivent, nous examinerons en détail le concept et la pertinence des applications
web, en mettant particulièrement l'accent sur notre propre application de gestion hospitalière.
L’internet est un réseau d’interconnexion d’ordinateurs et d’objets dits connectés, qui s’étend sur
tout le globe terrestre. De nos jours, on le trouve partout, il fait partie de nos vies : Réseau sociaux,
magazine et journaux, téléchargement, outils de travail (application web).
Le principal protocole utilisé sur Internet est le protocole TCP/IP. Le TCP est le IP ont des
fonctionnalités différentes et sont utilisés ensemble pour assurer la fiabilité de la communication sur
internet.
La notion concernant les URLs est l’une des plus importantes à saisir lorsque l’on travaille sur le
web. Un URL est in type d’identificateur qui représente l’emplacement dans le réseau d’une
ressource telle qu’une page web, un fichier image, un fichier MP3. En effet, l’URL est une adresse
sur le web de la forme : « [Protocole : //] Serveur [: Port] / Dossier/ [Fichier] », qui identifie
chaque page web et chaque document de manière unique.
Serveur étant le nom d’une machine reliée à internet ou à son adresse IP.
Port est le numéro de port sur lequel le serveur est en attente. Suivant le protocole utilisé, il existe
toujours une valeur par défaut : 80 pour HTTP, 20-21 pour FTP.
2
Figure 1.01 : Exemple d’URL
Le protocole HTTP est un ensemble de règles pour l'échange de fichiers tels que les documents
HTML, des images graphiques, du son, de la vidéo et d'autres fichiers multimédias sur le Web.
C'est le fondement de tout échange de données sur le Web et c'est un protocole client-serveur, ce
qui signifie que les demandes sont initiées par le destinataire, généralement le navigateur Web. C’est
un protocole de la couche application qui est envoyé via TCP (ou via une connexion TCP cryptée
TLS ou SSL), bien que n'importe quel protocole de transport fiable puisse théoriquement être utilisé.
Lorsque l'utilisateur d'un navigateur Web demande un fichier en tapant une adresse de site Web ou
en cliquant sur un lien hypertexte, le navigateur crée une requête HTTP et l'envoie au serveur. Le
serveur Web de la machine de destination reçoit la demande, effectue le traitement nécessaire et
répond avec le fichier demandé et tous les fichiers additionnels associés (mise en page, scripts,
multimédias).
Les clients et les serveurs communiquent en échangeant des messages individuels (par opposition à
un flux de données). Les messages envoyés par le client, généralement un navigateur Web, sont
appelés requêtes et les messages envoyés par le serveur (en tant que réponse) sont appelés réponses.
[Link] FTP
Le FTP est un ensemble qui permets d’échanger des fichiers entre différents ordinateurs sur Internet.
Comparé à HTTP qui est utilisé pour accéder à une page web et aux fichiers associés, le FTP est
utilisé simplement pour transférer un fichier d’un ordinateur à un autre. Par exemple, il est souvent
utilisé pour transférer les fichier pages web venant de l’ordinateur du développeur vers le serveur
3
web. C’est donc un langage qui va permettre l’échange de fichiers entre deux ordinateurs, et plus
exactement entre un serveur et un client. On parle alors de : serveur FTP et client FTP.
Le serveur FTP est un logiciel qui va répondre aux demandes des clients. Lorsque le serveur reçoit
une demande, il vérifie les droits et si le client à les droits suffisants, il répond à cette demande sinon
la demande est rejetée. Un exemple de serveur FTP est le FileZilla Server.
Le client FTP, c’est lui qui va être à l’initiative de toutes les transactions. Il se connecte au serveur
FTP, effectue les commandes (récupération ou dépôt de fichiers) puis se déconnecte. Toutes les
commandes envoyées et toutes les réponses seront en mode texte. (Cela veut dire qu’un humain
peut facilement saisir les commandes et lire les réponses). Le protocole FTP n’est pas sécurisé : les
mots de passe sont envoyés sans cryptage entre le client FTP et le serveur FTP. (Le protocole FTPS
avec S pour « secure » permet de crypter les données). Un exemple de client FTP est le FileZilla
client.
Grâce à FTP, il est possible de sauvegarder ou d’envoyer des fichiers sur des serveurs distants sans
passer par le web. On peut également se servir des services FTP pour échanger des fichiers avec des
personnes ou des entreprises surtout lorsque la taille du fichier est supérieure à 20Mo
[Link] TCP/IP
Le TCP/IP est le principal protocole de communication utilisé sur Internet. Le TCP est le IP ont des
fonctionnalités différentes et sont utilisés ensemble pour assurer la fiabilité de la communication sur
internet.
[Link] TCP
L’objectif du TCP est d’assurer l’intégrité du réseau de communication. Le TCP commence par
diviser les fichiers et les messages (à envoyer et à échanger) en plusieurs unités individuels appelés
paquets (packets). Ces paquets contiennent des informations (placés dans l’en-tête du paquet ou
header) tels que la destination, la source, leurs numéros de séquences, et des valeurs checksum
(utilisé pour vérifier l’intégrité des données).
TCP est utilisé avec IP pour transférer efficacement les fichiers sur Internet. IP transfert sur Internet
(en choisissant le meilleur chemin) les paquets crées à partir de TCP, en utilisant les adressages IP.
Quand l’adresse de destination est atteinte, TCP vérifie l’intégralité de chaque paquet en utilisant le
checksum (si un paquet est endommagé, une requête de ré-envoie est effectuée). Ces paquets reçus
seront ensuite rassemblés pour reconstituer le fichier ou le message.
4
[Link] IP
Travaillant en harmonie avec TCP, IP est un ensemble de règles qui contrôle la manière dont les
données sont envoyées entre les ordinateurs sur Internet. IP achemine un paquet vers la bonne
adresse de destination. Une fois envoyé, le paquet est successivement transmis au routeur le plus
proche suivant (un périphérique matériel conçu pour déplacer le trafic réseau) jusqu'à ce qu'il
atteigne sa destination.
En générale, deux différents types de serveurs sont impliqués dans le fonctionnement de l’e-mail. :
Un serveur pour recevoir les mails, et un autre pour envoyer les mails. Pour envoyer les emails, le
protocole SMTP est utilisé. Et pour accéder aux emails reçus, le protocole POP ou le protocole
IMAP sont utilisés. [1]
1.2.3 Web
Le Word Wide Web ou tout simplement le Web est un système d’information auquel les documents
et les ressources du web sont identifiés par des URLs qui peuvent être inter-reliés par des « hyperlien
», et sont accessibles via Internet. [1]
Une page web est l’unité de base du web. C’est un document distinct destiné à être consulté avec
un navigateur Web. Une page Web est toujours constituée d’une ressource centrale, généralement
un document HTML, et d’éventuelles ressources liées automatiquement accédées (typiquement des
images). [1]
Un site Web est un ensemble de pages Web reliées entre elles par des liens internes, visualisable
depuis un navigateur Web. D’une manière générale, la totalité des pages d’un site Web est
accessible sur une même adresse, sous le même nom de domaine.
Un site Internet contient différents types de contenus (textes et multimédia), et est hébergé sur un
serveur Web qui, pour sa part, est accessible à travers un réseau Internet ou intranet, par
l’intermédiaire d’un navigateur Web comme Firefox, Internet Explorer, Chrome, Safari, Opera…
5
Chaque page Web qui constitue un site Web est un ensemble de documents HTML structurés et
stockés sur le serveur Web. [2]
On considère qu’il existe deux types de sites Web : les sites statiques et les sites dynamiques.
Les sites statiques sont des sites réalisés uniquement à l’aide des langages HTML et CSS. Ils
fonctionnent très bien mais leur contenu ne peut pas être mis à jour automatiquement : il faut que le
propriétaire du site (le webmaster) modifie le code source pour y ajouter des nouveautés, ce qui
n’est pas très pratique quand on doit mettre à jour son site plusieurs fois dans la même journée. Ce
type de site se fait de plus en plus rare aujourd’hui, car dès que l’on rajoute un élément d’interaction
(comme un formulaire de contact), on ne parle plus de site statique mais de site dynamique.
Lorsque le site est statique, le schéma est très simple. Cela se passe en deux temps :
Dans le cadre d'un site web statique, la communication entre le client (utilisateur) et le serveur est
simplifiée. Le client envoie une requête indiquant qu'il souhaite accéder à une page web spécifique.
En réponse, le serveur renvoie la page demandée telle qu'elle est stockée, sans apporter de
modifications. Sur un site statique, il n'y a pas d'interactions dynamiques ni de processus de
modification côté serveur. Le serveur agit essentiellement comme un entrepôt de pages web,
répondant aux demandes des clients en fournissant les contenus tels qu'ils ont été préalablement
créés, sans aucun ajustement en temps réel.
6
[Link] Sites Web dynamiques
Les sites dynamiques sont plus complexes que les sites statiques, ils utilisent d’autres langages en
plus de HTML et CSS, tels que PHP et MySQL. Le contenu de ces sites web est dit « dynamique »
parce qu’il peut changer sans l’intervention du webmaster. Une page web dynamique est construite
à la demande par le serveur
Lorsque le site est dynamique, il y a une étape intermédiaire : la page est générée.
La page web est générée à la demande de chaque client. Cette fonctionnalité essentielle confère aux
sites dynamiques une vivacité unique : le contenu d'une même page peut subir des changements
constants, offrant ainsi une expérience en ligne fluide et interactive. Cette capacité à adapter
instantanément le contenu en fonction des requêtes des utilisateurs permet aux sites dynamiques de
fournir des informations actualisées et personnalisées, créant ainsi une expérience utilisateur riche
et engageante. C'est précisément cette réactivité qui distingue les sites web dynamiques, les rendant
particulièrement adaptés pour répondre aux besoins changeants des utilisateurs dans un monde
numérique en constante évolution.
Une application Web, aussi appelée site Web dynamique ou WebApp, est un logiciel applicatif
manipulable grâce à un navigateur Web. De la même manière que les sites Web, une application
7
Web est généralement placée sur un serveur et se manipule en actionnant des widgets à l'aide
d'un navigateur Web, via un réseau informatique (Internet, intranet, réseau local, etc.)
Contrairement à un logiciel traditionnel, l’utilisateur d’une application web n’a pas besoin de
l’installer sur son ordinateur. Il lui suffit de se connecter à l’application à l’aide de son navigateur.
La tendance actuelle est d’offrir une expérience utilisateur et des fonctionnalités équivalentes aux
logiciels directement installés sur les ordinateurs. [4] [5]
Une application web fonctionne en utilisant un navigateur internet que ce soit sur ordinateur, tablette
ou téléphone. Lors de l’accès à l'application, le navigateur envoie une demande au serveur web de
l'application via Internet. Cette demande est traitée par le serveur d'applications, qui peut effectuer
diverses tâches telles que l'accès à une base de données ou le traitement d'informations.
Une fois que le serveur d'applications a traité la demande, il renvoie les résultats au serveur web,
qui à son tour les envoie à votre navigateur. Le navigateur interprète ces résultats et les affiche sur
8
l’écran, permettant ainsi à l’utilisateur d'interagir avec l'application. Ce processus continu de
demandes et de réponses entre le navigateur et les serveurs de l'application permet une utilisation
fluide et interactive des applications web, offrant ainsi aux utilisateurs une expérience en ligne
intuitive et conviviale. [6]
Étant parfois appelée site web dynamique, une application web ne se contente pas de présenter des
informations, il permet d’exécuter diverses actions. Dans son fonctionnement, une application web
fait appel à trois composantes essentielles dont le client, le serveur web et le serveur de base de
données.
[Link] Client
Le client ou logiciel client est le navigateur web dont se sert l’utilisateur sur son appareil mobile ou
son ordinateur. Le client peut aussi être un programme tiers, auquel est intégré un navigateur ; il y
a ainsi des applications mobiles qui sont en réalité des applications web. C’est au niveau du logiciel
client qu’interviennent les langages de base de la programmation web, tels que le HTML, le CSS
ou encore le Javascript, lisibles par le navigateur. Le client affiche la partie publique, qui contiendra
notamment des boutons pour se connecter et accéder aux fonctionnalités de l’application web. [7]
Un serveur web est un programme qui utilise le protocole HTTP pour fournir les fichiers qui
constituent les pages web que les utilisateurs ont demandés via des requêtes transmises par les
clients HTPP de leurs ordinateurs. Des ordinateurs et des appliances dédiés peuvent également jouer
le rôle de serveurs Web. [8]
Un serveur web peut faire référence à des composants logiciels (software) ou à des composants
matériels (hardware) ou à des composants logiciels et matériels qui fonctionnent ensemble.
• Au niveau des composants matériels, un serveur web est un ordinateur qui stocke les fichiers
qui composent un site web (par exemple les documents HTML, les images, les feuilles de
style CSS, les fichiers JavaScript) et qui les envoie à l'appareil de l'utilisateur qui visite le
site. Cet ordinateur est connecté à Internet et est généralement accessible via un nom de
domaine tel que [Link].
9
• Au niveau des composants logiciels, un serveur web contient différents fragments qui
contrôlent la façon dont les utilisateurs peuvent accéder aux fichiers hébergés. On trouvera
au minimum un serveur HTTP. Un serveur HTTP est un logiciel qui comprend les URL et
le protocole HTTP (le protocole utilisé par le navigateur pour afficher les pages web).
Les serveurs web sont classés en deux types : les serveurs web statiques et les serveurs web
dynamiques. [9]
Un serveur web statique (aussi appelé une pile) est composé d'un ordinateur (matériel) et d'un
serveur HTTP (logiciel). Il est appelé « statique » car le serveur envoie les fichiers hébergés « tels
quels » vers le navigateur.
Un serveur web dynamique possède d'autres composants logiciels, certains qu'on retrouve
fréquemment dont un serveur d'applications et une base de données. Il est appelé « dynamique » car
le serveur d'applications met à jour les fichiers hébergés avant de les envoyer au navigateur via
HTTP. [8]
Le terme serveur de base de données fait référence au matériel et aux logiciels utilisés pour exécuter
une base de données et pour stocker toutes les données modifiables d’un site web ou d’une
application web. En tant que logiciel, un serveur de base de données est la partie principale d'une
10
application de base de données, suivant le modèle client-serveur traditionnel. Il peut également faire
référence à un ordinateur physique utilisé pour héberger la base de données. Lorsqu'il est mentionné
dans ce contexte, le serveur de base de données est généralement un ordinateur haut de gamme. Le
serveur de base de données est indépendant de l'architecture de base de données comme les bases
de données relationnelles, fichiers plats ou les bases de données non relationnelles car toutes ces
architectures peuvent être hébergées sur des serveurs de bases de données. [10]
On désigne par application web statique, les applications web de base qui renferment peu de contenu
et offrent peu de possibilités de mouvement. Elles sont généralement développées en HTML et CSS,
bien que des objets mobiles tels que des bannières, des GIF animés ou des vidéos puissent également
être affichés quelque part dans l’application web. Elles se chargent sur le navigateur d’un utilisateur
exactement comme elles sont enregistrées sur le serveur web. Ce sont des applications qui manquent
de flexibilité et proposent peu ou pas d’interaction.
Les applications web dynamiques constituent des outils qui, à l’inverse des applications web
statiques, utilisent des bases de données pour charger leurs informations. Elles changent
continuellement et peuvent fournir beaucoup d’informations en fonction de l’interaction avec
l’utilisateur. Ce style d’application est techniquement plus compliqué que l’application statique et
11
est mis en place pour faire en sorte que les bases de données ou les forums soient régulièrement
capables de se mettre à jour ou de changer l’information disponible. [11]
Une application web monopage, ou application web à page unique (SPA), fonctionne sans
rechargement de page dans un navigateur pendant son utilisation. Elle est écrite entièrement en
JavaScript et offre une expérience utilisateur fluide et réactive. Cependant, leur développement peut
être complexe en raison de leur architecture sophistiquée malgré leur rapidité d'exécution. Les SPAs
sont appréciées pour leur interactivité sans interruption, mais leur mise en place nécessite une
expertise technique.
Une application web multi-pages est constituée de plusieurs pages, écrites en HTML et CSS.
Comparées aux applications web monopages, elles offrent une plus grande flexibilité et sont simples
à développer. Ces applications sont idéales pour les situations où les utilisateurs doivent remplir des
formulaires ou télécharger des fichiers. Leur structure modulaire les rend adaptées à divers besoins,
facilitant ainsi l'interaction utilisateur. [12]
Une application de portail web renvoie simplement à une application dans laquelle différentes
sections ou catégories sont accessibles par l’intermédiaire d’une page d’accueil. Ce type de page se
compose à la fois des forums, des chats, des courriels, des navigateurs, etc. [11]
Une application web progressives (PWA) utilise les dernières technologies disponibles dans les
navigateurs pour offrir des expériences utilisateur similaire à celle d’un site web. Les PWA sont des
applications web rapides et fiables. Elles sont conçues pour fonctionner hors ligne et sur des
appareils de faible puissance. [12]
Pour développer l'application web, il est essentiel de faire des choix préliminaires tels que le langage
de programmation à utiliser, le système de gestion de base de données adapté, ainsi que la
méthodologie de conception et les outils de développement appropriés.
12
1.4.1 Langages de programmation
Lorsqu'il s'agit de développer une application web, le choix des langages de programmation joue un
rôle crucial dans la création d'une expérience utilisateur fluide et efficace. Les développeurs ont un
large éventail de langages à leur disposition, chacun ayant ses propres avantages et caractéristiques.
Les langages comme HTML, CSS et JavaScript, sont fondamentaux pour la création d'interfaces
utilisateur interactives et attrayantes. D'autres langages, tels que Python, Ruby, PHP et Java, offrent
des fonctionnalités plus avancées et sont souvent utilisés pour traiter les logiques côté serveur, gérer
les bases de données et créer des fonctionnalités complexes. Le choix judicieux de ces langages
dépend des exigences spécifiques de l'application, de sa sécurité et de sa facilité de maintenance.
[Link] HTML
Le HTML est un format de présentation de données permettant de créer des pages web pouvant être
lues dans des navigateurs. C'est un langage de description de données, et non un langage de
programmation. Il est un langage interprété. Ce langage est interprété du coté client par le navigateur
web. Il est pourvu d'un système de balisage qui va permettre de décrire et de structurer un document.
[13]
Une balise (tag ou markup en anglais) est un mot clé qui va donner des indications au navigateur
sur ce qu'il doit afficher. Elle n'est pas affichée telle quelle dans le navigateur, elle est interprétée
par celui-ci. Les caractères qui ne sont pas compris entre les signes « < » et « > » sont donc
considérés comme du texte et seront affichés tel quel par le navigateur. La balise est toujours
délimitée par les signes < et > (<html>) [14]
La dernière version de HTML est le HTML5. Cette version a été finalisée le 28 octobre 2014. Dans
le langage courant, HTML5 désigne souvent un ensemble de technologies Web (HTML5, CSS3 et
JavaScript) permettant notamment le développement d'applications.
[Link] CSS
CSS, aussi appelé feuille de style, est un langage de programmation utilisé pour définir l'apparence
et le formatage des éléments HTML dans une page web. Placé généralement dans des fichiers
distincts ou directement dans le code HTML, CSS permet aux développeurs web de contrôler la
présentation visuelle des sites web.
Une feuille de style est un ensemble d’un ou plusieurs instructions appelé règle de style (ou style
rules) qui décrit comment un élément ou un groupe d’éléments doivent êtres affichés. Ces règles
13
portent sur le positionnement des éléments, l’alignement, les polices de caractères, les couleurs, les
marges, les espacements, les arrière-plans et d'autres propriétés de mise en forme.
Le but de CSS est de séparer la structure d'un document HTML de sa présentation. En effet, avec
HTML, on peut définir à la fois la structure (le contenu et la hiérarchie entre les différentes parties
d'un document) et la présentation. Mais cela pose quelques problèmes. Avec le couple HTML/CSS,
on peut créer des pages web où la structure du document se trouve dans le fichier HTML tandis que
la présentation se situe dans un fichier CSS.
Le développement du troisième niveau des feuilles de styles en cascade, CSS3, a débuté en 1999.
CSS3 est devenu « modulaire » pour simplifier les mises à jour et permettre une implémentation
flexible par divers agents utilisateurs, y compris les navigateurs graphiques, les navigateurs mobiles
et les navigateurs vocaux, chacun ayant des capacités et des exigences variées. [15] [16]
[Link] Bootstrap
Bootstrap est un framework front-end (HTML5, CSS et JavaScript) spécialement conçu pour le
développement d'application web dit « responsive ». Un Framework est d’abord un outil qui
regroupe tout un ensemble de fonctionnalités préexistantes. Il nous permet de bénéficier d’une
architecture d’application de base et offre ainsi aux développeurs un confort de conception grâce
notamment à une facilité et à une rapidité de développement, à des conventions précises et à une
décomposition de l’application méthodique et logique. Il regroupe une collection d’outils fournis
sous la forme de classes CSS et de librairies JavaScript et optimise la création du design (graphisme,
animation et interactions avec la page dans le navigateur ... etc. ...) de sites et d'applications web.
Ce framework a été créé à l’origine par deux développeurs du réseau social Twitter, Mark Otto
et Jacob Thornton, pour accélérer et faciliter le développement de sites web frontaux.
14
• Adaptabilité responsive : la structure de la page s'ajuste automatiquement à différentes
tailles d'écrans et appareils, garantissant une expérience utilisateur cohérente.
• Facilité d'utilisation : Une connaissance de base en HTML5 et CSS est suffisante pour
utiliser Bootstrap, bien qu'une compréhension de base de JavaScript soit utile pour
exploiter toutes les fonctionnalités du framework. [17]
[Link] PHP
PHP est un langage de script HTML exécuté du côté du serveur. Sa syntaxe est largement inspirée
du langage C, de Java et de Perl, avec des améliorations spécifiques. C’est un langage impératif
disposant de fonctionnalités de modèle objet complètes. En raison de la richesse de sa
bibliothèque, on désigne parfois PHP comme une plate-forme, plus qu'un simple langage .
PHP est un langage côté serveur. Lors du chargement d'une page PHP, c'est le serveur qui va lire,
interpréter et exécuter le code. Puis il renvoie le résultat, généralement sous la forme de code HTML
au navigateur. Ainsi le navigateur et l'utilisateur ne voient jamais le véritable code PHP exécuté. De
plus le résultat étant une page web classique en HTML, pas besoin d'installer sur le client des
composants spécifiques. Il n’y a donc pas de notion de vitesse d'exécution du côté du client, mais
celle du serveur est prépondérante.
Le language PHP a été conçu pour permettre la création d'applications dynamiques, le plus
souvent dédiées au Web. PHP est très majoritairement installé sur un serveur Apache, mais
peut être installé sur les autres principaux serveurs HTTP. Ce couplage permet de récupérer
des informations issues d'une base de données, d'un système de fichiers (contenu de fichiers et
de l'arborescence) ou plus simplement des données envoyées par le navigateur afin d'être
interprétées ou stockées pour une utilisation ultérieure. C’est aussi un langage multi -
plateforme : autant sur Linux qu'avec Windows il permet aisément de reconduire le même code
sur un environnement à peu près semblable. [18]
[Link] JavaScript
Le JavaScript est un langage qui est lu et exécuté par votre navigateur – le client – (donc directement
sur votre ordinateur) et qui permet de créer des réactions en réponse à des événements sur la page
ou à des actions de l’utilisateur. Par exemple :
15
• un compteur qui défile
• l’apparition renouvelée d’actualités sans que le navigateur ne demande à nouveau la page au
serveur
Auparavant, le code JavaScript était souvent intégré au code HTML, mais là encore, on préconise
aujourd’hui la séparation des deux langages pour des raisons d’organisation du code, mais aussi
d’accessibilité du site.
Le JavaScript est capable lui-même d’écrire du code HTML ou CSS, et donc de modifier totalement
la base d’une page Web. [19] [20]
[Link] JQuery
JQuery est une bibliothèque JavaScript libre qui porte sur l’interaction entre JavaScript et HTML,
et a pour but de simplifier des commandes communes de JavaScript. [19]
En ce qui concerne les bases de données, le choix est très vaste. Cependant, alors que PHP et ses
concurrents sont la plupart du temps libres et gratuits, ce n’est pas le cas de la plupart des SGBD.
• MySQL : C’est un serveur qui est très rapide. Ceci s’explique par le fait qu'il est un SGBD
qui a été conçu à l'origine pour être performant sur des applications Web, donc destiné aux
applications web dont le critère principal est la rapidité. Il est beaucoup plus simple à utiliser
que la plupart des SGBD et dispose d’un système permettant de gérer les personnes et les
machines pouvant accéder aux différentes bases. Cependant, MySQL ne peut s’occuper que
des petits volumes de données, avec un faible nombre d’utilisateurs.
• Microsoft SQL Server : Édité par Microsoft, c’est un SGBD qui est souvent utilisé en
combinaison avec ASP .NET, bien qu’on puisse l’utiliser avec n’importe quel autre langage.
Il est payant, mais il existe des versions gratuites limitées.
• Oracle : C’est le SGBD le plus célèbre, le plus complet et le plus puissant. Il est
malheureusement payant (et cher), ce qui le réserve plutôt aux entreprises qui l’utilisent déjà
massivement. Il existe cependant des versions gratuites d’Oracle.
• PostgreSQL : Il s’agit d’un SGBD libre et gratuit comme MySQL, qui propose des
fonctionnalités plus avancées. Il gère les types utilisateurs, les tableaux, et gère aussi les
langages procéduraux tels que JAVA et bien d’autres. Mais contrairement à MySQL, son
temps d’exécution des traitements est moins rapide. [3]
16
Ce projet implique le développement d'une application Web nécessitant une réponse rapide de la
part du Système de Gestion de Base de données. Puisque MySQL est plus rapide que PostgreSQL
et qu'il est gratuit, nous avons choisi d’adopter MySQL comme SGBD.
Bien que le développement en PHP puisse être réalisé avec des éditeurs de texte basiques tels que
le bloc-notes ou Notepad, l'utilisation d'un environnement de développement intégré (IDE) offre des
avantages significatifs en termes d'efficacité. De nos jours, il existe de nombreux IDE gratuits et
payants sur le marché, offrant aux développeurs PHP des outils puissants pour optimiser leur flux
de travail. Nous avons opté pour VSCode en raison de ses fonctionnalités avancées, comprenant
l'autocomplétion du code, la vérification syntaxique en temps réel, la prise en charge des extensions,
ainsi que des colorations syntaxiques. Ces caractéristiques améliorent significativement l'efficacité
du processus de développement, offrant ainsi un environnement de programmation optimal.
Dans le cadre du projet, nous avons choisi de le faire fonctionner localement, privilégiant ainsi une
approche où toutes les opérations et les tests sont effectués sur notre propre système. Pour ce faire,
nous avons choisi d’utiliser WampServer en tant que plate-forme de développement Web.
WampServer est une plate-forme de développement Web sous Windows pour des applications Web
dynamiques à l’aide du serveur Apache2, du langage de scripts PHP et d’une base de
données MySQL. Il possède également phpMyAdmin pour gérer plus facilement les bases de
données. [21]
Pour rester innovant, le besoin d'avoir une expérience utilisateur parfaite et des fonctionnalités
avancées est essentiel. C'est pour cela qu'il est nécessaire d'adopter les bonnes pratiques pour
l'architecture des applications web.
En général quand on développe une application web, on utilise une architecture trois tiers (ou trois
couches) incluant : l'interface utilisateur, la logique métier, et l'accès aux données.
L'architecture MVC est une façon d'organiser une interface graphique d'un programme. Elle consiste
à distinguer trois entités distinctes qui sont, le modèle, la vue et le contrôleur ayant chacun un rôle
17
précis dans l'interface. L'organisation globale d'une interface graphique est souvent délicate. Bien
que la façon MVC d'organiser une interface ne soit pas la solution miracle, elle fournit souvent une
première approche qui peut ensuite être adaptée. Elle offre aussi un cadre pour structurer une
application.
Dans l'architecture MVC, les rôles des trois entités sont les suivants :
• Les modèles : ils représentent les données de l’application et permettent l’interaction avec
la base de données.
• Les vues : ce sont les représentations (les templates) des résultats de la requête que
l’utilisateur a effectuée.
• Les contrôleurs : Ils interceptent toutes les requêtes faites par les utilisateurs. [22]
En séparant le code d'une application web de cette manière, l'accès aux données est totalement
séparé du reste de l'application. Sans dépendance à l'interface utilisateur ou à la logique des actions
de l'utilisateur, il est bien plus simple d'écrire des tests automatisés. De plus, la duplication de code
sera considérablement amoindrie.
18
Mais ce motif n'est pas parfait. Premièrement les contrôleurs et les vues restent liés et un
changement d'un côté entrainera souvent un changement de l'autre.
De plus, si des changements d'infrastructure interviennent, comme des modifications de base de
données, il faudra probablement réécrire une partie importante du code. Ces évolutions sont
normalement rares, mais cela arrivera sûrement à un moment ou à un autre.
Pour gagner en maintenance et en évolutivité il peut être nécessaire d'avoir une architecture où
l'infrastructure n'est pas liée aux modèles.
Le traitement d'une demande d'un client se déroule selon les étapes suivantes :
• Le client fait une demande au contrôleur. Ce contrôleur voit passer toutes les demandes des
clients. C'est la porte d'entrée de l'application. C'est le C de MVC
• Le contrôleur traite cette demande. Pour ce faire, il peut avoir besoin de l'aide de la couche
métier, ce qu'on appelle le modèle M dans la structure MVC.
• Le contrôleur reçoit une réponse de la couche métier. La demande du client a été traitée.
Celle-ci peut appeler plusieurs réponses possibles. Un exemple classique est une page
d'erreurs si la demande n'a pu être traitée correctement ou une page de confirmation sinon.
• Le contrôleur choisit la réponse (vue) à envoyer au client. Celle-ci est le plus souvent une
page contenant des éléments dynamiques. Le contrôleur fournit ceux-ci à la vue.
• La vue est envoyée au client. C'est le V de MVC.
Le modèle contient les données manipulées par le programme. Il assure la gestion de ces données
et garantit leur intégrité. Dans le cas typique d'une base de données, c'est le modèle qui la contient.
Le modèle offre des méthodes pour mettre à jour ces données (insertion suppression, changement
de valeur). Il offre aussi des méthodes pour récupérer ses données. Dans le cas de données
importantes, le modèle peut autoriser plusieurs vues partielles des données.
La vue fait l'interface avec l'utilisateur. Sa première tâche est d'afficher les données qu'elle a
récupérées auprès du modèle. Sa seconde tâche est de recevoir toutes les actions de l'utilisateur (clic
19
de souris, sélection d’une entrée, boutons, …). Ses différents événements sont envoyés au
contrôleur. La vue peut aussi donner plusieurs vues, partielles ou non, des mêmes données.
Le contrôleur est chargé de la synchronisation du modèle et de la vue. Il reçoit tous les événements
de l'utilisateur et enclenche les actions à effectuer. Si une action nécessite un changement des
données, le contrôleur demande la modification des données au modèle et ensuite avertit la vue que
les données ont changé pour que celle-ci se mette à jour. Certains événements de l'utilisateur ne
concernent pas les données mais la vue. Dans ce cas, le contrôleur demande à la vue de se modifier.
Le contrôleur est souvent scindé en plusieurs parties dont chacune reçoit les événements d'une partie
des composants. En effet si un même objet reçoit les événements de tous les composants, il lui faut
déterminer quelle est l'origine de chaque événement. Ce tri des événements peut s'avérer fastidieuse
et peut conduire à un code pas très élégant. C'est pour éviter ce problème que le contrôleur est réparti
en plusieurs objets. [22]
1.6 Conclusion
Dans ce chapitre, nous avons présenté quelques notions sur le site web. Nous avons cité aussi les
outils utilisés tels que les langages de développement, les Frameworks, les librairies, les logiciels et
plates-formes de développement web afin de réaliser ce projet. Pour assurer l’évolutivité de
l’application, l’architecture logicielle MVC est avantageuse.
20
CHAPITRE 2
SYSTÈME D’INFORMATION
2.1 Introduction
Ce chapitre aborde les concepts fondamentaux des bases de données, la manière dont les systèmes
d'information sont analysés et conçus à l'aide de la méthode MERISE, le modèle de base de données
relationnel, ainsi que le langage SQL.
Une base de données ou banque de données (en anglais : database) est un ensemble structuré et
organisé permettant le stockage de grandes quantités d’informations afin d’en faciliter l’exploitation
(ajout, mise à jour, recherche de données). [23]
2.2.2 Historique
Jusque dans les années 60, l'organisation classique des données dans une entreprise se faisait sous
forme de fichiers. Très vite, des limites sont apparues :
Vers la fin des années 60, on commence à voir l’apparition des premiers : les systèmes réseaux et
hiérarchiques.
Ce n’est qu’à partir de 1970 qu’apparait la deuxième génération de SGBD : les systèmes
relationnels. Au début des années 80, la troisième génération de SGBD : les systèmes orientés objet
21
émergent. Ces avancées technologiques ont permis de résoudre les problèmes liés à l’utilisation de
fichiers et possède les avantages suivants :
Une base de données hiérarchique est une forme de système de gestion de base de données qui lie
des enregistrements dans une structure arborescente de façon à ce que chaque enregistrement n’ait
qu’un seul possesseur (par exemple, une paire de chaussures n’appartient qu’à une seule personne).
Les structures de données hiérarchiques ont été largement utilisées dans les premiers systèmes de
gestion de bases de données conçus pour la gestion des données du programme Apollo de la NASA.
Cependant, à cause de leurs limitations internes, elles ne peuvent pas souvent être utilisées pour
décrire des structures existantes dans le monde réel.
Les liens hiérarchiques entre les différents types de données peuvent rendre très simple la réponse
à certaines questions, mais très difficile la réponse à d’autres formes de questions. Si le principe de
relation « 1 vers N » n’est pas respecté (par exemple, un malade peut avoir plusieurs médecins et
un médecin a, a priori, plusieurs patients), alors la hiérarchie se transforme en un réseau.
Le modèle réseau est en mesure de lever de nombreuses difficultés du modèle hiérarchique grâce à
la possibilité d’établir des liaisons de type n-n, les liens entre objets pouvant exister sans restriction.
Pour retrouver une donnée dans une telle modélisation, il faut connaître le chemin d’accès (les liens)
ce qui rend les programmes dépendants de la structure de données
Ce modèle de bases de données a été inventé par C.W. Bachman. Pour son modèle, il reçut en 1973
le prix Turing.
22
[Link] Modèle relationnel
Une base de données relationnelle est une base de données structurée suivant les principes de
l’algèbre relationnelle.
Le père des bases de données relationnelles est Edgar Frank Codd. Chercheur chez IBM à la fin des
année 1960, il étudiait alors de nouvelles méthodes pour gérer de grandes quantités de données car
les modèles et les logiciels de l’époque ne le satisfaisait pas. Mathématicien de formation, il était
persuadé qu’il pourrait utiliser des branches spécifiques des mathématiques (la théorie des
ensembles et la logique des prédicats du premier ordre) pour résoudre des difficultés telles que la
redondance des données, l'intégrité des données ou l'indépendance de la structure de la base de
données avec sa mise en œuvre physique.
Les avantages de ce modèle sont son indépendance vis-à-vis de la structure logique et physique et
la garantie des contraintes émises.
Le modèle entités-associations constitue l’une des premières et des plus courantes. Ce modèle,
présenté par Chen (1976), permet une description naturelle du monde réel à partir des concepts
d’entité et d’association. Basé sur la théorie des ensembles et des relations, ce modèle se veut
universel et répond à l’objectif d’indépendance données-programmes. Ce modèle, utilisé pour la
phase de conception, s’inscrit notamment dans le cadre d’une méthode plus générale et très répandue
: Merise. [23]
Pour ce modèle, les données sont décrites comme des classes et représentées sous forme d'objets.
Le plus généralement, ce modèle est établi en UML (ou langage de modélisation unifié). Le modèle
Objet prend en compte les notions d'héritages et permet une navigation simple.
L’ORM permet de modéliser les besoins utilisateurs en classe. Autrement dit, les ORM associent
des tables de bases de données traditionnelles à des objets (classe) [25]
23
2.2.4 Base de données informatisée
Une base de données informatisée est un ensemble structuré de données enregistrées sur des
supports accessibles par l’ordinateur, représentant des informations du monde réel et pouvant être
interrogées et mises à jour par une communauté d’utilisateurs. [23]
2.2.5 SGBD
[Link] Principes de fonctionnement
La gestion et l’accès à une base de données sont assurés par un ensemble de programmes qui
constituent le Système de gestion de base de données (SGBD). Un SGBD doit permettre l’ajout, la
modification et la recherche de données. Un système de gestion de bases de données héberge
généralement plusieurs bases de données, qui sont destinées à des logiciels ou des thématiques
différents.
Actuellement, la plupart des SGBD fonctionnent selon un mode client/serveur. Le serveur (sous-
entendu la machine qui stocke les données) reçoit des requêtes de plusieurs clients et ceci de manière
concurrente. Le serveur analyse la requête, la traite et retourne le résultat au client. Le modèle
client/serveur est assez souvent implémenté au moyen de l’interface des sockets (voir le cours de
réseau) ; le réseau étant Internet.
Une variante de ce modèle est le modèle ASP. Dans ce modèle, le client s’adresse à un mandataire
(broker) qui agit comme un intermédiaire. Ce mandataire met en relation le client avec un SGBD
capable de résoudre la requête. Une fois que le mandataire a identifié le SGBD approprié, la requête
est transmise directement au SGBD sélectionné. Ce SGBD résout la requête de manière efficace et
retourne les résultats directement au client. Ce modèle offre une approche centralisée et gérée pour
l'accès aux bases de données, permettant aux clients d'obtenir des réponses précises et rapides à
leurs requêtes tout en simplifiant la complexité du processus pour eux.
Quel que soit le modèle, un des problèmes fondamentaux à prendre en compte est la cohérence des
données. Par exemple, dans un environnement où plusieurs utilisateurs peuvent accéder
concurremment à une colonne d’une table par exemple pour la lire ou pour l’écrire, il faut s’accorder
sur la politique d’écriture. Cette politique peut être : les lectures concurrentes sont autorisées mais
dès qu’il y a une écriture dans une colonne, l’ensemble de la colonne est envoyé aux autres
utilisateurs l’ayant lue pour qu’elle soit rafraîchie. [23]
24
Figure 2.01 : Architecture client/serveur de MySQL
[Link] Objectifs
Des objectifs principaux ont été fixés aux SGBD dès l’origine de ceux-ci et ce, afin de résoudre les
problèmes causés par la démarche classique. Ces objectifs sont les suivants :
• Indépendance physique : La façon dont les données sont définies doit être indépendante des
structures de stockage utilisées.
• Indépendance logique : Un même ensemble de données peut être vu différemment par des
utilisateurs différents. Toutes ces visions personnelles des données doivent être intégrées
dans une vision globale.
• Accès aux données : L’accès aux données se fait par l’intermédiaire d’un Langage de
Manipulation de Données (LMD). Il est crucial que ce langage permette d’obtenir des
réponses aux requêtes en un temps « raisonnable ». Le LMD doit donc être optimisé,
minimiser le nombre d’accès disques, et tout cela de façon totalement transparente pour
l’utilisateur.
• Administration centralisée des données (intégration) : Toutes les données doivent être
centralisées dans un réservoir unique commun à toutes les applications. En effet, des visions
différentes des données (entre autres) se résolvent plus facilement si les données sont
administrées de façon centralisée.
• Non redondance des données : Afin d’éviter les problèmes lors des mises à jour, chaque
donnée ne doit être présente qu’une seule fois dans la base
• Cohérence des données : Les données sont soumises à un certain nombre de contraintes
d’intégrité qui définissent un état cohérent de la base. Elles doivent pouvoir être exprimées
simplement et vérifiées automatiquement à chaque insertion, modification ou suppression
25
des données. Les contraintes d’intégrité sont décrites dans le Langage de Description de
Données (LDD).
• Partage des données : Il s’agit de permettre à plusieurs utilisateurs d’accéder aux mêmes
données au même moment de manière transparente. Si ce problème est simple à résoudre
quand il s’agit uniquement d’interrogations, cela ne l’est plus quand il s’agit de
modifications dans un contexte multi-utilisateurs car il faut : permettre à deux (ou plus)
utilisateurs de modifier la même donnée « en même temps » et assurer un résultat
d’interrogation cohérent pour un utilisateur consultant une table pendant qu’un autre la
modifie.
• Sécurité des données : Les données doivent pouvoir être protégées contre les accès non
autorisés. Pour cela, il faut pouvoir associer à chaque utilisateur des droits d’accès aux
données
• Résistance aux pannes : Que se passe-t-il si une panne survient au milieu d’une modification,
si certains fichiers contenant les données deviennent illisibles ? Il faut pouvoir récupérer une
base dans un état « sain ». Ainsi, après une panne intervenant au milieu d’une modification
deux solutions sont possibles : soit récupérer les données dans l’état dans lequel elles étaient
avant la modification, soit terminer l’opération interrompue. [23]
Pour atteindre certains de ces objectifs, trois niveaux de description des données ont été définis par
la norme ANSI/SPARC.
a. Niveau externe
Le niveau externe correspond à la perception de tout ou partie de la base par un groupe donné
d’utilisateurs, indépendamment des autres. On appelle cette description le schéma externe ou vue.
Il peut exister plusieurs schémas externes représentant différentes vues sur la base de données avec
des possibilités de recouvrement. Le niveau externe assure l’analyse et l’interprétation des requêtes
en primitives de plus bas niveau et se charge également de convertir éventuellement les données
brutes, issues de la réponse à la requête, dans un format souhaité par l’utilisateur.
b. Niveau conceptuel
Le niveau conceptuel décrit la structure de toutes les données de la base, leurs propriétés (i.e. les
relations qui existent entre elles : leur sémantique inhérente), sans se soucier de l’implémentation
26
physique ni de la façon dont chaque groupe de travail voudra s’en servir. Dans le cas des SGBD
relationnels, il s’agit d’une vision tabulaire où la sémantique de l’information est exprimée en
utilisant les concepts de relation, attributs et de contraintes d’intégrité. On appelle cette description
le schéma conceptuel.
Le niveau interne ou physique s’appuie sur un système de gestion de fichiers pour définir la politique
de stockage ainsi que le placement des données. Le niveau physique est donc responsable du choix
de l’organisation physique des fichiers ainsi que de l’utilisation de telle ou telle méthode d’accès en
fonction de la requête. On appelle cette description le schéma interne. [23]
2.3.2 MCD
Le MCD introduit la notion d’entités, de relations et de propriétés. Il décrit de façon formelle les
données utilisées par le système d’information. La représentation graphique, simple et accessible,
permet à un non-informaticien de participer à son élaboration. Les éléments de base constituant un
modèle conceptuel de données sont :
• Les propriétés
• Les entités
• Les relations
[Link] Propriétés
27
Un client possède un numéro de client, un nom, un prénom, habite à une adresse précise, etc. Ces
informations élémentaires essentielles sont des propriétés.
Les propriétés disposent d’un type. Elles peuvent être numériques, représenter une date, leur
longueur peut être aussi définie.
Les types ne sont pas décrits au niveau conceptuel, car ce niveau est trop proche de la définition du
système physique.
Une entité est un objet abstrait ou concret de l’univers du discours. Une entité peut être une personne,
un lieu, un objet, etc.
• Un identifiant
• Une suite d’information lié à cet identifiant
L’identifiant permet de connaître de façon sûre et unique l’ensemble des propriétés qui participent
à l’entité. Le meilleur moyen pour ne pas risquer d’avoir des synonymes consiste à prendre des
numéros de références comme identifiant. Un identifiant peut être simple c.à.d. constitué d’une seule
propriété élémentaire mais il peut aussi être constitué de plusieurs propriétés élémentaires.
Les relations sont tout simplement les liens entre plusieurs entités. [27] [28]
28
Figure 2.03 : Représentation graphique d’un exemple d’association liant deux entités
2.3.3 MLD
Le MLD est la suite normale du processus Merise. Il précise le modèle conceptuel par des choix
organisationnels. Il s’agit d’une transcription (également appelée dérivation) du MCD dans un
formalisme adapté à une implémentation ultérieure, au niveau physique, sous forme de base de
données relationnelle ou réseau, ou autres. Les choix techniques d’implémentation (choix d’un
SGBD) ne seront effectués qu’au niveau suivant.
Un MLD est essentiellement composé de table logiques reliées entre elles par des flèches.
29
La transition du modèle conceptuel des données au modèle logique des données implique le respect
de plusieurs règles spécifiques. [23] [28]
• On duplique la clé primaire de la table basée sur l'entité à cardinalité (x, n) dans la
table basée sur l'entité à cardinalité (x,1).
• Les deux tables sont liées par une flèche nommée selon la relation, qui pointe de la
table à clé étrangère vers la table qui contient la clé primaire correspondante.
• x peut prendre les valeurs 0 ou 1.
Nous devons distinguer plusieurs cas. Sachant qu'une relation binaire du type (1,1) - (1,1) ne doit
pas exister il nous reste les 2 cas suivants :
• Relation binaire (0,1) - (1,1) : On duplique la clé de la table basée sur l'entité à
cardinalité (0,1) dans la table basée sur l'entité à cardinalité (1,1).
• Relation binaire (0,1) - (0,1) : On duplique la clé d'une des tables dans l'autre.
Lorsque la relation contient elle-même des propriétés, celles-ci deviennent
également attributs de la table dans laquelle a été ajoutée la clé étrangère.
• On crée une table supplémentaire ayant comme clé primaire une clé composée des clés
primaires des 2 tables.
• Lorsque la relation contient elle-même des propriétés, celles-ci deviennent attributs de la
table supplémentaire.
• Une propriété de la relation qui est soulignée devra appartenir à la clé primaire composée de
la table supplémentaire.
30
2.3.4 MPD
Le modèle physique des données (MPD) est la traduction du modèle logique des données (MLD)
dans une structure de données spécifique au système de gestion de bases de données (SGBD) utilisé.
Le modèle MPD permet d’établir la manière concrète dont le système sera mis en place (SGBD
retenu).
Le langage SQL peut être considéré comme le langage d’accès normalisé aux bases de données. Il
est aujourd’hui supporté par la plupart des produits commerciaux que ce soit par les systèmes de
gestion de bases de données micro tel que Access ou par les produits plus professionnels tels
qu’Oracle.
Le succès du langage SQL est dû essentiellement à sa simplicité et au fait qu’il s’appuie sur le
schéma conceptuel pour énoncer des requêtes en laissant le SGBD responsable de la stratégie
d’exécution. Néanmoins, le langage SQL ne possède pas la puissance d’un langage de
programmation : entrées/sorties, instructions conditionnelles, boucles et affectations. Pour certains
traitements il est donc nécessaire de coupler le langage SQL avec un langage de programmation
plus complet.
De manière synthétique, on peut dire que SQL est un langage relationnel, il manipule donc des
tables (i.e. des relations, c’est-à-dire des ensembles) par l’intermédiaire de requêtes qui produisent
également des tables. [23]
Les instructions SQL sont regroupées en catégories en fonction de leur utilité et des entités
manipulées.
31
• La définition des éléments d’une base de données (tables, colonnes, clefs, index, contraintes,
. . .),
• La manipulation des données (insertion, suppression, modification, extraction, . . .),
• La gestion des droits d’accès aux données (acquisition et révocation des droits),
• La gestion des transactions,
• Et enfin le SQL intégré.
Le langage de définition de données (ou Data Definition Language en anglais) est un langage orienté
au niveau de la structure de la base de données. Le LDD permet de créer, modifier, supprimer des
objets. Il permet également de définir le domaine des données (nombre, chaîne de caractères, date,
booléen, . . .) et d’ajouter des contraintes de valeur sur les données. Il permet enfin d’autoriser ou
d’interdire l’accès aux données et d’activer ou de désactiver l’audit pour un utilisateur donné.
• CREATE : utilisée pour créer une nouvelle table ou d’autres objets dans un SGBD.
• ALTER : permet de modifier une structure de données.
• DROP : permet de supprimer complètement un objet de la base de données.
• AUDIT : utilisée pour activer le suivi des actions spécifiés dans une base de données.
• NOAUDIT : permet de désactiver l’audit.
• ANALYZE : permet d’analyser les statistiques de la base de données.
• RENAME : utilisée pour renommer un objet existant dans la base de données.
• TRUNCATE : permet de supprimer toutes les lignes d’une table tout en conservant sa
structure.
Le langage de manipulation de données (ou Data Manipulation Language, en anglais) est l’ensemble
des commandes concernant la manipulation des données dans une base de données. Le LMD permet
l’ajout, la suppression et la modification de lignes, la visualisation du contenu des tables et leur
verrouillage.
32
• UPDATE : utilisée pour modifier les données dans une table.
• DELETE : utilisée pour supprimer les lignes d’une table en fonction d’une condition donnée.
• SELECT : utilisée pour récupérer des données à partir d’une ou plusieurs tables.
• EXPLAIN : utilisée pour obtenir des informations sur la façon dont le SGBD exécute une
requête SELECT.
• LOCK TABLE : utilisée pour verrouiller une ou plusieurs tables.
Ces éléments doivent être validés par une transaction pour qu’ils soient pris en compte.
Le langage de protections d’accès (ou Data Control Language en anglais) s’occupe de gérer les
droits d’accès aux tables. Les instructions du DCL sont :
Le langage de contrôle de transaction (ou Transaction Control Language en anglais) gère les
modifications faites par le LMD, c’est-à-dire les caractéristiques des transactions et la validation et
l’annulation des modifications.
• COMMIT : utilisée pour valider les transactions en attente dans une session.
• SAVEPOINT : utilisée pour marquer un point spécifique à l’intérieur d’une transaction.
• ROLLBACK : utilisée pour annuler toutes les modifications apportées dans la transaction
en cours depuis le dernier COMMIT ou depuis le SAVEPOINT (point de sauvegarde).
• SET TRANSACTION : utilisée pour définir les caractéristiques de la transaction.
Le SQL intégré (Embedded SQL) permet d’utiliser SQL dans un langage de troisième génération
(C, Java, Cobol, etc.). Elle permet de :
33
• Gérer les variables et les curseurs,
• Traiter les erreurs.
2.5 Conclusion
Dans ce chapitre, nous avons abordé quelques notions de la base de données, son importance, et le
système de gestion de base de données. Nous avons présenté, aussi, la méthode d’analyse et de
conception d’un système d’information avec MERISE ainsi que le langage SQL. Nous pouvons
déduire à partir de ce chapitre qu’afin d’en bénéficier des avantages de la base de données, il faut
respecter les étapes de conception.
34
CHAPITRE 3
RÉALISATION DE L’APPLICATION
3.1 Introduction
Dans les deux chapitres précédents, nous avons détaillé la méthodologie de conception de bases de
données ainsi que le développement d'applications web. Ces études théoriques, bien qu'essentielles,
restent incomplètes et insignifiantes sans une mise en pratique concrète. C'est pourquoi, dans ce
dernier chapitre, nous allons concrétiser ces connaissances en créant l'application de gestion
hospitalière. Cette réalisation impliquera la manipulation de tous les outils mentionnés dans les
chapitres précédents, donnant ainsi vie à ces concepts abstraits et les rendant tangibles et
opérationnels.
La gestion hospitalière désigne l'ensemble des activités et des processus organisés visant à
administrer et à superviser un hôpital ou un établissement de soins de santé. Cela inclut la
planification, l'organisation, la coordination des ressources humaines et matérielles, la gestion
financière, et l'amélioration constante des services médicaux afin d'assurer des soins efficaces et de
haute qualité aux patients. En d'autres termes, c'est l'ensemble des efforts déployés pour assurer le
bon fonctionnement d'un hôpital dans le but d'offrir des soins optimaux aux patients.
La gestion hospitalière comprend divers domaines essentiels. Il englobe la gestion des ressources
humaines, impliquant le recrutement et la formation du personnel. La gestion financière, quant à
elle, couvre la budgétisation, la comptabilité et la recherche de financements. La qualité des soins
est un pilier crucial, englobant l'assurance qualité et la sécurité des patients. La technologie de
l'information joue un rôle majeur, avec la mise en place de systèmes informatiques et la gestion des
dossiers médicaux électroniques. La gestion des opérations, incluant l'organisation des services et
la logistique, est également primordiale.
La mise en place d'une application web de gestion hospitalière est cruciale pour optimiser les
hôpitaux et améliorer les soins aux patients. Elle garantit un suivi précis des dossiers médicaux,
facilite la communication entre les équipes médicales et renforce la sécurité des données. De plus,
35
en permettant l'analyse des données médicales, elle aide les hôpitaux à prendre des décisions
éclairées, les rendant ainsi plus efficaces, plus précis et plus sûrs dans leur prestation de soins.
3.2.4 Objectifs
Pour assurer le succès d'un projet, il est impératif de définir clairement ses objectifs et sa vision
avant de commencer à coder. C'est pourquoi la phase de conception est essentielle. Une conception
bien structurée établit les bases du projet, garantissant ainsi sa réussite. Avant de se lancer dans
l'écriture du code, il est crucial de créer un plan solide pour le projet.
Dans le développement de ce projet, nos principaux objectifs étaient de pouvoir gérer l’ensemble
des tâches au sein d’un hôpital ou autre établissement de santé mais aussi de pouvoir gérer les
données qui y circulent. Ces données doivent être stockés dans une base de données et accessibles
par les utilisateurs à travers l’application.
Pour la modélisation de la base de données, nous avons utilisé JMerise. C’est un logiciel dédié à la
modélisation des modèles conceptuels de données (MCD) pour Merise. Il permet la généralisation
et la spécialisation des entités, la création des relations et des cardinalités ainsi que la généralisation
des modèles logiques de données (MLD) et des script SQL.
• Docteur
• Patient
36
• Paramètres vitaux
• Dossier médical
• Prescription
• Actif
• Équipement
• Catégorie de médicament
• Médicament
• Vendeur
• Laboratoire
• Chirurgie
• Fiche de paie
• Compte
• Transfert de patient
• Administrateur
37
patient id_patient AUTO_INCREMENT 20 IDENTIFIANT
vitaux
num_pvit VARCHAR 200 INDEX
38
dossier_ id_dm AUTO_INCREMENT 20 IDENTIFIANT
medical
num_dm VARCHAR 200 INDEX
39
actif id_actif AUTO_INCREMENT 20 IDENTIFIANT
medicament
nom_cat_med VARCHAR 200 INDEX
40
medicament id_medicament AUTO_INCREMENT 20 IDENTIFIANT
41
num_lab VARCHAR 200 INDEX
42
compte id_compte AUTO_INCREMENT 20 IDENTIFIANT
patient
hopital_transfert VARCHAR 200 INDEX
43
3.3.4 MCD
La figure suivante nous montre le MCD qu’on a créé avec le logiciel JMerise.
44
3.3.5 MLD
Après la vérification du MCD, le MLD peut être généré automatiquement par le logiciel JMerise
45
Figure 3.03 : MLD de la base de données
Après la création et la vérification du MCD, le script SQL est aussi généré automatiquement par ce
même logiciel. Voici un extrait du code SQL :
Pour administrer la base de données, il est essentiel d'importer le code SQL généré par JMerise dans
phpMyAdmin de WAMPSERVER. PhpMyAdmin servira d'interface nous permettant de créer les
différentes tables de la base de données tout en respectant la structure que nous avons préalablement
définie lors de la conception du modèle conceptuel de données.
Avant toute chose, il sera nécessaire de créer la base de données de notre application.
46
Figure 3.04 : Création d’une nouvelle base de données
47
3.3.8 Descriptions des tables
Pour comprendre comment notre application est organisée, examinons de près les différentes tables
de la base de données, ce qui nous aidera à avoir une meilleure compréhension de son
fonctionnement.
• Table « docteur »
La table « docteur » est utilisée pour enregistrer les informations de chaque docteur que nous
ajoutons dans le système. Cela inclut leur nom, prénom, adresse e-mail, numéro de téléphone et
photo.
• Table « patient »
La table « patient » dans notre base de données est destinée à stocker les détails essentiels de chaque
patient enregistré dans notre système. Chaque entrée dans cette table représente un patient individuel
et est caractérisée par plusieurs champs pertinents comme le nom, le prénom, la date de naissance,
l’âge, la maladie du patient, etc. Chaque enregistrement dans cette table permet une gestion efficace
des informations relatives aux patients, facilitant ainsi la recherche, la mise à jour et l'utilisation de
ces données cruciales dans notre application.
• Table « parametres_vitaux »
La table « paramètres vitaux » est conçue pour enregistrer les informations essentielles concernant
les paramètres vitaux de chaque patient. Chaque entrée dans cette table représente un ensemble
spécifique de paramètres vitaux mesurés pour un patient donné. Cela inclut la température, le rythme
cardiaque, le rythme respiratoire et la pression sanguin.
• Table « dossier_medical »
La table « dossier_medical » conserve les détails complets de chaque patient, formant ainsi un
dossier médical électronique.
• Table « prescription »
La table « prescription » enregistre les détails des prescriptions médicales délivrées aux patients par
les médecins.
• Table « actif »
48
La table « actif » de notre base de données enregistre les informations sur tous les actifs de notre
système, qui peuvent êtres des médicaments ou des équipements médicaux.
• Table « equipement »
La table « equipement » stocke les informations complètes sur les équipements médicaux et autres
dispositifs utilisés dans un établissement de santé. Chaque enregistrement dans cette table permet
une gestion efficace de l'inventaire des équipements, assurant leur utilisation appropriée, leur
maintenance régulière et leur disponibilité pour les soins aux patients.
• Table « categorie_médicament »
• Table « medicament »
La table « medicament » conserve les informations détaillées sur les médicaments utilisés dans notre
système de santé.
• Table « vendeur »
La table « vendeur » stocke les informations relatives aux fournisseurs et aux entreprises de vente
qui fournissent les médicaments et les équipements médicaux.
• Table « laboratoire »
La table « laboratoire » permet d'enregistrer des informations telles que les tests et les résultats
d'analyses de chaque patient, assurant ainsi une documentation complète des analyses effectués et
des résultats des examens.
• Table « chirurgie »
La table « chirurgie » permet de répertorier la liste des patients qui doivent subir une chirurgie, ainsi
que les résultats de ces interventions médicales. Elle enregistre les détails des opérations effectuées
et les résultats obtenus pour chaque cas.
• Table « fiche_de_paie »
La table « fiche_de_paie » dans notre système enregistre les détails financiers individuels de chaque
employé.
49
• Table « compte »
La table « compte » permet d’enregistrer les informations relatives aux comptes bancaires utilisés
pour le paiement des salaires de chaque employé.
• Table « transfert_patient »
La table « transfert_patient » dans notre système de gestion médicale consiste à déplacer un patient
d'un service ou d'une unité à un autre établissement de santé. Chaque transfert de patient est
enregistré dans la base de données pour assurer une coordination efficace des soins.
• Administrateur
La table « administrateur » conserve les informations sur les utilisateurs ayant des privilèges
administratifs spéciaux.
Dans cette partie, nous allons explorer l'interface de l'application, découvrir les fonctionnalités
qu'elle offre et examiner les diverses interactions possibles pour les utilisateurs.
Au démarrage de l'application, l'utilisateur est redirigé vers la page d'accueil. À ce stade, l'utilisateur
a deux choix : se connecter en tant que médecin ou en tant qu'administrateur, en fonction des
privilèges qui lui ont été attribués.
50
3.4.2 Page d’authentification
En cliquant sur l’une des deux options, l’utilisateur est ensuite redirigé vers la page
d’authentification.
51
3.4.3 Tableau de bord
[Link] Cas d’un administrateur
• Gestion des patients (ajout, modification, transfert et suppression des informations des
patients)
• Gestion des employés (ajout, modification, suppression et transfert des employés)
• Gestion de la pharmacie (ajout, modification, suppression des médicaments et des
ordonnances)
• Gestion de la comptabilité (ajout, modification et suppression des différents comptes
bancaires)
• Gestion des dossiers médicaux (ajout, modification et suppression des dossiers)
• Gestion du laboratoire (gestion des analyses et des résultats ; ajout, modification,
suppression des équipements de laboratoire)
• Gestion de la chirurgie (ajout et gestion des équipements de chirurgie, ajout et gestion des
patients à opérer, gestion des dossiers chirurgicaux)
• Gestion des salaires (ajout, gestion des paiements et gestion des fiches de paie)
• Gestion des vendeurs (ajout, modification et suppression des vendeurs)
52
[Link] Cas d’un médecin
Le médecin a un accès restreint au système. Il ne peut que gérer les activités qui lui sont attribués.
3.5 Conclusion
Dans ce chapitre, nous avons rassemblé des données utiles, élaboré des règles de gestion et conçu
la base de données en utilisant JMerise. Une fois le code SQL importé dans phpMyAdmin du
WampServer, la base de données "gestion_hospitalière" compte un total de 16 tables. Ces 16 tables
sont ensuite manipulées par des LMD de MySQL dans le code PHP pour permettre l'interaction de
l'interface avec les données. Les interfaces présentées comprennent la page d'accueil ainsi que les
premières pages vues par les utilisateurs après leur authentification, en fonction de leurs types
d'accès. Il est important de noter qu'il existe d'autres interfaces au-delà de celles qui ont été
présentées.
53
CONCLUSION GÉNÉRALE
La gestion efficace des données joue un rôle central dans le succès de toute entreprise, et cela est
particulièrement vrai dans les établissements de santé où la précision et la fiabilité des informations
sont essentielles. Ce projet se concentre sur l’optimisation de la gestion des données dans un
établissement de santé, où la complexité et le volume d’informations nécessitent une approche
rigoureuse et structurée.
Dans cette optique, les deux premiers chapitres de notre étude ont été consacrés à poser les bases
théoriques nécessaires. Le premier chapitre explore les principes fondamentaux du web, soulignant
son rôle en tant que plateforme incontournable pour la création et le déploiement d’applications
modernes. Le deuxième chapitre, quant à lui, s’intéresse aux concepts clés des bases de données,
indispensables pour gérer efficacement les informations dans un système complexe.
Dans le dernier chapitre, nous avons entrepris la conception de la base de données en utilisant l’outil
JMerise et en choisissant MySQL comme système de gestion de base de données (SGBD). Pour
rendre ces données facilement accessibles, nous avons développé une application web de gestion
hospitalière. PHP a été utilisé comme langage de développement, et l'interface de l'application a été
implémentée en utilisant HTML, CSS, Bootstrap et JavaScript. Chaque utilisateur bénéficie d'un
accès personnalisé à la base de données, en fonction des autorisations qui lui sont attribuées.
Cette application permet la mise à jour de diverses données, telles que les informations des patients,
des employés, les rapports médicaux, les dossiers médicaux, les équipements médicaux, les
médicaments et prescriptions, les paramètres vitaux, et bien d'autres, stockées dans notre base de
données. Cependant, les scénarios d'utilisation spécifiques n'ont pas été détaillés dans le dernier
chapitre de ce mémoire. Par conséquent, il est impératif que les utilisateurs soient formés avant de
commencer à utiliser l'application.
Cependant, pour garantir une utilisation optimale de cette application, une formation préalable des
utilisateurs est indispensable. Les scénarios d’utilisation détaillés n’ont pas été inclus dans le dernier
chapitre de ce mémoire, mais leur élaboration future permettra de maximiser l’efficacité de l’outil.
Il est crucial de souligner que ce travail constitue la première version de l'application. Ainsi, toutes
suggestions d'amélioration sont non seulement les bienvenues mais aussi essentielles pour orienter
l'évolution de cette application vers des versions futures plus performantes et conviviales en la
rendant plus adaptée aux besoins changeants des établissements de santé.
54
ANNEXE : PRÉSENTATION DES AUTRES INTERFACES DE L’APPLICATION
L’image ci-dessous illustre la page permettant d'ajouter les informations, comme par exemple celui
d'un patient.
55
Figure A1.03 : Page de gestion des employés
56
Figure A1.06 : Page de modification de profil d’un employé
57
BIBLIOGRAPHIE
[1] A. MIRADONTSOA, « Cours Web & XML », Cours LP1-TCO, Dép. TCO – [Link]., A.U. :
2020-2021.
[3] M. Nebra, « Concevez votre site web avec PHP et MySQL », 2017.
[13] A. MIRADONTSOA, « Cours HTML », Cours LP1-TCO, Dép. TCO – [Link]., A.U. :
2020-2021.
58
[14] Faculté des sciences., « Les techniques de l'information et de la communication (TIC) »,
Cours 1ère année MI, Université Ferhat Abbas de Sétif 1–UFAS1 / Département de
Mathématiques., A.U. : 2014-2015.
[15] A. MIRADONTSOA, « Cours CSS », Cours LP2-TCO, Dép. TCO – [Link]., A.U. : 2021-
2022.
[19] X. Pitel, « HTML – CSS - JavaScript – PHP - MySQL petites explications des technologies
web», [Link]
[Link], site consulté le 03 Août. 2023.
[20] A. MIRADONTSOA, « Cours JavaScript », Cours LP3-TCO, Dép. TCO – [Link]., A.U. :
2022-2023.
59
RENSEIGNEMENTS
Nom : ANDRIATAHINA
E-mail : michelangelo5cmic@[Link]
Titre de la mémoire :
Nombre de pages : 61
Nombre de figures : 29
Nombre de tableaux : 1
Directeur de mémoire :
E-mail : zanisam43@[Link]
60
RÉSUMÉ
Ce projet a pour objectif de créer une base de données et de développer une application destinée aux
établissements de santé. Pour atteindre cet objectif, nous commencerons par une étude conceptuelle
de l'application, en débutant par la conception de la base de données, puis en créant l'interface, et
enfin en mettant en place l'interaction entre les deux. Nous avons choisi MySQL comme système
de gestion de base de données, associé au langage de programmation PHP. L'interface de
l'application a été créée avec Bootstrap, un framework simplifiant le processus de conception. Dans
l’ensemble, ce document offre une analyse approfondie de l'utilisation de MySQL. Il explore
également les meilleures pratiques en matière de conception de bases de données, de requêtes SQL
et de sécurisation des données, constituant ainsi une référence pour le développement web.
ABSTRACT
This project aims to create a database and develop an application for healthcare institutions. To
achieve this goal, we will start with a conceptual study of the application, beginning with the
database design, then creating the interface, and finally implementing the interaction between the
two. We have chosen MySQL as the database management system, paired with the PHP
programming language. The application interface has been created using Bootstrap, a framework
that simplifies the design process. Overall, this document provides a comprehensive analysis of
MySQL usage. It also explores best practices in database design, SQL queries, and data security,
making it a reference for web development.