Vous êtes sur la page 1sur 55

Apprendre à créer votre base de

données et l’intégrer dans votre site


Base de web
Réaliser votre premier site
données web dynamique basé sur
une base de données
Apprenez comment créer votre propre base de données.
Maitriser le modèle conceptuel et logique de données, ainsi
SQL,HTML,PHP,DREAMWAVER
que le langage SQL. Un projet de réalisation d’un site web
dynamique est proposé.

Dr. Meziane Mohammed El-amine.


Maître de conférences en informatique, Ecole supérieure d’économie d’Oran, Algérie.
Sommaire
1. Introduction ................................................................................................... 3
2. Modèle conceptuel de données ..................................................................... 3
• Entité .......................................................................................................... 3
• Association.................................................................................................. 3
• Occurrence ................................................................................................. 3
• Cardinalités ................................................................................................. 4
• Type d’association ...................................................................................... 4
3. Le modèle relationnel .................................................................................... 5
• Définition : .................................................................................................. 5
• Structures de données de base : ................................................................. 5
4. Règles de passage du modèle entités-associations au modèle relationnel
(MLD : Modèle Logique de Données) (Yacoub 2019) ............................................ 6
5. Le langage SQL (création et manipulation de base de données) (Robin 2019)
10
• Définition du langage SQL ......................................................................... 10
• Manipulation de données ......................................................................... 10
6. Exercices sur le modèle entité association et le modèle relationnel ............ 13
Exercice 1 : compagnie d’hôtels ...................................................................... 13
Exercice 2 : gestion des emplois du temps ...................................................... 15
Exercice 3 : gestion d’une bibliothèque........................................................... 20
Exercice 4 : gestion des examens .................................................................... 21
Exercice 4 : gestion d’une bibliothèque........................................................... 22
7. Conception et réalisation d’un site web dynamique .................................... 24
Pages statiques : ............................................................................................. 24
Pages dynamiques :......................................................................................... 24
Langages utilisés : ........................................................................................... 25
1
Création des pages dynamiques : .................................................................... 25
HTML : Principe .................................................................................................. 25
Structure d’une page HTML ............................................................................ 26
Structure : paragraphes et titres ..................................................................... 26
Images............................................................................................................. 27
PHP .................................................................................................................... 27
Accès `a une base de données MySQL ............................................................... 27
Connexion au SGBD......................................................................................... 28
Choix de la base : ............................................................................................ 28
Fermeture (après les requêtes) : ..................................................................... 28
Envoi de requête : ........................................................................................... 28
Un guide pratique pour la création d’un site web : ............................................ 29
Création de la base de données ...................................................................... 29
Création du site web ....................................................................................... 30
Conclusion :........................................................................................................ 53
Bibliographie ......................................................................................................... 54

2
1. Introduction
Ce papier introduit les concepts de base relatifs à la création des bases de données.
La conception (niveau conceptuel) de la base de données est la première étape qui
se traduit par le modèle conceptuel de données MCD. Dans ce niveau, on définit les
données ainsi que les liens entre elles. Le niveau logique est la phase suivante dans
laquelle on décrit le système. Ce niveau se traduit par la préparation d’un modèle
logique de données (MLD).

En plus des bases de données, le langage SQL est illustré à travers des exemples
simples. Ce langage qui est utilisé pour créer et manipuler les bases de données.

Afin de faciliter l’assimilation des concepts présentés dans ce papier, un projet de


développement d’un site web dynamique est proposé. L’étudiant sera capable de
créer sa propre base de données, de concevoir son site web grâce au langage html
et de connecter son site web avec sa base de données (Beaulieu 2009).

2. Modèle conceptuel de données


Le modèle conceptuel des données (MCD) a pour but d'écrire de façon formelle les
données qui seront utilisées par le système d'information. Il s'agit donc d'une
représentation des données, facilement compréhensible, permettant de décrire le
système d'information à l'aide d'entités. L’un des modèles conceptuels les plus
utilisés est le modèle Entité-association (E/A) (Lubis and Zamzami 2020).

• Entité : c’est un objet pourvu d’une existence propre. Exemple : Client,


fournisseur sont des entités.
• Association : Relation entre entités. Exemple : Conduit est une association
entre l’entité personne et l’entité voiture.
• Occurrence : la valeur d’une entité ou d’une association. Exemple : TOYOTA,
YARIS, GRISE est une occurrence de l’entité voiture.

3
Hôtel Client

Num_hotel 0, N 0, N Id_client
Réserve
Nom_hotel Date,nb_nuits
r Nom
Adresse Prénom
Capacité Email

Fig. 1 Exemple d'un modèle entité association

• Cardinalités
Selon l’exemple de la Figure 1, (0,N) coté client représente le nombre des clients
qui peuvent réservé une chambre à un seul hôtel. 0 est le nombre minimal des
clients réservant une chambre et N est le nombre maximal des clients réservant une
chambre au même hôtel.

(0,N) coté client représente le nombre minimal est maximal des hôtels dans lesquels
un client peut y réserver. 0 veut dire qu’un client n’a jamais établit une réservation
à cet hôtel et le N veut dire que ce client a établi plusieurs réservations au même
hôtel.

• Type d’association
L’association peut être soit de type maillé ou hiérarchique (père fils).

Si la cardinalité maximale de chaque côté est la même, le lient est maillé. Par contre,
si la cardinalité maximale de l’un des côtés est N est de l’autre côté est 0 ou 1, le
lient est dit hiérarchique ou père fils.

Dans l’exemple de Error! Reference source not found., le lient est maillé parce que
la cardinalité maximale des deux côtés est similaire.

4
Client Commande
Num_client 1, 1 Num_commande
1, N
Effectue
…. Date,Qte …..

Fig. 2 Exemple d'une association hiérarchique

Dans l’exemple de Error! Reference source not found. la cardinalité maximale coté
client est N et coté commande est 1, donc le lient est hiérarchique ou père fils. Le
père est le client (N) et le fils est la commande (1) (Zemmari 2015).

3. Le modèle relationnel

• Définition :
La majorité des SGBD actuels sont basés sur ce modèle. Il dispose d’un Langage de
Description de Données (LDD) et d’un Langage de Manipulation de Données (LMD).

• Structures de données de base :

Domaine :

Le domaine d’un attribut est l’ensemble, fini ou infini, de ses valeurs possibles. Par
exemple : l’attribut nom a pour domaine l’ensemble des combinaisons de lettres
(chaîne de caractère).
Attribut :

Un attribut est un nom décrivant une information stockée dans une base (nom
donné à une colonne d'une relation qui prend ses valeurs dans un domaine).
Exemples d’attribut : l’âge d’une personne, le nom d’une personne, le numéro de
sécurité sociale.
Relation :

Sous ensemble du produit cartésien de plusieurs domaines.


R ⊂ D1 × D2 × ... × Dn ;
D1, D2, ..., Dn sont les domaines de R ;

5
n est le degré de R
Exemple : Les domaines : NOM_ETU = { Absar, Madani },PREN_ETU = { Amina,
Mohamed, Mustapha }, DATE_NAISS = {Date entre 1/1/1990 et 31/12/2010}.
La relation ETUDIANT : ETUDIANT ⊂ NOM_ETU × PREN_ETU × DATE_NAISS
ETUDIANT = { (Absar, Amina, 1/1/1992), (Madani, Mohamed, 2/2/1994) }
Schéma de relation :

Un schéma de relation précise le nom de la relation ainsi que la liste des attributs.
Exemple : ETUDIANT (NOM_ETU, PREN_ETU, DATE_NAISS).
Degré :

Le degré d’une relation est son nombre d’attributs.


n-uplets ou tuples : est une ligne du tableau qui représente la relation.
Schéma relationnel : Un schéma relationnel est constitué par l’ensemble des
schémas de relation.
Règles d’intégrité

Tous les n-uplets composant les relations doivent respecter les contraintes
structurelles suivantes :
A. Intégrité du domaine : Les valeurs d'une colonne de relation doivent
appartenir au domaine correspondant (contrôle des valeurs des attributs).
B. Intégrité de la clé : Les valeurs de clés primaires doivent être uniques et non
NULL (Unicité de clé  Unicité des n-uplets).
C. Intégrité référentielle : Les valeurs des clés étrangères sont des valeurs de la
clé primaire auxquelles elles font référence (Relations dépendantes).
4. Règles de passage du modèle entités-associations au modèle relationnel
(MLD : Modèle Logique de Données) (Yacoub 2019)
Pour traduire un schéma du modèle entités-associations vers le modèle relationnel,
on applique les règles suivantes :
1. Chaque type-entité devient une relation. Les attributs de l’entité deviennent
des attributs de la relation.
2. L’identifiant de l’entité devient la clé primaire de la relation.

6
3. Chaque association dont les deux extrémités de la cardinalité maximale est 1
est prise en compte en incluant la clé primaire d’une des relations comme clé
étrangère dans l’autre relation.
4. Chaque association, dont une extrémité, sa cardinalité maximale est N et l’autre
extrémité de sa cardinalité maximale est 1 est prise en compte en incluant la clé
primaire de la relation dont la cardinalité maximale est N comme clé étrangère
dans l’autre relation.
5. Chaque association dont sa cardinalité maximale est N est prise en compte en
créant une nouvelle relation dont la clé primaire et la concaténation des clés
primaires des relations participantes. Les attributs de l’association sont insérés
dans cette nouvelle relation.

Exemple :

Fig. 3 Modèle entité association de gestion des patients

• Patient (Num-Patient, Nom-Patient, Prénom-Patient, Num-Mutuelle)


• Mutuelle (Num-Mutuelle, Nom-Mutuelle)
• Médecin (Num-Médecin, Nom-Médecin, Prénom-Médecin)
• Affection (Num-Affection, Nom-Affection)

7
• Hospitaliser (Num-Patient, Num-Affection, Num-Médecin, Date-Entrée,
Chambre, Durée-Hospitalisation)

Lien maillé
1. Transformer chaque entité en une table
2. Transformer l’association en une table
3. Migration des clés primaires des entités participant à l’association vers la
table de l’association
Table 1 règle 1 de passage du MCD vers MLD pour un lien maillé

Lien hiérarchique
1. Transformer chaque entité en une table
2. Supprimer l’association
3. Migration des clés primaires de l’entité père1 vers la table de l’entité fils2
Table 2 règle 2 de passage du MCD vers MLD pour un lien hiérarchique

Fig. 4 Exemple d'un lien maillé

1
L’entité père est celle dont la cardinalité maximale égale N
2
L’entité fils est celle dont la cardinalité maximale égale 1
8
Fig. 5 modèle relationnel obtenu via l'exemple de fig 4

Dans l’exemple suivant, le modèle relationnel est généré à partir d’une association
hiérarchique :

Fig. 6 Exemple d'un modèle entité association de type hiérarchique ou père-fils

En appliquant la règle 2 (Table 2) sur l’exemple de Error! Reference source not


found., le modèle relationnel est le suivant :

9
Fig. 7 modèle relationnel obtenu via l'exemple de fig 6

5. Le langage SQL (création et manipulation de base de données) (Robin


2019)

• Définition du langage SQL


SQL signifie Structured Query Language est le langage des bases de données
relationnelles répandant à la fois aux problématiques de création des objets de base
de données (modèle), de manipulation des données, de gestion de la sécurité
(droits d’accès). Il est utilisé par les principaux SGBDR du marché : Oracle, SQL
Server, MySQL, Access, DB2, etc.

• Manipulation de données

Ajout de données
Pour ajouter un tuple dans une table, on procède comme suit :

INSERT INTO nom_table


VALUES (valeur_attribut1, valeur_attribut2, etc.) ;

Exemple : Etant donné la table Etudiant (Num, nom, prénom, ville, Année). Insérer
les informations d’un nouvel étudiant (1234, Absar, Omar, Oran, 1ère année).

INSERT INTO ETUDIANT


VALUES (1234, ‘Absar’, ‘Omar’, ‘Oran’,'1ère année') ;

10
Modification de données
Permet de modifier la valeur d’un attribut relatif à un ou plusieurs tuples d’une
table.

UPDATE nom_table
SET attribut1 = valeur1, attribut2 = valeur2, …
WHERE condition ;

Exemple : on suppose que l’étudiant Absar Omar habite maintenant à Alger.

UPDATE Etudiant
SET Ville= ‘Alger’
WHERE Num=1234 ;

Suppression de données
Il s’agit de supprimer un ou plusieurs tuples d’une table.

DELETE FROM nom_table


WHERE condition ;

Exemple : Supprimer l’étudiant de Num 1234 de la table Etudiant :

DELETE FROM Etudiant WHERE Num=1234 ;

Interrogation de données
Il s’agit de rechercher un ou plusieurs tuples de la base de données en utilisant
l’ordre SELECT qui possède six clauses différentes, dont seules les deux premières
sont obligatoires.

SELECT…
FROM…
[WHERE…
ORDER BY…] ;

11
Projection
Permet d'afficher tous les attributs d’une table.

SELECT *
FROM nom_table ;
Quelques attributs :
SELECT attribut1, attribut2, …
FROM nom_table ;

Restriction
Les restrictions se traduisent en SQL à l’aide de la clause « WHERE » comme suit :

SELECT attribut1, attribut2, …


FROM nom_table
WHERE prédicat ;

Un prédicat d’égalité ou d’inégalité (=, <>, <, >, <=, >=).


Tri
Les lignes constituant le résultat d’un SELECT sont obtenues dans un ordre
indéterminé. La clause ORDER BY précise l’ordre dans lequel la liste des lignes
sélectionnées sera donnée.

Exemple : Liste des étudiants ordonnés par ordre croissant des Nom et décroissant
des prénoms.

SELECT *
FROM Etudiant
ORDER BY Nom, prénom Desc;

Jointure
Quand on précise plusieurs tables dans la clause FROM, on obtient le produit
cartésien des tables. C’est la clause WHERE qui permet d’obtenir ce résultat.

12
Jointure d’une table à elle même

Permet de rassembler des informations provenant d’une ligne d’une table avec
des informations provenant d’une autre ligne de la même table. Dans ce cas, il
faut renommer au moins l’une des deux tables en lui donnant un synonyme, afin
de pouvoir préfixer sans ambiguïté chaque nom de colonne.

Les fonctions de calculs :

• COUNT : nombre de valeurs.


• SUM : somme des valeurs.
• AVG : moyenne des valeurs.
• MAX : plus grande valeur.
• MIN : plus petite valeur.

6. Exercices sur le modèle entité association et le modèle relationnel

Exercice 1 : compagnie d’hôtels


Une compagnie d’Hôtels souhaite assurer la gestion des réservations des chambres.
Les besoins de cette compagnie sont exprimés comme suit : un client est caractérisé
par un numéro unique, un nom, un prénom et numéro de la carte d’identité. Une
réservation est identifiée par un numéro, une date. Un client peut effectuer un ou
plusieurs réservations, par contre, une réservation est effectuée par un et un seul
client. Un numéro unique est attribué à chaque chambre. Cette dernière est
caractérisée par son type, l’étage et son prix. Chaque hôtel à son propre nom et une
adresse. Une chambre fait partie d’un seul hôtel. Chaque hôtel contient un ou
plusieurs chambres.

Questions

▪ Proposer un modèle entité association pour cette compagnie hôtelière.


▪ Transformer le modèle entité association proposé, en un modèle relationnel.
▪ En utilisant le langage SQL :
▪ Trouvez les clients ayant réservé plusieurs chambres dans le même hôtel le 7
Juillet 2019 ?
▪ Afficher les chambres disponibles le 06 juillet 2019 à l’hôtel RODDINA ?

13
Réponses

1. Modèle entité / association

Fig. 8 Modèle entité association de gestion d’hôtel (exercice1)

2. Modèle relationnel

La figure précédente représente le modèle entité association relatif aux besoins


de la compagnie hôtelière. Dans la partie suivante, le modèle relationnel
compatible avec le modèle entité association est présenté :

Client : (N_client, nom, prenom, numero_identite)

Hôtel : (nom_hotel, adresse)

Chambre : (N_chambre, type, etage, prix, nom_hôtel)

Reservation : (N_reservation, date, N_client, N_chambre)

3. Requêtes SQL
3.1 Les clients ayant réservés plusieurs chambres dans le même hôtel le 07
juillet 2019 :

14
SELECT DISTINCT numclient
FROM Reservation
GROUP BY numclient, nomhotel
HAVING COUNT(*) > 1

3.2 Afficher les chambres disponibles le 06 juillet 2019 à l’hôtel RODDINA ?

SELECT numero
FROM Chambre
WHERE nomhotel=’RODDINA’
AND numero NOT IN
(SELECT numchambre
FROM Reservation
WHERE nomhotel=’RODINNA’
AND date = ’06/07/2019’)

Exercice 2 : gestion des emplois du temps


Soit le système d’information suivant :

Un institut de formation privé a décidé de digitaliser la gestion des emplois du


temps. Chaque étudiant est caractérisé par son numéro d’étudiant, son nom, son
prénom et son âge. Chaque cours est identifié de façon unique par un sigle (SI033,
MD021, etc.) et possède un intitulé (micro-économie, algèbre, …) ainsi qu’un
enseignant responsable. On connaît également le nombre de séances de chaque
cours. Les enseignants sont caractérisés par un code alphanumérique, leur nom,
leur prénom et leur grade. Enfin, chaque séance est identifiée par le cours ainsi que
le numéro de la séance (séance 3 du cours SI033, séance 1 du cours de MD021, …),
la date, l’heure de début et l’heure de fin auxquelles la séance a lieu ainsi que la

15
salle et l’enseignant qui dispense la séance. Les étudiants s’inscrivent aux cours
auxquels ils souhaitent assister.

Le schéma relationnel de l’institut se présente comme suit :

étudiant (numéro, nom, prénom, âge)


enseignant (codeE, nom, prénom, grade)
cours (sigle, intitulé, codeE, nombreSeances )
séance ( sigle , numéroS, date , salle , heureDebut , heureFin , codeE )
inscription (numéro, sigle)

Questions : Donner les requêtes SQL permettant de répondre aux questions


suivantes :

1. Créez les tables « Etudiant » et « Séance ».

2. Ajoutez l'enseignant ('INFO23', 'Houcine' , 'Mohammed').

3. Inscrivez l’étudiant (’l0372’,’Cherifi’,’Ayman’,20) au cours


(’ALG015’,’Algèbre’,’INFO23’).

4. Affichez la liste des étudiants.

5. Cherchez le nom et le prénom de tous les étudiants de moins de 20 ans.

6. Cherchez le nom et le prénom de l’enseignant responsable du cours de


Statistiques.

7. Cherchez le nom et le prénom de tous les étudiants inscrits au cours de


Probabilités ou de statistique.

8. Quels sont les étudiants les plus jeunes de la promotion ?

9. Déterminez le nombre d’enseignants intervenant dans le cours de probabilité.

10. Où et quand a lieu le premier cours de Comptabilité ?

11. Affichez un « emploi du temps » du cours de statistique.


16
12. Le grade de l'enseignant "Senouci Zaki" est devenu "Maître-de-conférence B".

13. Ajoutez un cours magistral de comptabilité le 14 décembre avec Senouci Zaki


en salle S250 de 14h à 18h.

14. L’étudiant (’l0372’,’Cherifi’,’Ayman’) n'est plus inscrit au cours ’ALG015’.

Réponses :

1. Écrire les requêtes de création des tables « Etudiant » et « Séance ».

CREATE TABLE Etudiant (


numero VARCHAR(20) PRIMARY KEY,
nom VARCHAR(50) NOT NULL,
prenom VARCHAR(50) NOT NULL,
age INT NOT NULL
);
CREATE TABLE Séance (
cours VARCHAR(20) NOT NULL,
numeroS VARCHAR(50) NOT NULL,
date DATE NOT NULL,
salle VARCHAR(10) NOT NULL,
heureDebut TIME NOT NULL,
heureFin TIME NOT NULL CHECK(heureFin > heureDebut),
codeE VARCHAR(20) NOT NULL,
FOREIGN KEY (sigle) REFERENCES Cours(sigle),
FOREIGN KEY (codeE) REFERENCES Enseignant(codeE),
PRIMARY KEY (sigle,numero) );
17
2. Ajouter l'enseignant ('INFO23', 'Houcine' , 'Mohammed').

INSERT INTO enseignant(codeE,nom,prénom) VALUES


('INFO23', 'Houcine' , 'Mohammed');

3. Inscrivez l’étudiant (’l0372’,’Cherifi’,’Ayman’,20) au cours


(’ALG015’,’algèbre’,’INFO23’).

INSERT INTO Inscription VALUES ("l0372","ALG015");

4. Afficher la liste des étudiants : SELECT * FROM Etudiant;

5. Cherchez le nom et le prénom de tous les étudiants de moins de 20 ans.

SELECT nom, prenom FROM Etudiant WHERE age < 20;

6. Cherchez le nom et le prénom de l’enseignant responsable du cours de


Statistiques.

SELECT nom, prenom


FROM Enseignant, Cours
WHERE Enseignant.codeE = Cours.codeE AND
intitule="Statistiques";

7. Cherchez le nom et le prénom de tous les étudiants inscrits au cours de


Probabilités ou de statistique.

SELECT e.nom, e.prenom


FROM etudiant e, inscription i, cours c
WHERE e.numero = i.numero AND i.sigle = c.sigle
AND (c.intitule="Probabilites" OR
c.intitule="statistique");

18
8. Quels sont les étudiants les plus jeunes de la promotion ?

SELECT *
FROM etudiant
WHERE age=(select min(age) from etudiant);

9. Déterminez le nombre d’enseignants intervenant dans le cours de Probabilité.

SELECT count(DISTINCT enseignant)


FROM Seance, Cours
WHERE Séance.sigle = Cours.sigle AND intitule=
"Probabilité";

10. Où et quand a lieu le premier cours de Comptabilité ?

SELECT date, salle, heureDebut, heureFin


FROM Seance, Cours
WHERE Seance.sigle = Cours.sigle AND numero = 1 AND
intitule=" Comptabilité ";

11. Affichez un « emploi du temps » du cours de statistique.

SELECT numero, date, salle, heureDebut, heureFin,


e.nom, e.prenom
FROM Seance, Cours, Enseignant e
WHERE Séance.sigle = Cours.sigle AND enseignant.codeE =
Séance.codeE
AND intitule ="Statistique" ORDER BY date,heureDebut;

19
12. Le grade de l'enseignant "Senouci Zaki" est devenu "Maître-de-conférence B".

UPDATE enseignant SET grade="Maître-de-conférence B"


WHERE nom="Senouci" AND prénom="Zaki";

13. Ajoutez un cours magistral de Comptabilité le 14 décembre avec Senouci Zaki


en salle S250 de 14h à 18h.

INSERT INTO ‘Seance‘ VALUES ( (SELECT sigle FROM Cours


WHERE intitule=’Comptabilité’), (SELECT nombreSeances+1
FROM Cours WHERE intitule="Logique"), ’2008-12-14’,
’S250’, 14:00’, ’18:00’, (SELECT codeE FROM
‘Enseignant‘ WHERE nom="Senouci" AND prenom = "Zaki")
);
UPDATE cours SET nombreSeances = nombreSeances+1 WHERE
intitule= ’Comptabilité’;

14. L’étudiant (’l0372’,’Cherifi’,’Ayman’) n'est plus inscrit au cours ’ALG015’.

DELETE FROM inscription WHRE numéro=’l0372’ AND


sigle=’ALG015’ ;

Exercice 3 : gestion d’une bibliothèque


Le système informatique d’une bibliothèque enregistre le numéro national, le nom,
le prénom et l’adresse (rue, numéro, code postal, ville) de chacun de ses clients. Le
système enregistre pour chaque livre disponible son numéro unique ISBN, son nom,
le nom de ses auteurs et sa date d’achat. On suppose que la bibliothèque possède
au plus un livre par numéro ISBN. Le système enregistre également tous les
emprunts des clients. On identifie ces emprunts avec un numéro unique, on retient
la date d’emprunt et la date de retour lorsque le livre rentre.

1. Proposer un modèle entité/association pour ce système.

2. Donner le modèle relationnel correspondant.

20
Réponses :

Modèle relationnel

Client (SSN,Nom,Prénom,Adresse)

Emprunt (Numéro, DateEmprunt, DateRetour, SSN, ISBN)

Livre (ISBN, Titre, auteurs,DateAchat)

Exercice 4 : gestion des examens


Produisez un modèle entité-association pour un petit système de gestion des
examens finaux à l’université. Ce système doit permettre de traiter les informations
suivantes. - département : son nom, le nom de son directeur et ses cours ; - cours :
son titre, son sigle et ses examens ; - examen : le cours, la session (ex : ”H04”), la
date (YYYY-MM-DD), la période (”AM”, ”PM” ou ”soir”) et ses locaux (ex : ”D4-
3021”) ; - local : numéro et nombre de places disponibles ; - programme : titre et
ses cours. On a les contraintes suivantes : - un cours peut avoir plusieurs examens ;
- il y a un seul examen final par session pour un cours ; - un cours appartient à un
seul département ; - un cours peut apparaître dans plusieurs programmes.

21
Réponses :

Figure 1 Modèle entité association pour la gestion des examens.

Exercice 4 : gestion d’une bibliothèque 2


On se propose de représenter le système d’information d’une bibliothèque : La
bibliothèque enregistre chaque lecteur à qui elle donne un numéro de lecteur. Elle
lui prend son nom et son adresse. Le lecteur peut éventuellement être membre
d’une société adhérente. On enregistre alors l’identification de cette société.

22
Un lecteur peut emprunter plusieurs livres chaque jour. A chaque prêt, on associe
une « date de retour au plus tard ». Un lecteur appartient à un « type de lecteur ».
Ce type lui permet d’avoir ou non accès à certaines catégories de livres. La durée
du prêt dépend de la catégorie du livre et du type de lecteur. Elle est la même pour
tous les livres d’une catégorie donnée empruntés par un quelconque lecteur d’un
type donné. Un livre est caractérisé par son numéro d’inventaire. Il est nécessaire
de connaître sa catégorie, le nom de son auteur, son éditeur, ainsi que le nombre
de ses différents exemplaires disponibles. L’édition, lorsqu’elle existe, est
également à connaître. La catégorie d’un livre se repère par un numéro et possède
un libellé. Il en est de même pour le type de lecteur. Une société adhérente possède
un nom et une adresse ; elle s’engage à envoyer un minimum de 500 lecteurs.

Réponse :

Figure 2 Modèle entité association pour la gestion d'une bibliothèque (version2).

23
7. Conception et réalisation d’un site web dynamique

Fig. 9 Principe de fonctionnement des pages web

Pages statiques :

Pour changer le contenu, il faut ´éditer le fichier. Idée : générer le contenu de la


page au moment où elle est demandée, en fonction : du contenu d’une base de
données ; de paramètres fournis avec la demande (ex : formulaires).
Pages dynamiques :
L’utilisateur demande l’accès `à une page Web depuis son navigateur. Le
navigateur transmet envoie une demande au serveur web comprenant : le nom de
la page, qui correspond en fait `a un programme ; ´éventuellement un ensemble
de paramètres. Le serveur web va chercher sur le disque le code source d’un
programme. Le serveur web exécute ce programme qui peut : utiliser les
paramètres transmis avec la demande du navigateur ; aller chercher des données
dans une base de données ou sur le disque. Durant l’exécution, le programme
génère un contenu HTML. Le contenu HTML est envoyé au navigateur. Le
navigateur affiche le résultat.

24
Langages utilisés :
• Pour le contenu des pages : Données `à afficher Mise en forme ⇒ HTML, CSS,
JavaScript, . . .)
• Pour générer le contenu des pages : Aller chercher les données Fabriquer un
document (en général un document HTML) ⇒ PHP (ou bien Perl, Python,
Java, . . .)
• Pour interroger la base : Requetés `à effectuer sur la base. ⇒ SQL

Fig. 10 Interrogation d'une base de données

Création des pages dynamiques :


Créer un programme PHP correspondant `à cette page. Plus précisément, ´écrire le
code source de ce programme. Le but de ce programme est de générer le contenu
d’une page Web, i.e. du HTML. Cette génération se fait via des print, un peu comme
pour ´écrire dans un fichier. Ce programme peut ´éventuellement utiliser des
requêtes SQL. Ces requêtes sont passées sous forme de chaines de caractères `a
des fonctions spéciales qui vont les transmettre au SGBD et récupérer les résultats.

HTML : Principe
Une page HTML est un fichier texte bien formaté en utilisant des balises HTML.
L’extension de ce type de fichiers est .html. En revanche une page web peut porter
n’importe quelle extension. Les deux balises <HTML> et </HTML> marquent le

25
début et la fin d’un document HTML. Le titre d’une page web est inséré dans l’en-
tête délimités par les balises <HEAD> et </HEAD>. Le corps d’une page web est
délimité par les balises <BODY> et </BODY>.
Structure d’une page HTML
<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Titre de la page</title>

</head>

<body>

Partie affichée dans le navigateur

</body>

</html>
Structure : paragraphes et titres
</p>texte</p>

Texte forme un paragraphe (saut de ligne avant et après).

</h1>texte</h1>

Texte est un titre important (paragraphe avec un affichage plus gros, en gras).

</h2>texte</h2>

Texte est un titre moins important (paragraphe avec un affichage un peu moins
gros).
26
Images
<img src="adresse web image">
Adresse web ou chercher l’image.
<img src="/images/product-4.jpg" />
="/images/product-4.jpg" est le chemin de l’image nommée product-4.jpg
PHP
Un fichier PHP est le code source d’un programme. Ce programme a pour but de
générer une page HTML. PHP est un langage impératif proche du C.

Le code php est délimité par < ? et ?>

Déclaration de variable $i, $utilisateur, $id, . . .


Affectation $i = valeur ;
Afficher la valeur d’une "<P>Mon nom est $nom" </P>;
variable nom
Opérations arithmétiques + (addition), - (soustraction), * (multiplie), / (divise), %
(modulo), ++ (incrément), -- (décrément).
Comparaison == (´égalité), < (inferieur strict), <= (inferieur large), >, >=,
!= (différence)
Logique and, && (et), or, || (ou), xor (ou exclusif), ! (non)
Création d’un tableau vide $mon tableau = array() ;
La première case d’un tableau porte le numéro 0.
Structures de contrôle if (...) { ...} else { ...}
for(... ;... ;...) { ...}
while (...) { ...}
Inclusion d’un fichier php include(”nom fichier.php”) ;
Définition d’une fonction function nom fonction($param1, $param2, ...) { ... }
Pour renvoyer un résultat dans une fonction : return
valeur ;
Fig. 11 notions de base sur le langage PHP

Accès `a une base de données MySQL


