Introduction
Base de donnes : ensemble structur et organis permettant le stockage de grandes quantits dinformations afin d'en faciliter l'exploitation (ajout, mise jour, recherche de donnes). Systme de Gestion de Base de Donnes (SGBD) : ensemble de logiciels systmes permettant aux utilisateurs d'insrer, de modifier, et de rechercher efficacement des donnes spcifiques dans une grande masse d'informations (pouvant atteindre plusieurs milliards d'octets) partage par de multiples utilisateurs. Un SGBD est caractrise par un modle de description des donnes.
Utilisateurs
- Mises jour de la BD - Interrogations - Administration - Gestion des fichiers - Gestion de bases de donnes SGBD BD
Indpendance physique : la faon dont les donnes sont dfinies doit tre indpendante des structures de stockage utilises Indpendance logique : un mme ensemble de donnes peut tre vu diffremment par des utilisateurs diffrents. Toutes ces visions personnelles des donnes doivent tre intgres dans une vision globale. Non redondance dinformation : afin dviter les problmes lors des mises jour, chaque donne ne doit tre prsente quune seule fois dans la base Partage des donnes : interrogations et modifications en mme temps dans un contexte multi-utilisateurs Scurit et reprise sur panne
ACCESS : plate-forme Windows, mono-poste, licence commerciale SQL SERVER : plate-forme Windows, mode client/serveur, licence commerciale ORACLE : plate-formes commerciale SYBASE commerciale POSTGRESQL : plate-formes Windows et Linux, mode client/serveur, licence libre MYSQL : plate-formes Windows et Linux, mode client/serveur, licence libre : plate-formes Windows et Linux, mode client/serveur, licence Windows et Linux, mode client/serveur, licence
Architecture client/serveur
Client
rponse requte
Serveur
Client
Le client met une requte vers le serveur grce son adresse IP et le port, qui dsigne un service particulier du serveur Le serveur reoit la demande et rpond l'aide de l'adresse de la machine cliente et son port
1980 Apparition des SGBDr sur le march (Oracle, Ingres,Informix, Sybase) 1987 Standardisation du langage SQL (Structured Query Langage), qui tend lalgbre relationnelle Objectifs du modle relationnel proposer des schmas de donnes faciles utiliser ; amliorer lindpendance logique et physique; mettre la disposition des utilisateurs des langages de haut niveau ; optimiser les accs la base de donnes ; amliorer lintgrit et la confidentialit ; fournir une approche mthodologique dans la construction des schmas. Donnes organises sous forme de tables deux dimensions et manipules par des oprateurs de lalgbre relationnelle ; Etat cohrent de la base dfini par un ensemble de contraintes dintgrit.
Schema relationnel
- Indivisibilit : les donnes ne sont pas dcomposables - Domaine unique : les attributs ne peuvent prendre nimporte quelle valeur (intervalle, type de donnes) - Ordre : lordre des attributs na pas dimportance 3 proprits
Schema relationnel
Proprit (attribut, colonne, champ) et type Tuple (n-uplet, ligne, enregistrement, record)
- Ordre des tuples sans dimportance - Unicit des tuples : il ne peut y avoir de tuples identiques => identifiant (ou cl) : un ou plusieurs attributs permettent didentifier un enregistrement de la table
--
2 proprits
Schema relationnel
Code Cl primaire
Proprit Code
Contrainte dintgrit rfrentielle : toute valeur dune cl trangre est gale la valeur nulle ou la valeur de la cl primaire laquelle la cl trangre se rfre Valeur nulle valeur conventionnelle introduite dans une relation pour reprsenter une information inconnue ou inapplicable tout attribut peut prendre une valeur nulle except les attributs de la cl primaire (contrainte dentit) Contraintes de domaine : contrainte d'intgrit qui impose qu'une colonne d'une relation doit comporter des valeurs vrifiant une assertion logique
Ensemble doprateurs qui sappliquent aux relations Lalgbre relationnelle permet de faire des recherches dans les relations Rsultat : nouvelle relation qui peut son tour tre manipule Oprations de base: slection (not ), projection () Oprations ensemblistes: produit cartsien (x), jointures (|X|), union (), intersection (), diffrence (), division (/)
Numro 5 1 12 3
Numro 5 12
Soient R et S deux relations de mme schma : Union: T = R S Intersection: T = RS Diffrence: T=R-S Produit cartsien T=RxS diffrence (), division (/)
R1 (A,B) A a b y B b b z R1 R2 A B A a b R2 (A,B) A B u y v z y u B b b z v
R1 (A,B) A a b y B b b z R1 R2 A B A y B z
R2 (A,B) A B u y v z
R1 (A,B) A a b y B b b z R1 R2 A B A a b R2 (A,B) A B u y v z B b b
RxS
n tuples
b a a c n x m tuples
Participer Athlete Dupont Durand Dupont Martin Dupont Martin Nom 200 m 400 m 400 m 110 m H 110 m H 200 m
Algbre relationnelle
Jointure naturelle
but: crer toutes les combinaisons significatives entre tuples de deux relations significatives = portent la mme valeur pour les attributs de mme domaine ! prcondition: les deux relations ont au moins un attribut de mme domaine Produit cartsien suivi dune slection R (A,B) A a b c B b C b S (B,C,D) B b a d C c a a D D b c A a c B B B C c c D D d
Langage SQL
langage normalis de requte non procdural
DDL : DATA DEFINITION LANGAGE
CREATE DROP ALTER
Contraintes : CONSTRAINT nom_contrainte PRIMARY KEY (liste attributs cl primaire) | NOT NULL immdiatement aprs la dclaration de lattribut | CHECK (condition) aprs la dclaration de lattribut | UNIQUE aprs la dclaration de lattribut | FOREIGN KEY (cl trangre) REFERENCES nom_table (liste-colonne)
CREATE TABLE Enseignant ( Enseignant_ID integer, Departement_ID integer NOT NULL, Nom varchar(25) NOT NULL, Prenom varchar(25) NOT NULL, Grade varchar(25) CONSTRAINT CK_Enseignant_Grade CHECK (Grade IN ('Vacataire', 'Moniteur','ATER', 'MCF), CONSTRAINT PK_Enseignant PRIMARY KEY (Enseignant_ID), CONSTRAINT "FK_Enseignant_Departement_ID" FOREIGN KEY (Departement_ID) REFERENCES Departement (Departement_ID) ON UPDATE CASCADE ON DELETE CASCADE );
SELECT Nom, Prnom FROM Enseignant WHERE Dpartement_ID IN (INFO, MATH , ECO)
exp1 exp1 exp1 exp1 exp1 exp1 exp1 exp1 exp1 exp1 exp1 exp1
= exp2 != exp2 > exp2 < exp2 <= exp2 >= exp2 BETWEEN exp2 AND exp3 LIKE exp2 IN (exp2, exp3, ) NOT IN (exp2, exp3, ) IS NULL IS NOT NULL
SELECT Intitul, FROM Cours WHERE NbSeances <= ( SELECT AVG(NbSeances) FROM Cours);
SELECT Dpartement_ID, Nom, Prnom FROM Enseignant ORDER BY Dpartement_ID DESC, Nom, Prnom ; SELECT Dpartement_ID, COUNT(Nom) FROM Enseignant GROUP BY Dpartement_ID;
Sil existe des enseignants attach aucun dpartement, la valeur de Dpartement_ID sera NULL. En SQL2 : [RIGHT | LEFT | FULL] OUTER JOIN
Mise jour UPDATE table SET col1 = exp1, col2 = exp2 WHERE prdicat