II. Introduction▲
II-A. Qu'est-ce qu'une base de données ?▲
Une base de données (BD) est un ensemble d'informations archivées dans des mémoires accessibles à des ordinateurs en vue de permettre le traitement des diverses applications prévues pour elles.
L'intérêt d'une BD est de regrouper les données communes à une application dans le but :
- d'éviter les redondances et les incohérences qu'entraînerait fatalement une approche où les données seraient réparties dans différents fichiers sans connexions entre eux ;
- d'offrir des langages de haut niveau pour la définition et la manipulation des données ;
- de partager les données entre plusieurs utilisateurs ;
- de contrôler l'intégrité, la sécurité et la confidentialité des données ;
- d'assurer l'indépendance entre les données et les traitements.
Les bases de données sont gérées par des logiciels spécialisés appelés systèmes de gestion de bases de données (SGBD).
II-B. Le modèle ANSI-SPARC▲
II-C. Schéma conceptuel▲
Le schéma conceptuel est une représentation du monde réel auquel se rapporte la BD.
Principaux concepts :
- entité (ou objet) : une personne, un livre ;
- propriété (ou attribut) : le titre d'un livre, l'adresse d'une personne ;
- association : entre une personne et le livre dont elle est l'auteur ;
- agrégat : une adresse composée d'une rue et d'un code postal ;
- collection : un ensemble de personnes, une liste de prénoms.
II-D. Principaux modèles conceptuels▲
1re génération :
- hiérarchique (IMS d'IBM) ;
- réseau (DBTG CODASYL).
2e génération :
- relationnel ;
- entité-association.
3e génération :
- modèle orienté objet ;
- modèle objet-relationnel ;
- UML.
4e génération (les données du Web)
- XML.
II-E. Exemple▲
Soit une BD décrivant les livres d'une bibliothèque et leurs auteurs.
On suppose qu'un livre est identifié par sa cote et un auteur par son nom.
On se place à l'instant où la bibliothèque contient :
- un seul livre ;
- ayant la cote BD/46 et le titre « Les BD en BD » ;
- écrit par Jean Dupont né en 1960 et Pierre Durand né en 1953.
II-E-1. Exemple en relationnel▲
Schéma
2.
3.
4.
5.
livre(cote: texte, titre: texte)
auteur(nom: texte,
prénom: texte,
année_naissance: entier)
écrire(cote: texte, nom: texte)
Extension
|
|
|
II-E-2. Exemple en orienté objet▲
Schéma
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
classe livre
attribut cote: texte
attribut titre: texte
attribut écrit_par: liste(auteur)
classe auteur
attribut nom: texte
attribut prénom: texte
attribut année_naissance: entier
méthode age(): entier {année_courante - self->année_naissance}
livres: ensemble(livre)
auteurs: ensemble(auteur)
Instances
2.
3.
(l1, {cote = "BD/46", titre = "Les BD en BD", écrit_par = [a1,a2]})
(a1, {nom = "Dupont", prénom = "Jean", année_naissance = 1960})
(a2, {nom = "Durand", prénom = "Pierre", année_naissance = 1953})
Variables persistantes
2.
livres = {l1}
auteurs = {a1, a2}
II-E-3. Exemple en XML▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<!ELEMENT bd
(
livres
,
personnes
)
<!ELEMENT livres
(
livre
*)
>
<!ELEMENT livre
(
cote
,
titre
,
écrit_par
*)
>
<!ELEMENT cote
(
#PCDATA
)
>
<!ELEMENT titre
(
#PCDATA
)
>
<!ELEMENT écrit_par
EMPTY
>
<!ATTLIST écrit_par ref IDREF>
<!ELEMENT auteurs
(
personne
*)
>
<!ELEMENT auteur
(
nom
,
prénom
,
année_naissance
)
>
<!ATTLIST auteur id ID>
<!ELEMENT nom
(
#PCDATA
)
>
<!ELEMENT prénom
(
#PCDATA
)
>
<!ELEMENT année_naissance
(
#PCDATA
)
>
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<bd>
<livres>
<livre>
<cote>
BD/46</cote>
<titre>
Les BD en BD</titre>
<écrit_par
ref
=
"a1"
/><écrit_par
ref
=
"a2"
/>
</livre>
</livres>
<auteurs>
<auteur
id
=
"a1"
>
<nom>
Dupont</nom>
<prénom>
Jean</prénom>
<année_naissance>
1960</année_naissance>
</auteur>
<auteur
id
=
"a2"
>
<nom>
Durand</nom>
<prénom>
Pierre</prénom>
<année_naissance>
1953</année_naissance>
</auteur>
</auteurs>
</bd>
II-F. Schéma externe▲
Un schéma externe représente la façon dont un utilisateur final ou un programme d'application voit la partie de la BD qui le concerne.
Il existe en général plusieurs modèles externes pour une même BD.
Le schéma conceptuel d'une BD peut être complexe : les schémas externes donnent aux utilisateurs une vision plus simple de ce schéma.
Les schémas externes permettent aussi de protéger la BD contre des manipulations incorrectes ou non autorisées, en cachant certaines données à certains utilisateurs.
II-G. Schéma interne▲
Le schéma interne décrit l'organisation des données en mémoire secondaire (sur disque) et la façon d'y accéder.
L'organisation choisie doit permettre :
- d'accéder le plus rapidement possible à un ensemble de données vérifiant certaines conditions ;
- de créer, modifier ou supprimer des données avec une réorganisation minimale et une utilisation optimale de la place disponible.
II-H. Architecture d'un SGBD▲
On distingue trois grands types d'architecture :
- architecture centralisée ;
- architecture client-serveur ;
- architecture trois-tiers.
II-H-1. Architecture centralisée▲
II-H-2. Architecture client-serveur▲
II-H-3. Architecture trois tiers▲
II-I. Langage de bases de données▲
C'est au travers d'un langage déclaratif que sont réalisées la définition et la manipulation d'une BD.
Le plus connu et le plus utilisé de ces langages est SQL.
Modes d'utilisation :
- intégré dans un langage hôte (C, Java…) ;
- autonome.
II-J. Exécution d'une requête▲
II-K. Contrôles▲
Intégrité
- Les données stockées dans une BD doivent respecter un certain nombre de contraintes dites d'intégrité. Un SGBD doit assurer qu'elles sont toujours respectées.
Confidentialité
- Un SGBD doit permettre d'interdire à certaines personnes de réaliser certaines opérations sur une partie ou sur toute la BD.
Concurrence
- Plusieurs utilisateurs se partagent la même BD. Un SGBD doit gérer les conflits qui peuvent se produire lorsqu'ils manipulent simultanément les mêmes données de façon à ce que la BD ne soit pas mise dans un état incohérent.
Reprise après panne
- Après une panne, qu'elle soit d'origine logicielle ou matérielle, un SGBD doit être capable de restaurer la BD dans un état cohérent, le même ou le plus proche de celui précédant la panne.
II-L. Transactions▲
Pour un SGBD, l'unité de traitement est la transaction.
Une transaction est un fragment de programme qui fait passer une BD d'un état cohérent à un autre état cohérent, par une suite d'actions élémentaires.
Un exemple classique de transaction est l'opération qui transfère une somme S d'un compte bancaire A à un compte bancaire B :
2.
3.
4.
début transaction
solde(A) = solde(A) - S
solde(B) = solde(B) + S
fin transaction
Il est clair que cette opération ne doit pas être interrompue entre le débit de A et le crédit de B.
II-M. Indépendance données-traitements▲
L'indépendance données-traitements est indispensable pour pouvoir faire évoluer facilement l'organisation logique ou physique d'une BD ou bien l'architecture matérielle du SGBD qui la gère.
L'indépendance données-traitements permet si elle est atteinte :
- de modifier l'organisation physique (par exemple ajouter un index pour un accès plus rapide) sans modifier le schéma conceptuel ou les programmes d'applications ;
- de modifier le schéma conceptuel (par exemple ajouter un nouveau type d'entité ou d'association) sans modifier les programmes d'applications non concernés par cette modification.
On parle aussi d'indépendance logique et d'indépendance physique.
II-N. Qui intervient sur une BD ?▲
L'administrateur (une personne ou une équipe) :
- Il définit le schéma conceptuel de la BD et le fait évoluer.
- Il fixe les paramètres de l'organisation physique de façon à optimiser les performances.
- Il gère les droits d'accès et les mécanismes de sécurité.
Les programmeurs d'application :
- Ils définissent les schémas externes et construisent les programmes qui alimentent ou exploitent la BD en vue d'applications particulières.
- Ils utilisent pour cela le langage de bases de données du SGBD, éventuellement couplé avec un langage de programmation classique.
Les utilisateurs finaux :
- Ils accèdent à la BD au travers des outils construits par les programmeurs d'applications ou pour les plus avertis au travers du langage de requêtes.