Connexion au SGBD.

1. Sélection d’une base.


2. Envoi d’une requête.
27
3. Récupération et utilisation du résultat.
4. Fermeture de la connexion

Connexion au SGBD
Connexion au SGBD : $user = ’toto’ ;
$passwd = ’mdptoto’ ;
$machine = ’localhost’ ;
Machine où tourne PHP
$connect = mysql connect($machine, $user,$passwd)
or die(’Echec de connexion au SGBD’) ;

Choix de la base :
$bd = ’entreprise’ ;
mysql select db($bd, $connect) or die(’Echec lors
de la sélection de la base’) ;

Fermeture (après les requêtes) :


mysql close($connect) ;

Envoi de requête :
$requete = ’une requete SQL’ ;
$resultat = mysql query($requete,$connect) or
die(’Erreur durant l’exécution de la requête’) ;

Exemple :
$salaire max = 20000 ;
$requete = "SELECT nom FROM employe " ." WHERE
salaire <= $salaire max" ;
$resultat = mysql query($requete,$connect) or
die(’Erreur durant l’exécution de la requête’) ;

28
Un guide pratique pour la création d’un site web :

Fig. 12 Le modèle relationnel du site web

Création de la base de données


Accéder à la page de phpMyAdmin via l'adresse suivante :
http://127.0.0.1/home/mysql/ ensuite créer une nouvelle base de données
nommée myDB.

