ppt

publicité
Les serveurs de bases
de données
•
•
•
•
Pourquoi un SGBD?
Le modèle relationnel
Le langage SQL
Java Database Connectivity
• JDBC
Section 4: Les serveurs de bases de données
1
Introduction
• Définitions
• Une Base de Données (BD) est
• une grande quantité de données,
• centralisées ou non, servant pour les besoins
d'une ou plusieurs applications,
interrogeables et modifiables par un groupe
d'utilisateurs travaillant en parallèle.
•
•
•
•
exhaustif,
non redondant,
structuré,
persistant.
Section 4: Les serveurs de bases de données
2
Définitions, suite
• Un Système de Gestion de Bases de
Données (SGBD),
• il peut être vu comme le logiciel qui prend en
charge
• la structuration,
• le stockage,
• la mise à jour et la maintenance des données ;
– Permet de
•
•
•
•
décrire,
modifier,
interroger,
administrer
Section 4: Les serveurs de bases de données
3
Pourquoi?
• Les limites à l'utilisation des fichiers.
De telles applications sont :
• rigides,
• contraignantes,
• longues et coûteuses à mettre en oeuvre.
• Les données associées dans les
applications fichiers sont :
•
•
•
•
mal définies et mal désignées,
redondantes,
peu accessibles de manière ponctuelle,
peu fiables.
Section 4: Les serveurs de bases de données
4
Objectifs des SGBD
• Indépendance physique
• Utilisation du matériel cachée
• Indépendance logique
• Plusieurs vue logiques sont possibles
• Manipulations des données par des non
informaticiens
• Efficacité des accès aux données
Section 4: Les serveurs de bases de données
5
Objectifs, suite
• Administration centralisée des
données
• Non redondance des données
• Cohérence des données
• Partageabilité des données
• permettre à deux (ou plus) utilisateurs de
modifier la même donnée "en même temps" ;
• assurer un résultat d'interrogation cohérent pour
un utilisateur consultant une table pendant
qu'un autre la modifie.
Section 4: Les serveurs de bases de données
6
Objectifs, suite
•
Sécurité des données
• Les données doivent pouvoir être protégées contre les accès
non autorisés. Pour cela, il faut pouvoir associer à chaque
utilisateur des droits d'accès aux données.
•
Résistance aux pannes
• Que se passe-t-il si une panne survient au milieu d'une
modification, si certains fichiers contenant les données
deviennent illisibles? Les pannes, bien qu'étant assez rares,
se produisent quand même de temps en temps. Il faut
pouvoir, lorsque l'une d'elles arrive, récupérer une base dans
un état "sain". Ainsi, après une panne intervenant au milieu
d'une modification deux solutions sont possibles : soit
récupérer les données dans l'état dans lequel elles étaient
avant la modification, soit terminer l'opération interrompue.
Section 4: Les serveurs de bases de données
7
Concepts de base
•
•
•
Niveau interne
• Description du stockage des données au niveau des
unités de stockage, des fichiers, ... On appelle cette
description le schéma interne.
Niveau conceptuel
• Description de la structure de toutes les données qui
existent dans la base, description de leurs propriétés
(relations qui existent entre elles) c'est-à-dire de leur
sémantique inhérente, sans soucis d'implémentation
physique ni de la façon dont chaque groupe de travail
voudra s'en servir. On appelle cette description le
schéma conceptuel.
Niveau externe
• Description pour chaque utilisateur de sa perception
des données. On appelle cette description le schéma
externe ou vue.
Section 4: Les serveurs de bases de données
8
Composants des systèmes de
gestion de bases de données
• La description des données
• L’interrogation des données
• La sauvegarde et la récupération après
pannes
• Les accès concurrents aux données
Section 4: Les serveurs de bases de données
9
Le modèle relationnel
• Les objectifs du modèle relationnel :
• proposer des schémas de données faciles à
utiliser,
• améliorer l'indépendance logique et physique,
• mettre à la disposition des utilisateurs des
langages de haut niveau pouvant éventuellement
être utilisés par des non informaticiens,
• optimiser les accès à la base de données,
• améliorer l'intégrité et la confidentialité,
• fournir une approche méthodologique dans la
construction des schémas.
Section 4: Les serveurs de bases de données
10
Présentation simple du
modèle relationnel
• Les données sont organisées sous forme de
tables à deux dimensions, encore appelées
relations et chaque ligne un tuple
• les données sont manipulées par des opérateurs
de l'algèbre relationnelle
• l'état cohérent de la base est défini par un
ensemble de contraintes d'intégrité.
Section 4: Les serveurs de bases de données
11
Définitions
• Domaine
• Ensemble de valeurs.
• Relation
• Sous-ensemble du produit cartésien d'une liste de
domaines caractérisé par un nom.
En d'autres termes, une relation n'est ni plus ni moins
qu'une table dans laquelle chaque colonne correspond
à un domaine et porte un nom ce qui rend leur ordre
sans aucune importance.
• Attribut
• Colonne d'une relation caractérisée par un nom.
Section 4: Les serveurs de bases de données
12
Clé d’une relation
• Une clé de relation est un sous-ensemble
d'attributs qui permet de caractériser tout
enregistrement d'une relation.
• Par définition, une relation est un ensemble de
enregistrements et il ne peut donc pas y avoir deux
enregistrements strictement identiques dans la
même relation.
Section 4: Les serveurs de bases de données
13
Définitions, suite
• Schéma de relation
• Nom de la relation, suivi de la liste des attributs avec
leurs domaines.
• Base de données relationnelles
• Base de données dont le schéma est un ensemble de
schémas de relations et dont les occurrences sont les
tuples de ces relations.
• Système de gestion de bases de données
relationnel
• C'est un logiciel supportant le modèle relationnel, et
qui peut manipuler les données avec des opérateurs
relationnels.
Section 4: Les serveurs de bases de données
14
Opérateurs relationnels
•
Projection
•
•
Restriction
•
•
Opération qui consiste à faire le produit cartésien de deux relations,
puis à supprimer les tuples ne satisfaisant pas une condition portant
sur un attribut de la première relation et sur un attribut de la
seconde.
Union
•
•
Opération qui consiste à supprimer les tuples d'une relation ne
satisfaisant pas la condition précisée.
Jointure
•
•
Opération qui consiste à supprimer des attributs d'une relation et à
éliminer les tuples en double apparaissant dans la nouvelle relation.
Opération portant sur deux relations ayant le même schéma et
construisant une troisième relation constituée des tuples
appartenant à chaque relation. Les tuples en double sont éliminés.
Différence relationnelle
•
Opération portant sur deux relations ayant le même schéma et
construisant une troisième relation dont les tuples sont constitués de
ceux ne se trouvant que dans une seule relation.
Section 4: Les serveurs de bases de données
15
• Intersection:
• Opération portant sur deux relations ayant le même
schéma et construisant une troisième relation dont
les tuples sont constitués de ceux appartenant aux
deux relations.
Section 4: Les serveurs de bases de données
16
Formes normales
• Première forme normale :
• tout attribut contient une valeur atomique.
• Deuxième forme normale :
• 1 + tout attribut n'appartenant pas à une clé ne
dépend pas que d'une partie de cette clé.
• Troisième forme normale :
• 2 + tout attribut n'appartenant pas à une clé ne
dépend pas d'un attribut non clé.
• Forme normale de BOYCE-CODD :
• Une relation est en Forme normale de BOYCECODD (BCNF) si, et seulement si, les seules
dépendances fonctionnelles sont celles dans
lesquelles une clé détermine un attribut.
Section 4: Les serveurs de bases de données
17
Exemple
• Tables non normalisées
• Un champ contenant <Prénom Nom>
• Non respect de 1
• Un champ adresse contenant 2 attributs
• <Prénom Nom>
• <adresse civique, ville, pays, code postal>
• Non respect de 1
• <code produit>, <description du
produit>, <code couleur>, <description
de la couleur en anglais>
• Non respect de 3
Section 4: Les serveurs de bases de données
18
• Un magasin entrepôt
• Shipping and keeping unit-sku
• Produit sur une tablette ou en entrepôt
• Code de type de produit:
• téléviseur
• <Code de type de produit>, <numéro
sku>, <code couleur>, <description du
produit>, <description de la couleur>
• La colonne <description de la
couleur> dépend de l’attribut non
clef <code couleur>
Section 4: Les serveurs de bases de données
19
Tables normalisées
• <sku>, <code produit>, <code
couleur>
• <code produit>, <description du
produit>
• <code couleur>, <description de
la couleur en anglais>
Section 4: Les serveurs de bases de données
20
Les serveurs de bases
de données
• Existent depuis longtemps déjà
• Joue un rôle majeur dans les
systèmes de commerce
électronique
• Presque tous basés sur le
modèle relationnel
Section 4: Les serveurs de bases de données
21
Tables relationnelles
ItemId
Item
Aw222
Washer A
300
Ntr444
Nut A
2009
Edt666
Spanner S
802
Bt555qw
Bolt B
200
Clef
Section 4: Les serveurs de bases de données
NoInStock
Chaque ligne
contient des
données
associées
22
SQL
• « Structured Query Language »
• En existence depuis longtemps
• Utilisé pour créer, modifier,
retrouver les données des
tables relationnelles
• Standard
Section 4: Les serveurs de bases de données
23
Un exemple
Select EmployeeName, Salary From Employees WHERE Salary>3500
Nom de la table
Noms des colonnes
Condition
Section 4: Les serveurs de bases de données
24
SQL
Le langage sql (Structured Query
Language) comprend à lui seul
l'ensemble des instructions nécessaires
à la spécification et à l'utilisation d'une
base de données relationnelle.
C'est un langage de type déclaratif c'està-dire que l'on spécifie les propriétés
des données que l'on recherche et pas,
comme dans un langage impératif,
comment les retrouver.
Section 4: Les serveurs de bases de données
25
Normalisation
• Le langage ANSI-sql est un langage normalisé, 3
versions
• SQL89 (SQL1)
• SQL92 (SQL2)
• SQL99 (SQL3)
• la version de la norme la plus connue est la
deuxième, sql-92.
• La troisième version de la norme intégre, entre
autres, la notion de types abstraits algébriques; on
la désigne sous le nom de sql3.
Section 4: Les serveurs de bases de données
26
SQL: C'est à la fois :
un langage d'interrogation de données (LID) :
SELECT ;
un langage de manipulation de données
(LMD) :
UPDATE, INSERT, DELETE ;
un langage de definition des données (LDD) :
ALTER, CREATE, DROP;
un langage de contrôle des données et des
utilisateurs (LCD) :
GRANT, REVOKE.
Section 4: Les serveurs de bases de données
27
Remarques
• Beaucoup de systèmes de gestion de données (et
non pas de gestion de bases de données ) sont
vendus comme étant relationnels, souvent parce
qu'ils présentent les données sous forme de tables.
• Un système est dit minimalement relationnel s'il
satisfait aux conditions suivantes :
• toute information dans la base est représentée par
des valeurs dans des tables,
• il n'y a pas de pointeurs visibles par l'utilisateur entre
les tables,
• le système doit supporter au moins les opérateurs
relationnels de restriction, projection, jointure
naturelle.
Section 4: Les serveurs de bases de données
28
Un système est dit complètement
relationnel
• s'il satisfait, en plus, aux conditions suivantes :
• il supporte tous les opérateurs de l'algèbre
relationnelle,
• il supporte la contrainte d'unicité de clé d'une
relation,
• il supporte les contraintes référentielles qui
permettent de s'assurer que la valeur d'une donnée
d'une relation existe dans une autre relation (notion
de foreign key).
Section 4: Les serveurs de bases de données
29
Limite du modèle
• En dépit de sa simplicité et de son élégance le
modèle relationnel n'apporte pas une réponse
satisfaisante à tous les problèmes des applications.
Il faut :
• Pouvoir prendre en compte des "objets" structurés
ainsi que les opérations qui leur sont associées
(bases de données orientées objet).
• Prendre en compte des données peu structurées :
textes, sons, images, graphiques (bases de données
multi-média).
• Faire le pont avec l'intelligence artificielle afin de
pouvoir déduire de nouvelles données à partir de
celles existant déjà (bases de données déductives)
Section 4: Les serveurs de bases de données
30
Le langage SQL
• Ce chapitre expose la partie du langage SQL
permettant de retrouver des informations stockées
dans une base de données.
• Il s'agit, comme cela a déjà été dit, d'un langage
déclaratif dont la syntaxe est très simple (comme
beaucoup de langages de ce type) ce qui permet de
se concentrer sur le problème à résoudre.
• Ces exemples sont bâtis sur une base de données
composée des deux relations suivantes :
• emp (nom, num, fonction, n_sup, embauche, salaire,
comm, n_dept)
• dept(n_dept, nom,lieu)
Section 4: Les serveurs de bases de données
31
Table emp
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
NOM
NUM
MARTIN 16712
DUPONT 17574
DUPOND 26691
LAMBERT 25012
JOUBERT 25717
LEBRETON 16034
MARTIN 17147
PAQUEL
27546
LEFEBVRE 25935
GARDARIN 15155
SIMON
26834
DELOBEL 16278
ADIBA
25067
CODD
24533
LAMERE 27047
BALIN
17232
FONCTION N_SUP
Directeur
25717
administratif 16712
commercial
27047
administratif 27047
president
Commercial 27047
commercial 27047
commercial 27047
commercial 27047
ingénieur 24533
ingénieur 24533
ingénieur 24533
ingénieur 24533
directeur
25717
directeur
25717
administratif 24533
Section 4: Les serveurs de bases de données
EMBAUCHE
23-MAY-90
3-MAY-95
04-APR-88
14-APR-91
10-OCT-82
01-JUN-91
10-DEC-93
03-SEP-83
11-JAN-84
22-MAR-85
04-OCT-88
16-NOV-94
05-OCT-87
12-SEP-75
07-SEP-89
03-OCT-87
SALAIRE COMM
40000
9000
25000
12000
50000
15000
20000
500
22000
2000
23500
1500
24000
20000
21000
30000
55000
45000
13500
N_DEPT
30
30
20
20
30
20
20
20
20
10
10
10
10
10
20
10
32
Table dept
•
•
•
•
•
N_DEPT NOM
10
recherche
20
vente
30
direction
40
fabrication
Section 4: Les serveurs de bases de données
LIEU
Rennes
Metz
Gif
Toulon
33
SELECT
• La commande SELECT constitue, à
elle seule, le langage permettant
d'interroger une base de données.
• Elle permet :
•
•
•
•
de sélectionner certaines colonnes d'une table : c'est l'opération de
projection ;
de sélectionner certaines lignes d'une table en fonction de leur
contenu : c'est l'opération de restriction ;
de combiner des informations venant de plusieurs tables : ce sont les
opérations de jointure, union, intersection,différence relationnelle ;
de combiner entre elles ces différentes opérations.
Section 4: Les serveurs de bases de données
34
Une requête,
•
Ou une interrogation,
• est une combinaison d'opérations portant sur des tables
(relations) et dont le résultat est lui-même une table dont
l'existence est éphémère (le temps de la requête).
Section 4: Les serveurs de bases de données
35
Interroger simplement
une base
• Sélection de colonnes ou projection
• La commande SELECT la plus simple a la
syntaxe suivante :
• SELECT * FROM nom_table ;
• Dans laquelle :
• nom_table
est le nom de la table sur laquelle porte la
sélection.
• *
signifie que toutes les colonnes de la table sont
sélectionnées.
• Par défaut toutes les lignes sont sélectionnées.
Section 4: Les serveurs de bases de données
36
SELECT, suite
• On peut limiter la sélection à certaines
colonnes, en indiquant une liste de noms
de colonnes à la place de l'astérisque.
• SELECT nom_col1, nom_col2, ... FROM nom_table ;
• Exemple : Donner le nom et la fonction de
chaque employé.
• La clause DISTINCT ajoutée derrière la
commande SELECT permet d'éliminer
les duplications.
Section 4: Les serveurs de bases de données
37
Sélection de lignes ou
restriction
• La clause WHERE permet de spécifier quelles
sont les lignes à sélectionner.
• Elle est suivie d'un prédicat qui sera évalué pour
chaque ligne de la table. Les lignes pour
lesquelles le prédicat est vrai seront
sélectionnées.
• La syntaxe est la suivante :
SELECT * FROM nom_table WHERE predicat ;
• Un prédicat n'est ni plus ni moins que la façon
dont on exprime une propriété. Les prédicats,
qu'ils soient simples ou composés, sont
constitués à partir d'expressions que l'on
compare entre elles.
Section 4: Les serveurs de bases de données
38
Expression simple
• Une expression simple peut être :
• une variable désignée par un nom de
colonne,
• une constante.
• Les expressions peuvent être de
plusieurs types :
•
•
•
•
numérique,
chaîne de caractères
date
Autres (monétaire)
Section 4: Les serveurs de bases de données
39
Type de données de
base en SQL
• SMALLINT, INTEGER,
• DECIMAL, FLOAT, DOUBLE,
• DATE, TIME, TIMESTAMP (en
milliseconde)
• CHAR, VARCHAR
• Non défini dans le standard
• Objet binaire (musique, image,
autre)
Section 4: Les serveurs de bases de données
40
Format de constante
•
Constante numérique
• nombre contenant éventuellement un signe, un point décimal
et une puissance de dix. Ex : -10, 2.5, 1.2 E-10
•
Constante chaîne de caractères
• une chaîne de caractères entre apostrophes.
• Ex :'MARTIN' (Attention, une lettre en majuscules n'est pas
considérée comme égale à la même lettre en minuscule).
•
Constante date
• une chaîne de caractères entre apostrophes au format
suivant :
• jour-mois-année
• le jour est sur deux chiffres,
• le mois est désigné par les trois premières lettres de
son nom en anglais,
• l'année est sur deux chiffres.
• Ex : '01-FEB-85'
Section 4: Les serveurs de bases de données
41
Expressions
• On peut, en SQL, exprimer des
expressions plus complexes en
utilisant des opérateurs et des
fonctions
Section 4: Les serveurs de bases de données
42
Prédicat simple (i)
•
•
Un prédicat simple est le résultat de la comparaison de
deux expressions au moyen d'un opérateur de
comparaison qui peut être :
• = égale
• != différent
• < inférieur
• <= inférieur ou égal
• > supérieur
• >= supérieur ou égal
Les trois types d'expressions peuvent être comparés au
moyen de ces opérateurs :
• Pour les types date,
• la relation d'ordre est l'ordre chronologique.
• Pour les types caractère,
• la relation d'ordre est l'ordre alphabétique.
Section 4: Les serveurs de bases de données
43
Prédicat simple (ii)
• Il faut ajouter à ces opérateurs arithmétiques
classiques les opérateurs suivants :
• expr1 BETWEEN expr2 AND expr3
• vrai si expr1 est compris entre expr2 et expr3,
bornes incluses
• expr1 IN (expr2, expr3, ...)
• vrai si expr1 est égale à l'une des expressions
de la liste entre parenthèses
• expr LIKE chaine
• où chaine est une chaîne de caractères pouvant
contenir l'un des caractères jokers :
• _ remplace exactement 1 caractère
• % remplace une chaîne de caractères de longueur
quelconque, y compris de longueur nulle.
Section 4: Les serveurs de bases de données
44
Classer le résultat d'une
interrogation
• Les lignes constituant le résultat d'un SELECT sont
obtenues dans un ordre indéterminé.
• On peut, dans un SELECT, demander que le résultat
soit classé
• un ordre ascendant ou descendant, en fonction
du contenu d'une ou plusieurs colonnes (jusqu'à
16 critères de classement possibles).
• Les critères de classement sont spécifiés dans une
clause ORDER BY dont la syntaxe est la suivante :
• ORDER BY {nom_col1 | num_col1 [DESC] [, nom_col2 |
num_col2 [DESC],...]}
Section 4: Les serveurs de bases de données
45
Classement, suite
• Le classement se fait d'abord selon la première
colonne spécifiée dans l'ORDER BY puis les
lignes ayant la même valeur dans la première
colonne sont classées selon la deuxième
colonne de l'ORDER BY, etc...
• Pour chaque colonne, le classement peut être
ascendant (par défaut) ou descendant (DESC).
• Exemple : Donner tous les employés classés par
fonction, et pour chaque fonction classés par
salaire décroissant
• Remarque : Dans un classement les valeurs NULL
sont toujours en tête quel que soit l'ordre du
classement (ascendant ou descendant).
Section 4: Les serveurs de bases de données
46
Une configuration
typique
Clients
Serveur Web
Section 4: Les serveurs de bases de données
Serveur
de
données
47
Fonctions d’un serveur
de base de données
• Interprèter les instructions SQL
et les exécutent
• Optimiser les requêtes
• Prévenir les erreurs d’accès
concurrents
• Prévenir les étreintes fatales
• Administrer la sécurité
• Gérer les copies de sauvegarde
Section 4: Les serveurs de bases de données
48
Les procédures SQL
• En fait des procédures
• Conserver au serveur SQL
• Une alternative efficace à
l’envoie d’un grand nombre
d’instructions SQL sur le réseau
Section 4: Les serveurs de bases de données
49
Les procédures SQL: le
pour et le contre
Pour
• Plus efficaces dans le temps de traitement
• Réduisent le trafic réseau
• Garde le code des données proche de la
base de données
Contre
• Elles sont non standard
• L’optimisation doit être refaites quand les
données et leur accès changent
Section 4: Les serveurs de bases de données
50
L’intégrité référentielle
(i)
• Les tables dans une base de
données doivent être
consistantes entre elles
• Exemple
• Dans une commande:
• le numéro client
• Ce numéro doit exister dans la table
des clients
Section 4: Les serveurs de bases de données
51
L’intégrité référentielle
(ii)
• Associée avec les règles d’affaires
• Deux façons de réaliser l’intégrité
référentielle
• Par déclaration dans les schémas de la
base de données
• Par des procédures activées par des
événements
• Ajout, modification d’un enregistrement
Section 4: Les serveurs de bases de données
52
Implémentation
• L’intégrité référentielle
déclarative est maintenue par
les déclarations dans les
schémas de la base de données
• L’intégrité référentielle
procédurale est maintenue par
le code des procédures SQL
Section 4: Les serveurs de bases de données
53
Le pour et le contre
Procédurale
Déclarative
• Non-standard
• Les procédures
sont éparpillées au
travers du système
• Des
implémentations
ont des limites sur
le nombre de
procédures
• Auto-documentée
• Standard
Section 4: Les serveurs de bases de données
54
Serveur Relationnel
Clients
Pilote
SQL
API
Logiciel
Serveur
Base de
données
Communications
Protocoles
Section 4: Les serveurs de bases de données
55
Les composantes
• L’API fournit l’environnement de
travail au programmeur
• Le pilote communique les énoncés
SQL au logiciel serveur
• Le logiciel de communication gère
les protocoles du côté serveur
• L’interprête SQL traduit les requêtes
SQL en logique serveur
• Le serveur exécute les requêtes
Section 4: Les serveurs de bases de données
56
Base de données
distribuées
• Les bases de données sont réparties sur
plusieurs serveurs dans un système
distribué
• Les bases de données sont distribuées
• Pour des raisons de performance
• Conserver les données proches des clients
• Pour la fiabilité
• Conserver une copie des données
• Pour l’héritage des développements passés
• Les systèmes ont été développés en succession ou
en parallèle
Section 4: Les serveurs de bases de données
57
Problème des systèmes
distribués
• Conserver les données dupliquées à jour
• S’assurer que les accès concurrents
conservent une base de données
distribués dans un état correct
• L’accès sécurisé aux données
• Plusieurs points d’accès
• Plusieurs fuites possibles
• La fiabilité
• Une seule des copies en panne fait arrêter tout
le système
• La synchronisation de l’horloge
Section 4: Les serveurs de bases de données
58
Modèles de distribution
• Photocopie (Snapshot)
• Périodiquement écrire les données à une
base de données distante
• Copie vivante
• Conserver des jeux de données
identiques en synchronisme
• Fragmentation
• Partager des données entre plusieurs
sites
Section 4: Les serveurs de bases de données
59
Type de fragmentation
(i)
• Fragmentation horizontale
• Les tables distribuées ont les mêmes
colonnes que la table originale (la
table logique)
• Les enregistrements d’une table
logique sont partagées entre
plusieurs machines
• Souvent séparés logiquement, par
valeur d’attribut
• Données d’une succursale dans le serveur
de la succursale
Section 4: Les serveurs de bases de données
60
Type de fragmentation
(ii)
• Fragmentation verticale
• Les colonnes d’un même
enregistrement logique sont
séparées
• Sémantiquement
• Les tables sont distribuées selon
leur domaine
Section 4: Les serveurs de bases de données
61
Java Database
Connectivity (i)
• Aussi appelé JDBC
• Driver
• Pilote,
• utilisé du côté client pour communiquer
avec une base de données relationnelles
• Statement
• Un énoncé SQL
• PreparedStatement
• Un énoncé SQL compilé
• CallableStatement
• Une procédure exécutable
Section 4: Les serveurs de bases de données
62
Java Database
Connectivity (ii)
• Connection
• Pour gérer la connexion à une base de
données
• ResultSet
• Collection de données résultat d’une
requête
• DatabaseMetaData
• Meta-données, Données sur une base de
données
• DriverManager
• Gère les connexions à une base de
données
Section 4: Les serveurs de bases de données
63
Étape d’un code
• Charger le bon pilote
• Établir/Réutiliser une connexion à
une base de données
• Associer un énoncé SQL avec cette
connexion
• Exécuter cet énoncé
• Traiter le résultat de cette requête
• Fermer la connexion
Section 4: Les serveurs de bases de données
64
Charger le pilote
//Set the name of the file that is to be accessed
//and the name of the driver
String fileURL = “...”;
String driverName = “...”;
try
{
// Load in the driver programmatically
Class.forName(driverName);
}
catch (ClassNotFoundException cfn)
{
//Problem with driver, display error message and
//return to operating system with status value 1
System.out.println(“Problem loading driver”);
System.exit(1);
}
Section 4: Les serveurs de bases de données
65
Établir la connexion
try
{
//Establish a connection to the database, second
//argument is the name of the user and the third
//argument is a password (blank)
Connection con =
DriverManager.getConnection(fileURL, “Darrel”,””);
Section 4: Les serveurs de bases de données
66
Créer et exécuter un
énoncé SQL
// Create a statement object
Statement selectStatement =
con.createStatement();
// Execute the SQL select statement
ResultSet rs =
selectStatement.executeQuery
(“SELECT name, salary FROM
employees WHERE salary >35000");
Section 4: Les serveurs de bases de données
67
Traiter le résultat
String employeeName;
int employeeSalary;
while(rs.next())
{
employeeName = rs.getString(1);
employeeSalary = rs.getInt(2);
System.out.println(“Name = “+ employeeName +
“Salary = “+ employeeSalary);
}
Section 4: Les serveurs de bases de données
68
Fermer
//Close down the database connection, result set
//and the SELECT statement
selectStatement.close();
con.close();
rs.close();
Section 4: Les serveurs de bases de données
69
Meta données
• Données à propos des données
• Peut être des données sur la
base de données, un résultat, ou
un pilote
• Java contient des classes qui
facilite l’extraction et la
manipulation de ces données
Section 4: Les serveurs de bases de données
70
Un exemple
Obtenir les données sur le pilote:
Son nom et son numéro de version
Connection c;
// Code to establish a connection
DatabaseMetaData dmd = c.getMetaData();
System.out.println(“Driver is ”+ dmd.getDriverName() +
“ Version number = “+dmd.getDriverVersion());
Section 4: Les serveurs de bases de données
71
Modèle trois tier avec
une base de données
Clients
Objets
d’affaire
Base de
données
relationnelle
Traduction
Section 4: Les serveurs de bases de données
72
Traduction Java et table
SQL
• Classes
• Traduites en tables
• Instance
• Traduite en un enregistrement
• Variables d’instance, ou attributs
• Traduites en colonnes
Section 4: Les serveurs de bases de données
73
Exemple de traduction
prédéfinie
• CHARACTER, VARCHAR,
LONGVARCHAR en objet Java String
• INTEGER en int
• NUMERIC en objet
java.math.BigDecimal
• DATE, TIME, TIMESTAMP en objet
java.sql.Date, Time et Timestamp
Section 4: Les serveurs de bases de données
74
Références, en français
•
Voir Association d'entraide des développeurs
francophone - Cours SQBD et SQL
• http://www.developpez.com/sgbd/cours.htm
•
Voir BD et SGBD – SQL
• http://wwwlsi.supelec.fr/www/yb/poly_bd/sql/tdm_sql.html
Section 4: Les serveurs de bases de données
75
Références, en anglais
• SQL Tutorial
• http://www.1keydata.com/sql/sql.html
• JDBC Tutorial
• http://java.sun.com/docs/books/tutorial/jdbc/
• http://java.sun.com/products/jdk/1.1/docs/guide/jdbc/ge
tstart/mapping.doc.html#1008141
Section 4: Les serveurs de bases de données
76
Téléchargement