Professional Documents
Culture Documents
Bibliothques :
Donnes sur les lecteurs Dfinition :
Id, nom, prnom, statistiques, montant d
Une base de donnes est un ensemble structur de donnes
Donnes sur les livres
Titre, ISBN, auteur, genre, code, emplacement, emprunts, collection, enregistres sur des supports accessibles par lordinateur pour
diteurs
satisfaire simultanment plusieurs utilisateurs de faon
Donnes sur les auteurs
Livres, adresse, nom, prnom, slective et en un temps opportun.
Exemple :
1
14/11/2013
Indpendance des programmes et des donnes : La base de 3 niveaux : Interne, Conceptuel et Externe
donnes doit tre indpendante des programmes qui y ont accs,
on doit pouvoir utiliser diffrents programme pour traiter Niveau interne
diffremment ces donnes sans avoir toucher ces donnes Physique, systme
Relve principalement de ladministrateur(BD/Systme)
Niveau externe
Vue dun utilisateur particulier
Modle conceptuel incomplet
Relve principalement des oprateurs
2
14/11/2013
Donnes partages
Systme de gestion de
Application
base de donnes
Peuvent tre accdes par plusieurs utilisateurs (mme
simultanment !)
Globalement
Application Les utilisateurs ont une vue diffrente de la base de donne
Administrateur de la BD vue complte
Base de
donnes Ressources humaines employs, tches, etc...
Fichier Acheteur produits, pices, factures, etc.
Application Fichier
3
14/11/2013
Nombre dutilisateurs
1 Mono-utilisateur BD personnelle Systme de gestion de bases de donnes
Partage difficile des donnes
Outils de dveloppement dapplications
Dveloppement et entretien peu coteux
2+ --> Multi-utilisateur API (Application Programming Interface)
Base de donnes
Programme 1
SGBD BD
Fichier 1
SGBD
Programme 2
Fichier 2
Fichier 3 Programme 3
4
14/11/2013
Objectif SGBD
Indpendance physique : La manipulation des donnes doit tre Administration centralise des donnes : Des visions diffrentes des
faciliter en travaillant directement sur le schma logique. On peut donnes (entre autres) se rsolvent plus facilement si les donnes sont
insrer, supprimer, modifier des donnes directement sur limage administres de faon centralise.
logique. Le SGBD va soccuper de faire le travail sur les fichiers Cohrence des donnes. Les donnes sont soumises un certain
physiques. nombre de contrainte dintgrit qui dfinissent un tat cohrent de la
Indpendance logique : Un mme ensemble de donnes peut tre vu base. Elles doivent pouvoir tre exprimes simplement et vrifies
diffremment par des utilisateurs diffrents. Toutes ces visions automatiquement chaque insertion, modification ou suppression de
personnelles des donnes doivent tre intgrs dans une vision globale. donnes, par exemple :
Manipulations des donnes par des non informaticiens. Il faut
lge dune personne suprieur zro
pouvoir accder aux donnes sans savoir programmer ce qui signifie
des langages quasi naturels . Salaire suprieur zro
Efficacit des accs aux donnes : Ces langages doivent permettre Etc
dobtenir des rponses aux interrogations en un temps raisonnable . Ds que lon essaie de saisir une valeur qui ne respecte pas cette
Il doivent donc tre optimiss et, entre autres, il faut un mcanisme contrainte, le SGBD le refuse.
permettant de minimiser le nombre daccs disques. Tout ceci, bien sur,
de faon compltement transparente pour lutilisateur.
Objectif SGBD
Non redondance des donnes : Afin dviter les problmes lors des Description des donnes : codification structuration, grce un Langage
mises jour, chaque donne ne doit tre prsente quune seule fois de Description de Donnes (LDD)
dans la base. Manipulation et restitution des donnes (insertion, mise jour,
Partageabilit des donnes : Il sagit de permettre plusieurs interrogation)
utilisateurs daccder aux mmes donnes au mme moment. Si ce Mise en oeuvre laide dun Langage de Manipulation de Donnes
problme est simple rsoudre quand il sagit uniquement (LMD)
dinterrogations et quand on est dans un contexte mono-utilisateur,
S.Q.L. (Structures Query Langage) : Langage standard
cela nest plus le cas quand il sagit de modifications dans un
contexte multi-utilisateurs. Il sagit alors de pouvoir : Contrle (partage, intgrit, confidentialit, scurit)
Permettre deux (ou plus) utilisateurs de modifier la mme Schma = structure + contraintes
donne en mme temps ; Formule logique (E.g. Nom character 20, non NULL; age integer
Assurer un rsultat dinterrogation cohrent pour un utilisateur between 0 and 120; debit <= credit).
consultant une table pendant quun autre la modifie. But: protger les donnes
5
14/11/2013
Modles de SGBD
SGBD Hirarchique:
Oprateurs/Utilisateurs
Utilisent les applications conues par les concepteurs
Les donnes sont reprsentes dans la base sous forme de structure
Entrent, modifient, suppriment et consultent les donnes arborescente.
Concepteurs Manipulation des donnes (balayage ascendant/descendant).
De bases de donnes : conoivent les modles de donnes et
crent la structure de la base de donnes
Dapplications : dveloppent des programmes qui grent les bases SGBD rseau:
de donnes
Administrateurs (DBA) Les donnes sont reprsentes dans la base sous forme dun graphe
Grent le systme, les utilisateurs (oprateurs et concepteurs), les quelconque.
objets et les privilges Les programmes:
ne sont pas indpendants de la structure logique de la base
doivent indiquer le chemin daccs aux donnes
utilisent un langage complexe pour travailler avec leurs donnes.
Modles de SGBD
6
14/11/2013
7
14/11/2013
8
14/11/2013
33 34
Intervalle de validit : restreint les valeurs valides quun attribut peut prendre
lintrieur dun domaine.
35 36
9
14/11/2013
restreint les valeurs valides quun attribut peut prendre lintrieur dun Contrainte de non nullit: lattribut pour lequel on spcifie cette contrainte ne peut pas
domaine. prendre la valeur NULL, il doit tre toujours renseign.
ex: Course (idCourse, nomCourse, dateCourse, sexeCourse, ) ex: Coureur (idCoureur, nomCoureur, prenomCoureur, sexeCoureur,
ageCoureur, nomPhoto,)
Une course de ski doit tre en exclusivit pour les filles ou pour les garons.
Le nom dun skieur doit tre connu lors de linscription.
Contrainte dfinie au niveau de lattribut nomCoureur VARCHAR (20) NOT NULL,
sexeCourse CHAR(1) NOT NULL CONSTRAINT chk_sexeCourse
Contrainte d'unicit: lattribut (ou le groupe dattributs) doit avoir une valeur unique dans
CHECK (sexeCourse IN ('F', 'M')), toute la table.
37 38
39 40
10
14/11/2013
41 42
Exemple :
ON DELETE RESTRICT: Prvient leffacement dun enregistrement dans une table
parent sil est rfrenc par au moins un enregistrement dans une table enfant. Club (idClub, nomClub, villeClub, fondCourse)
Coureur (idCoureur, nomCoureur, prenomCoureur, sexeCoureur, ageCoureur,
ON DELETE CASCADE: Permet, avec leffacement dun enregistrement dans une table nomPhoto,, idClub)
parent, leffacement en cascade de tout enregistrement rfrenc dans la table enfant
correspondante. CREATE TABLE Club(
idClub INTEGER CONSTRAINT pk_club PRIMARY KEY,
nomClub VARCHAR(20) NOT NULL,
ON DELETE SET NULL: Permet, lorsquun enregistrement dans une table parent est ..
effac, la modification automatique de la valeur de la cl trangre de tous les );
enregistrements correspondants dans les tables enfants pour la valeur nulle avant deffacer CREATE TABLE Coureur(
lenregistrement dans la table parent. idCoureur INTEGER CONSTRAINT pk_coureur PRIMARY KEY,
nomCoureur VARCHAR(20) NOT NULL,
prenomCoureur VARCHAR(20) NOT NULL,
ON DELETE SET DEFAULT: Permet, lorsquun enregistrement dans une table parent est sexeCoureur CHAR(1) NOT NULL, CONSTRAINT chk_sexecoureur
effac, la modification automatique de la valeur de la cl trangre de tous les CHECK (sexeCoureur IN( 'F','M') ),
enregistrements correspondants dans les tables enfants pour sa valeur par dfaut avant nomPhoto VARCHAR(20),
deffacer lenregistrement dans la table parent. .,
idClub INTEGER CONSTRAINT fk_coureur_club REFERENCES Club(idClub)
ON DELETE CASCADE );
ON DELETE NO CHECK: Permet, lorsquun enregistrement dans une table parent est
effac, quaucune action ne soit prise pour assurer le maintien de lintgrit rfrentielle.
43 44
11
14/11/2013
45 46
47 48
12
14/11/2013
Mise jour de donnes dans les tables Syntaxe lors de linsertion dune ligne avec des valeurs pour un certain
nombre dattributs de la table (j < n )
UPDATESET INSERT INTO <nom_table><attribut1, attribut2,,attributj ) VALUES
(valeur1, valeur2,valeurj );
Suppression des enregistrements
Note: Les donnes de type texte ou date doivent tre entre ' '.
DELETE
49 50
Insrer les valeurs ci-dessous dans la table Resultat: Lors de la cration des tables de la base de donnes:
Resultat
1. Crer les tables parent
2. Crer les tables enfant
idCoureur IdCourse Dossard Position Lors de linsertion des donnes dans les tables:
(INTEGER) (INTEGER) (INTEGER) (VARCHAR(3))
2 3 8 012
1. Insrer des donnes dans les tables parent
3 3 12 017 2. Insrer des donnes dans les tables enfant
INSERT
3 INTO Resultat
7 VALUES
null (2, 3, null
8, '012');
INSERT INTO Resultat VALUES (3, 3, 12, '017');
Lors de la suppression des tables de la base de donnes:
INSERT INTO Resultat(idCoureur, idCourse) VALUES (3, 7); 1. Supprimer les tables enfant
OU 2. Supprimer les tables parent
INSERT INTO Resultat VALUES (3, 7, NULL, NULL);
51 52
13
14/11/2013
Structure Exemple 1 :
SELECT liste_d_attributs Participant(numeroP
Participant(numeroP,
numeroP, nomP,
nomP, prenomP,
prenomP, adresseP)
adresseP)
FROM liste_de_tables
WHERE conditions; Select * from participant;
SELECT : indique la liste des attributs constituant le rsultat * remplace tous les tuples;
FROM : indique le (les) tables utiles la requte Cette requte retourne tous les tuples de la table
WHERE : indique les conditions que doivent satisfaire les tuples de participant
la base pour faire partie du rsultat
53
Exemple 2 :
SQL ne supprime pas les doublons
Select numeroP, nomP Exemple :
from participant
Select prenomP from participant;
where prenomP = 'Salah';
14
14/11/2013
15
14/11/2013
l'aide de la clause LIKE Tous les colloques dont le nom finit par 'a'
Select *
'%' dsigne n'importe qu'elle chane de caractres
from colloque
'_' dsigne une lettre
where nomC LIKE '__a%';
Les requtes SQL dcrites dans cette section Colloque (nomC, universiteC, adresseC, dateC)
permettent de manipuler simultanment plusieurs Participant(numeroP, nomP, prenomP, adresseP)
tables et d effectuer les oprations de : Organisateur (numeroP#, telephone, nomC#)
16
14/11/2013
Une jointure permet d'exprimer des requtes portant sur des Dans l'ambigut (deux attributs ayant le mme nom),
on met le nom du table comme prfixe
donnes rparties sur plusieurs tables
Comme ce n'est pas pratique de recopier intgralement
Exemple: Donner le nom et prnom de tous les participants d'un
le nom d'une table, on peut dfinir et utiliser des
colloque donne synonymes
Select NomP, PrenomP Exemple:
from Inscrit, Participant Select NomP, PrenomP
from Inscrit as I, Participant as P
where Inscrit.NumeroP = Participant. NumeroP
where I.NumeroP = P.NumeroP and
and NomC=Nom du Colloque'; NomC=nom du Colloque';
Exemple:
On peut faire intervenir plus que deux tables
Exemple: Donner des couples de colloques organiss par la mme
Select NomP, PrenomP, DateC universit
from Inscrit I, Participant P, colloque C
Select C1.NomC, C2.NomC
where I.NumeroP = P.NumeroP and
I.NomC = C.NomC; from colloque C1, colloque C2
Where C1.Universite = C2.Universite
17
14/11/2013
Le rsultat dune requte sert comme condition dans la Conditions portant sur des relations
deuxime requte
Exemple:
Ces types de requtes peuvent porter sur plusieurs
tables Select numeroP
from inscrit
where nomC In ( select nomC
from Colloque
where Universite = IbnZohr);
On peut utiliser = la place de IN si on est sr que
la sous requte ramne une seule ligne
Agrgation : exemple
Les fonctions d'agrgation permettent de faire des oprations - Select count (NomC)
sur une slection de champ
From colloque;
Elles effectuent un calcul sur un ensemble de valeurs et
retournent une valeur unique
-Select sum (droitinscription)
Les fonctions d'agrgation les plus rpandues From inscrit
COUNT : nombre de lignes, ou de valeurs non nulles
MAX : calcule la valeur maximale d'une colonne Where NumeroP = 100;
MIN : calcule la valeur minimale d'une colonne
AVG : calcule la moyenne dune colonne
-Select count(numStation), AVG (tarif), MAX (tarif),
SUM : calcule la somme sur une colonne
MIN (tarif)
Les fonctions d'agrgation sont souvent utilises avec la clause From Station;
GROUP BY de l'instruction SELECT
18
14/11/2013
Construit des groupes en associant les lignes partageant On peut ajouter une condition sur le groupe
la mme valeur pour une ou plusieurs colonnes
Exemple:
Exemple: Select universite, count (NomC)
Select universite, count (NomC) From colloque
from colloque Group by universite
Group by universite; Having count (NomC) >= 3;
La clause UPDATE permet de modifier les lignes La clause DELETE permet de supprimer des lignes
dune table. dune table.
Syntaxe: Syntaxe:
UPDATE <nom_table>
SET <nom_attribut> = <expression> DELETE FROM <nom_table>
[ WHERE <critre> ] [ WHERE <critre> ] ;
75 76
19
14/11/2013
Exercices (suite)
Prt:
Augmentez la dure de prt de 3 jours
Supprimer le livre dont l tat est mauvais
Donner la liste des livres qui doivent tre retourn
aujourdhui
Donner la liste des livres dont le dlais de prt est
dpass
20