O. Auzende Ingénierie Web
1
Bases de données relationnelles
Système de Gestion de Bases de Données
Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et
accessible à de nombreuses personnes.
Un Système de Gestion de Bases de Données (SGBD) représente un ensemble coordonné de logiciels permettant
de décrire, mémoriser, manipuler, traiter, interroger les ensembles de données constituant la base.
Modèle et SGBD relationnels
Le concept de base du modèle relationnel est la relation, de structure tabulaire.
Un SGBD est dit relationnel s’il est implémenté selon ce modèle. Des langages spécifiques permettent alors
d’accéder aux données de manière assez naturelle : SQL, QBE.
Quelques SGBD relationnels : ORACLE, INGRES, SYBASE, DBASE2, ACCESS, mySQ, Postgres….
Une relation a plusieurs attributs. Le degré de la relation est le nombre de ces attributs.
Exemple
La relation ELEVE, de degré 3, comporte les attributs : code_eleve, nom et prenom.
Occurrence : chaque ligne du tableau (un n-uplet) correspond à une occurrence de la relation.
Cardinalité : nombre d’occurrences de la relation dans la base. ELEVE est donc de cardinalité 4.
Clé : chaque relation contient un attribut particulier (ou un ensemble d’attributs) appelé clé, dont la valeur
permet de distinguer une occurrence de toutes les autres. Pour ELEVE, l’attribut clé est code_eleve.
On représente symboliquement une relation R par un schéma SR de la forme :
R(clé, attribut 1, attribut 2, …, attribut n).
On aura donc : ELEVE(code_eleve, nom, prenom).
Exemple de base de données relationnelle
La base de données relationnelle suivante est composée des quatre relations :
ELEVE(code_eleve, nom, prenom)
ENSEIGNANT(code_professeur, nom, prenom)
UV(code_UV, nom, annee, code_professeur)
NOTE(code_eleve, code_UV, note)
Table ELEVE Table ENSEIGNANT
O. Auzende Ingénierie Web
2
Table UV Table NOTE
Les liens entre ces relations sont appelés des jointures :
- l’attribut code_eleve de la relation ELEVE représente le même type
d’information que l’attribut code_eleve de la relation NOTE.
On écrira : ELEVE.code_eleve = NOTE.code_eleve.
- l’attribut code_uv de la relation UV représente le même type
d’information que l’attribut code_uv de la relation NOTE.
On écrira : UV.code_UV = NOTE.code_UV
- l’attribut code_professeur de la relation UV représente le même
type d’information que l’attribut code_professeur de la relation
ENSEIGNANT. On écrira :
UV.code_professeur = ENSEIGNANT.code_professeur
Eléments de SQL, le langage relationnel
Le langage SQL (Structured Query Language) est le langage d’interprétation le plus utilisé. Il permet de créer,
interroger et manipuler les SGBD relationnelles.
Création, modification et suppression de relations
SQL permet de créer une relation par l’instruction CREATE TABLE :
CREATE TABLE Eleve
code_eleve NUMBER(6) NOT NULL, PRIMARY KEY,
nom CHAR(30),
prenom CHAR(30) ;
Si la clé principale est composée de plusieurs attributs, elle est définie à la fin de l’instruction :
CREATE TABLE Eleve
Code_eleve NUMBER(6) NOT NULL,
nom CHAR(30),
prenom CHAR(30),
num_ss NUMBER(13) NOT NULL,
PRIMARY KEY(code_eleve, num_ss) ;
SQL permet de modifier une relation par l’instruction ALTER TABLE suivie d’une spécification de
l’opération à effectuer
- L’ajout d’un attribut est déclaré par le mot-clé ADD
ALTER TABLE Etudiant ADD (moyenne NUMBER(2)) ;
- La modification d’un attribut est déclaré par MODIFY
ALTER TABLE Etudiant MODIFY adresse CHAR(100) ;
SQL permet de supprimer une relation se fait par l’instruction DROP TABLE
DROP TABLE Etudiant ;
O. Auzende Ingénierie Web
3
Insertion, suppression et modification d’occurrences
L’insertion d’une occurrence par SQL se fait grâce à INSERT
INSERT INTO Etudiant VALUES (.., …,…,…) ;
La suppression d’une occurrence se fait par DELETE
DELETE FROM Etudiant
WHERE num_etudiant = … (valeur de la clé) ;
La modification d’une occurrence se fait par UPDATE
UPDATE Etudiant SET adresse=…
WHERE num_etudiant = … (valeur de la clé) ;
Interrogation de la base
La forme générale d’une interrogation SQL (appelée une requête) est :
SELECT attributs FROM relations WHERE conditions ;
Dans la clause optionnelle WHERE, on peut utiliser les opérateurs AND et OR.
SGBD mySQL
MySQL est un Système de Gestion de Bases de Données Relationnelles. Il comprend deux programmes
principaux :
o mysqladmin pour les tâches d’administration du serveur (arrêt et démarrage, création de bases).
o mysql qui lit les requêtes SQL, les transmet au serveur qui les exécute et affiche ensuite le résultat
Sous Windows, le serveur easyPHP couple un serveur Web et un serveur mySQL.
Lancer easyPHP.
Création de la base
On crée la base de données appelée enseignement puis on la remplit à l’aide du fichier
baseenseignement.dump fourni, dont le contenu est le suivant :
CREATE TABLE ELEVE (code_eleve tinyint(4) NOT NULL AUTO_INCREMENT, nom varchar(30), prenom
varchar(30), PRIMARY KEY(code_eleve));
INSERT INTO ELEVE VALUES(1, 'Dupuis', 'Pierre');
INSERT INTO ELEVE VALUES(2, 'Simon', 'Virginie');
...
CREATE TABLE ENSEIGNANT (code_professeur tinyint(4) NOT NULL AUTO_INCREMENT, nom varchar(30),
prenom varchar(30), PRIMARY KEY(code_professeur));
INSERT INTO ENSEIGNANT VALUES(1, 'Dupont', 'Serge');
INSERT INTO ENSEIGNANT VALUES(2, 'Didier', 'François');
...
CREATE TABLE UV (code_UV tinyint(4) NOT NULL AUTO_INCREMENT, nom varchar(20), annee
tinyint(2), code_professeur tinyint(4), PRIMARY KEY(code_UV));
INSERT INTO UV VALUES(1, 'Mathématiques', 1, 1);
INSERT INTO UV VALUES(2, 'Histoire', 1, 2);
INSERT INTO UV VALUES(3, 'Economie', 1, 5);
INSERT INTO UV VALUES(4, 'Anglais', 1, 3);
INSERT INTO UV VALUES(5, 'Mathématiques', 2, 1);
INSERT INTO UV VALUES(6, 'Géographie', 2, 2);
...
CREATE TABLE NOTE (code_eleve tinyint(4), code_UV tinyint(4), note tinyint(2), PRIMARY
KEY(code_eleve, code_UV));
INSERT INTO NOTE VALUES(1, 1, 12);
INSERT INTO NOTE VALUES(1, 2, 9);
...
INSERT INTO NOTE VALUES(2, 1, 11);
INSERT INTO NOTE VALUES(2, 2, 13);
...
O. Auzende Ingénierie Web
4
Exemples de requêtes simples
Recherche des noms et prénoms des élèves
SELECT eleve.nom, eleve.prenom FROM eleve;
Recherche des noms et années des UV
Recherche des attributs des élèves de prénom Virginie
SELECT * FROM eleve WHERE eleve.prenom = 'Virginie'
Recherche des attributs des UV de première année
Liste des noms des UV et noms des enseignants correspondants (cette requête nécessite une jointure)
SELECT uv.nom, enseignant.nom FROM uv, enseignant
WHERE uv.code_professeur = enseignant.code_professeur
Liste des noms des élèves ayant suivi une UV de première année
SELECT eleve.nomFROM eleve, uv, note WHERE eleve.code_eleve = note.code_eleve AND
note.code_uv = uv.code_uv AND uv.annee =1
Pour n’avoir qu’une seule fois chaque élève :
SELECT DISTINCT eleve.nomFROM eleve, uv, note WHERE eleve.code_eleve = note.code_eleve AND
note.code_uv = uv.code_uv AND uv.annee =1
Liste des noms des élèves ayant suivi une UV de mathématiques en deuxième année
Requêtes avec fonctions ensemblistes
Note maximale en anglais première année
SELECT max(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.nom = 'Anglais'
AND uv.annee =1
Note minimale en mathématiques première année
SELECT min(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.annee = 1 AND
uv.nom = 'Mathématiques'
O. Auzende Ingénierie Web
5
Notes minimale et maximale en mathématiques deuxième année
Nombre d’élèves ayant la moyenne en anglais première année
SELECT count(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv
AND uv.nom = 'Anglais' AND uv.annee =1 AND note.note >=10
Nombre d’élèves n’ayant pas la moyenne en mathématiques deuxième année
Somme des notes de mathématiques de première année
SELECT sum(note.note) FROM note, uvWHERE note.code_uv = uv.code_uv AND uv.nom =
'Mathématiques' AND uv.annee =1
Moyenne des notes d’anglais première année
SELECT avg(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.nom = 'Anglais'
AND uv.annee =1
Somme et moyenne des notes d’anglais de deuxième année
Autres fonctions, jokers, groupements
Liste des noms des professeurs (par ordre alphabétique)
SELECT DISTINCT enseignant.nom FROM enseignant ORDER BY enseignant.nom
Liste des élèves ayant entre 8 et 12 en mathématiques première année
SELECT eleve.nom FROM eleve, note, uv WHERE note.code_eleve = eleve.code_eleve AND
uv.code_uv = note.code_uv AND uv.nom = 'Mathématiques' AND uv.annee =1 AND
note.note BETWEEN 8 AND 12
Jokers :
_ veut dire un caractère quelconque
% veut dire un nombre quelconque de caractères
Noms des élèves dont la première lettre est un « D »
SELECT eleve.nom FROM eleve WHERE nom LIKE 'D%'
Noms des professeurs contenant un « p »
SELECT enseignant.nom FROM enseignant WHERE nom LIKE '%p%'
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !