• Aucun résultat trouvé

Base de données. données et l intégrer dans votre site. Apprendre à créer votre base de

N/A
N/A
Protected

Academic year: 2022

Partager "Base de données. données et l intégrer dans votre site. Apprendre à créer votre base de"

Copied!
55
0
0

Texte intégral

(1)

Dr. Meziane Mohammed El-amine.

Maître de conférences en informatique, Ecole supérieure d’économie d’Oran, Algérie.

Base de données

Apprendre à créer votre base de données et l’intégrer dans votre site web

Réaliser votre premier site 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 que le langage SQL. Un projet de réalisation d’un site web dynamique est proposé.

SQL,HTML,PHP,DREAMWAVER

(2)

1 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

(3)

2

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

(4)

3 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.

(5)

4

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.

Hôtel Num_hotel Nom_hotel Adresse Capacité

Client Id_client Nom Prénom Email Réserve

r

0, N 0, N

Date,nb_nuits

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

(6)

5

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 ; Effectue Client

Num_client

….

Commande

Num_commande

…..

1, N 1, 1

Date,Qte

(7)

6 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.

(8)

7

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 :

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)

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

(9)

8

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

(10)

9

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 :

(11)

10

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') ;

(12)

11

Modification de données

Permet de modifier la valeur d’un attributrelatif à 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…] ;

(13)

12

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.

(14)

13 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 ?

(15)

14 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.1Les clients ayant réservés plusieurs chambres dans le même hôtel le 07 juillet 2019 :

(16)

15 SELECT DISTINCT numclient FROM Reservation

GROUP BY numclient, nomhotel HAVING COUNT(*) > 1

3.2Afficher 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

(17)

16

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.

(18)

17

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) );

(19)

18

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");

(20)

19

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;

(21)

20

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.

(22)

21 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.

(23)

22 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é.

(24)

23

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).

(25)

24

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.

(26)

25

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

(27)

26

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).

(28)

27

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 variable nom

"<P>Mon nom est $nom" </P>;

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.

(29)

28 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’) ;

(30)

29

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 :

(31)

30

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 :

(32)

31

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

(33)

32 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 :

(34)

33

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

(35)

34

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>):

(36)

35

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 :

(37)

36

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 :

(38)

37

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

(39)

38

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

(40)

39

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.

(41)

40

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

(42)

41

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

(43)

42

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

(44)

43

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

(45)

44

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

(46)

45

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

(47)

46

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 :

(48)

47

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

(49)

48

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

(50)

49

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.

(51)

50

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 :

(52)

51

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:

(53)

52

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

(54)

53 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.

(55)

54 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.

Références

Documents relatifs

Les requêtes vous permettront d'interroger la base de données, d'extraire des données selon des critères ou encore créer des tables selon certains critères spécifiés.. Le

[r]

Double-cliquez chaque champ à inclure dans votre table.( pour ajouter tous les champs en une seule fois, cliquez &gt;&gt;... Chaque champ sélectionné apparaît dans

- Ouvrez la base de données dans laquelle vous désirez créer une table. - Clique dans l’onglet Créer sur Table.. Choisir le « Mode création », en cliquant avec bouton droit de

Dans cet exercice, vous allez fermer la base de données, sans créer la table.. „ Fermez la base

ALTER TABLE PARTICIPANT ADD COLUMN (EMAIL VARCHAR (50) ) 2- Modification d’une colonne. Elargir la taille du champ EMAIL et le rendre not

 Parmi les nombreux atouts du langage PHP, un des plus connus est son interfaçage avec la majorité des bases de données du marché..  Parmi les plus connues, on peut citer

 mysql_query permet pas seulement d’exécuter des requêtes SELECT, mais aussi toute autre requête.  Évidemment, s’il ne s’agit pas d’une requête SELECT, on ne fera pas