Créer les tables suivantes :

29
Fig. 13 Les tables issues du model relational d site web

Création du site web


Passant maintenant à la création de notre site web dynamique pour la gestion des étudiants:

Nous allons commencer par créer un nouveau site en cliquant sur site et nouveau site

Fig. 14 commande pour créer un nouveau site sous dreamwaver

Ensuite remplissez les deux champs :

30
Fig. 15 Fenêtre pour le nom du site et sa localisation

Ensuite cliquer sur serveurs pour créer un nouveau serveur :

Fig. 16 Création d'un nouveau serveur

Maintenant nous allons créer le dossier local dans lequel notre site sera sauvegarder
:

Fig. 17 Création du dossier local du site web

31
Créer une nouvelle page PHP:

Fig. 18 Création d'un nouveau fichier PHP

Conception du site :
Dessiner le tableau de mise en forme :

Fig. 19 Le layout du site web

Voilà le code html pour créer notre table :

32
colspan="2" est utilisée pour faire etendre une cellule jusqu'a la fin de la table.

Créer une novelle page nommée baniere.php dont son code est le suivant :

Fig. 20 le fichier php de la banière

Créer une nouvelle page php nommée menu.php

33
Fig. 21 Le fichier menu.php

index.php?page=page_acceuil veut dit créer une variable nommée page initialisée


