Académique Documents
Professionnel Documents
Culture Documents
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.
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
• 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 …..
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).
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 :
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é :
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 :
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
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 :
9
Fig. 7 modèle relationnel obtenu via l'exemple de fig 6
• Manipulation de données
Ajout de données
Pour ajouter un tuple dans une table, on procède comme suit :
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).
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 ;
UPDATE Etudiant
SET Ville= ‘Alger’
WHERE Num=1234 ;
Suppression de données
Il s’agit de supprimer un ou plusieurs tuples d’une table.
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 :
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.
Questions
13
Réponses
2. Modèle relationnel
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
SELECT numero
FROM Chambre
WHERE nomhotel=’RODDINA’
AND numero NOT IN
(SELECT numchambre
FROM Reservation
WHERE nomhotel=’RODINNA’
AND date = ’06/07/2019’)
15
salle et l’enseignant qui dispense la séance. Les étudiants s’inscrivent aux cours
auxquels ils souhaitent assister.
Réponses :
18
8. Quels sont les étudiants les plus jeunes de la promotion ?
SELECT *
FROM etudiant
WHERE age=(select min(age) from etudiant);
19
12. Le grade de l'enseignant "Senouci Zaki" est devenu "Maître-de-conférence B".
20
Réponses :
Modèle relationnel
Client (SSN,Nom,Prénom,Adresse)
21
Réponses :
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 :
23
7. Conception et réalisation d’un site web dynamique
Pages statiques :
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
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">
<title>Titre de la page</title>
</head>
<body>
</body>
</html>
Structure : paragraphes et titres
</p>texte</p>
</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.
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’) ;
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 :
29
Fig. 13 Les tables issues du model relational d site web
Nous allons commencer par créer un nouveau site en cliquant sur site et nouveau site
30
Fig. 15 Fenêtre pour le nom du site et sa localisation
Maintenant nous allons créer le dossier local dans lequel notre site sera sauvegarder
:
31
Créer une nouvelle page PHP:
Conception du site :
Dessiner le tableau de mise en forme :
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 :
33
Fig. 21 Le fichier menu.php
34
Fig. 22 le code php qui permet l'accès aux éléments du menu
35
Fig. 23 La commande Forms pour insérer les formulaires
Insérer un bouton :
36
Fig. 25 Insertion d'un bouton
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.
38
Fig. 28 Attribution d'un nom "cours" au champ sélectionné
39
Fig. 30 Ajustement de la table page accueil
40
Fig. 32 Ajustement de la table page inscription
41
Fig. 34 Insertion d'une deuxième liste déroulante pour les cours
42
Fig. 36 Insertion d'une nouvelle ligne
43
Fig. 38 Attribution d'un nom "Montant" au champ Montant
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:
45
Maintenant, on va ajouter le code php pour enregistrer un nouveau etudiant:
46
Fig. 43 l'affichage des etudiants dans la page page_etudiant.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 :
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
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
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
51
Fig. 51 Ajouter traitement_inscription.php dans page_inscription
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.
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