IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour apprendre les différents types de bases de données et le langage SQL


précédentsommairesuivant

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

Image non disponible

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

 
Sélectionnez
1.
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

livre

cote

titre

BD/46

Les BD en BD

auteur

nom

prénom

année_naissance

Dupont

Jean

1960

Durand

Pierre

1953

écrire

cote

nom

BD/46

Dupont

BD/46

Durand

II-E-2. Exemple en orienté objet

Schéma

 
Sélectionnez
1.
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

 
Sélectionnez
1.
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

 
Sélectionnez
1.
2.
livres = {l1}
auteurs = {a1, a2}

II-E-3. Exemple en XML

 
Sélectionnez
1.
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)>
 
Sélectionnez
1.
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

Image non disponible

II-H-2. Architecture client-serveur

Image non disponible

II-H-3. Architecture trois tiers

Image non disponible

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

Image non disponible

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 :

 
Sélectionnez
1.
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.

précédentsommairesuivant