par page_acceuil et la faire passer à la page index.php
Assurant maintenant la liaison entre les deux page index.php et menu.php:
Aller à la page index.php et insérer le code php dans la deuxième ligne (2em <tr>)
et plus précisément dans la deuxième case (2em <td>):

34
Fig. 22 le code php qui permet l'accès aux éléments du menu

Créer une nouvelle page nommée page_etudiant.php


<div style="width:700px;height:450px">
<div style="margin-top:10px">page
etudiant</div>
<div style="margin-top:20px">
</div>

Ensuite insérer Form :

35
Fig. 23 La commande Forms pour insérer les formulaires

Insérer une table de 4 lignes et 2 colonnes :

Fig. 24 Insertion d'une table de 4 lignes et 2 colonnes

Ensuite, insérer 3 champs de texte dans la table

Insérer un bouton :

36
Fig. 25 Insertion d'un bouton

Maintenant, aller à la page index.php et ajouter le lien vers menu.php et


page_etudiant.php:

Maintenant, on va créer une autre page nommée page_cours.php, pour se faire :

Cliquer sur la page page_etudiant.php ensuite cliquer sur le Menu et Enregistrer


sous : page_cours.php

37
Fig. 26 Création de page_cours.php

Sélectionner les deux dernières lignes et en cliquant sur le bouton droit de souris,
sélectionner Table et Supprimer la ligne.

