Académique Documents
Professionnel Documents
Culture Documents
Bases - Donnees - Copie
Bases - Donnees - Copie
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.
1
O. Auzende Ingénierie Web
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
SQL permet de supprimer une relation se fait par l’instruction DROP TABLE
DROP TABLE Etudiant ;
2
O. Auzende Ingénierie Web
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
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);
...
3
O. Auzende Ingénierie Web
Liste des noms des UV et noms des enseignants correspondants (cette requête nécessite une jointure)
Liste des noms des élèves ayant suivi une UV de première année
SELECT DISTINCT eleve.nomFROM eleve, uv, note WHERE eleve.code_eleve = note.code_eleve AND
Liste des noms des élèves ayant suivi une UV de mathématiques en deuxième année
SELECT max(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.nom = 'Anglais'
AND uv.annee =1
SELECT min(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.annee = 1 AND
uv.nom = 'Mathématiques'
4
O. Auzende Ingénierie Web
SELECT avg(note.note) FROM note, uv WHERE note.code_uv = uv.code_uv AND uv.nom = 'Anglais'
AND uv.annee =1
Jokers :
5
O. Auzende Ingénierie Web
Group by :
SELECT uv.nom, uv.annee, count(eleve.nom) FROM eleve, uv, note WHERE eleve.code_eleve =
GROUP BY est souvent utilisé avec la clause HAVING pour spécifier des caractéristiques du groupement :
Nom du professeur, nom de l’UV et moyenne des notes de l’UV pour les professeurs dont le nom commence
par « D »
Lors de la conception d’une base de données, on commence par réaliser un modèle entité-association que l’on
transforme ensuite en modèle relationnel normalisé, implémentable.
Concepts de base
Une entité est un objet ayant une existence propre présentant un intérêt pour l’entreprise : le client Dupuis, le
fournisseur Durand, etc.
Un type d’entité est une classe d’entités ayant en commun un ensemble de propriétés : Client, Fournisseur, etc.
Une entité est générée à partir d’un type d’entité :
Une association est un lien entre entités. Il représente un verbe matérialisant une relation entre entités.
Exemple : le client Dupuis achète au fournisseur Durand.
6
O. Auzende Ingénierie Web
Un type d’association est un lien-type entre types d’entités : “achète” est un type d’association entre les types
d’entités Client et Fournisseur :
Une propriété est une caractéristique d’un type d’entité ou d’un type d’association.
Exemple : adresse est une propriété des types d’entités de type Client et de type Fournisseur.
Un identifiant est une propriété particulière permettant de distinguer entre elles les occurrences d’un type
d’entité ou d’un type d’association. L’identifiant sera souvent utilisé comme clé.
Un type d’entité est entièrement défini par son nom, son identifiant et ses propriétés.
Exemple : Client
identifiant : num_client
propriétés : nom_client, adresse
L’identifiant d’un type d’association est obtenu en concaténant les identifiants des types d’entité concernés par
l’association.
Exemple : “achète”
identifiant : num_client, num_fournisseur
Cardinalités
Cardinalité d’une entité dans une association : c’est le nombre de fois minimum et nombre de fois maximum
qu’une même occurrence de l’entité peut intervenir dans les occurrences de l’association :
minimum maximum
0 L’occurrence peut ne pas participer
Exemples
Type d’association « achète »
7
O. Auzende Ingénierie Web
A noter : le type d’association « Enseignant » a une « patte » de cardinalité maximale égale à 1, qui traduit le
fait qu’une UV particulière ne peut être enseignée que par un et un seul enseignant.
Exercice
On dispose de questions à l’aide desquelles on souhaite créer des QCM.
Les questions sont regroupées en catégories, une question n’appartenant qu’à une et une seule catégorie.
Chaque catégorie a un intitulé.
Chaque question comporte un texte (l’énoncé de la question).
A chaque question correspondent n réponses (n étant fixe) qui sont proposées à l’apprenant. Chaque réponse
comporte un texte ; la qualité de la réponse est la valeur attribuée à cette réponse.
Exemple : on propose 4 réponses à une question. Les qualités associées peuvent être 3, -1, -1, -1 ou 2, 2, -2, -2
ou toute autre combinaison de somme nulle.
8
O. Auzende Ingénierie Web
Règle 1
Chaque type d’entité donne naissance à une relation du même nom.
o chaque propriété du type d’entité devient un attribut de la relation.
o l’identifiant du type d’entité devient la clé de la relation.
Règle 2
Si un type d’association n’a aucune patte de cardinalité maximale égale à 1, alors :
o ce type d’association devient une relation
o chaque propriété du type d’association devient un attribut de la relation
o l’identifiant du type d’association devient la clé de la relation.
Règle 3
Si un type d’association a une patte dont la cardinalité maximale est égale à 1, alors :
o le type d’association n’est pas transformé en relation, mais est matérialisé par l’ajout d’un attribut
dans la relation source de la patte concernée
o cet attribut est la clé de la relation but de la patte concernée.
Exemples
Le modèle relationnel comporte les deux relations provenant des types d’entités (règle 1) :
ACHAT(num_client, num_fournisseur).
9
O. Auzende Ingénierie Web
Le modèle relationnel comporte les relations provenant des types d’entités (règle 1) :
mais la relation UV étant à l’origine d’une patte de cardinalité maximale égale à 1, on ajoute dans UV la clé de
la destination de cette patte (règle 3), donc code_professeur (qui est appelée clé étrangère et signalée par une *) :
UV(code_UV, nom, année, code_professeur*)
Exercice
Traduire le modèle entité - association du QCM en modèle relationnel.
10