Fig. 27 Ajustement de la table des formulaires

Maintenant, sélectionner la première ligne et renommer ce champ : cours

38
Fig. 28 Attribution d'un nom "cours" au champ sélectionné

Créer une nouvelle page: page_acceuil.php à partir de la page page_cours.php en


cliquant sur enregistrer sous.

Fig. 29 Création de la page page_acceuil.php

Ensuite, sélectionner la table et appuyer sur shift + Delete pour la supprimer.

39
Fig. 30 Ajustement de la table page accueil

Maintenant on va créer la page page_inscription.php, donc cliquer sur la page


page_etudiant et cliquer sur Fichier dans le menu et sélectionner enregistrer sous
pas_inscription.php

Fig. 31 Création de la page page_inscription.php

Renommer la première ligne de la table en remplaçant Nom etudiant par Matricule


etudiant.
Ensuite, supprimer le champ à côté du Matricule etudiant

40
Fig. 32 Ajustement de la table page inscription

Cliquer sur Insertion, Formulaire, Liste Menu et cliquer sur OK.


Changer le nom du champ List en donnant le nom matricule :

Fig. 33 Insertion d'une liste déroulante

Faites la même chose pour le deuxième champs Nom cours

41
Fig. 34 Insertion d'une deuxième liste déroulante pour les cours

Changer le troisième champ date inscription en donnant le nom date_inscription à ce champs

Fig. 35 Attribution d'un nom 'date_inscription" au champ date inscription

Insérer une nouvelle ligne du Montant

42
Fig. 36 Insertion d'une nouvelle ligne

Maintenant cliquer sur la case à côté du Montant et insérer un champ texte

Fig. 37 Insertion d'un nouveau champ

Ensuite changer le nom du champ texte en mettant montant

43
Fig. 38 Attribution d'un nom "Montant" au champ Montant

Créer une nouvelle page nommée connexion.php dans laquelle on va mettre le


code php pour se connecter avec la base de données.

Fig. 39 Création d'un nouveau fichier connexion.php

Ensuite, Créer un autre fichier nommé traitement_etudiant.php

44
Fig. 40 Création de la page traitement_etudiant.php

Maintenant nous allons traiter le formulaire qui nous permet d'ajouter un nouveau
etudiant: Aller à la page page_etudiant.php et ajouter le mot
traitement_etudiant.php dans action de la balise form:

Fig. 41 Insertion du code PHP dans la page traiteent_etudiant.php

45
Maintenant, on va ajouter le code php pour enregistrer un nouveau etudiant:

Fig. 42 le code php pour l'enregistrement d'un nouvel étudiant

Passant maintenant à l'affichage des etudiants dans la page page_etudiant.php


dans page_etudiant.php positionner le curseur de la souris à la fin de la balise
<div></div> de la table etudiant et insérer le code suivant :

46
Fig. 43 l'affichage des etudiants dans la page page_etudiant.php

Maintenant on va créer un traitement pour cours, aller à la page


traitement_etudiant.php et cliquer sur le Menu Fichier et Enregistrer sous
traitement_cours.php

47
Fig. 44 Création d'une nouvelle page traitement_cours.php

Il nous reste le traitement de la page inscription. Mais tout d'abord, nous allons
rectifier le champ Matricule etudiant. Remplacer ce champ par Nom étudiant :

Fig. 45 Remplacement du champ Matricule par Nom etudiant

48
Ajouter au début de la page_inscription le code PHP suivant

Fig. 46 Ajouter du code PHP dans inscription pour afficher tous les étudiants et tous les cours

La deuxième ligne c'est pour se connecter à la base de données. La troisième et


quatrième ligne sont utilisées pour préparer les requêtes des étudiant et cours. Les
deux dernières lignes sont les données après avoir exécuté les deux requêtes
précédentes.

Maintenant, nous allons ajouter le code qui permet de remplir la liste des étudiant.
Nous afficherons la matricule et le nom et le prénom à chaque ligne de cette liste.
Cliquer sur la liste des noms étudiants, ensuite cliquer sur Split ou Code pour écrire
notre code.

49
Fig. 47 Accéder au ode affichage graphique/code

Voilà le code pour remplir la liste des étudiants :

Fig. 48 Le code php pour remplir la liste déroulante des étudiants

Vous faites la même chose pour la liste des cours, voilà le code :

50
Fig. 49 Le code php pour remplir la liste déroulante des cours

Il nous reste le traitement des inscriptions, donc cliquer sur la page


traitement_etudiant.php et dans le menu cliquer sur Fichier et Enregistrer sous et
mettez traitement_inscription.php (sélectionner php comme type de fichier).

Fig. 50 Enregistrer le fichier courant sous le nom traiteent_inscription.php

Cliquer sur la page page_inscription.php et ajouter le traitement_inscription.php:

51
Fig. 51 Ajouter traitement_inscription.php dans page_inscription

Créer une nouvelle page traitement_inscription et ajouter ce code:

Fig. 52 Création d'une nouvelle page traitement_inscription.php

52
Conclusion :
Les concepts de bases relatives au modèle entité / association et le modèle relationnel
ont été présentés de façon simple. Ces concepts sont illustrés à travers des exemples
du monde réel. Ce papier explique le passage du modèle entité association vers le
modèle relationnel. Ce dernier est crucial pour créer et manipuler une base de
données. Une base de données qui alimente un site web le rend dynamique. Par
revanche le transfert des données entre la base de données et le site web nécessite
l’utilisation de langages spéciaux. L’un de ces langages les plus utilisés est le langage
PHP. Malgré que le langage HTML soit destiné à créer des pages web statique, ce
langage est nécessaire pour créer la structure des sites web. Une partie est réservée à
ces deux langages. Cette partie survole superficiellement ces deux langages. Par
contre, la documentation sur internet est très riche sur l’HTML et le PHP. La dernière
partie est consacrée à un tutoriel pratique sur la création d’un site web dynamique.
La plateforme utilisée est Dreamweaver. En revanche, il existe d’autres plateformes
gratuites telles que Visuel Studio Code, qui supporte plusieurs langages de
programmation.

53
Bibliographie
Beaulieu, Alan. 2009. Learning SQL. 2nd ed. O’Reilly Media, Inc.
Lubis, Juanda Hakim, and Elviawaty Muisa Zamzami. 2020. “Relational Database
Reconstruction from SQL to Entity Relational Diagrams.” Journal of Physics:
Conference Series 1566 (1): 012072. https://doi.org/10.1088/1742-
6596/1566/1/012072.

Pillou, Jean Francois. 2007. CommentCaMarche.net.


https://web.maths.unsw.edu.au/~lafaye/CCM/merise/mcd.htm.

Robin, Nixon. 2019. Développer un site web en Php, Mysql et Javascript, Jquery, CSS3
et HTML5. Reynald Goulet Eds. doi:2893775764.
Yacoub, Saliha. 2019. Les modèles de données.
http://salihayacoub.com/420Kba/Theorie/ModeleEA.pdf.
Zemmari, Amine. 2015. ENSEIRS MATMECA SORDEUX.
https://www.labri.fr/perso/zemmari/sgbd/c3.pdf.

54

Vous aimerez peut-être aussi