\chapter{Introduction}

\section{Définitions}

Une base de données, c'est collection de données qui reflète un aperçu du monde
réel.

Le SGBD c'est tout le système logiciel qui gére au moins une base de
données. Il peut être mono ou multi-utilisateur (plutôt multi).

Les plus utilisés~:
\begin{itemize}
  \item Oracle
  \item Microsoft SQL Server
  \item IBM db2
  \item Sybase
  \item ...
\end{itemize}

\begin{itemize}
  \item PostgreSQL
  \item MySQL
\end{itemize}

En Français, on appelle \textbf{banque de données} une base de données et le
système de gestion ainsi que ses services associés.

\section{Objectifs et fonctions d'un SGBD}

Un SGBD sert principalement à séparer les données du programme dans le but
d'armoniser les données. On ne veut pas de redondances des données (partage
limité au niveau des fichiers, problèmes de cohérences globale (stocker deux
informations contradictoires)).\\

Le SGBD s'occupe de la gestion du stockage et assure l'interface entre les
programmes et les données. L'accès se fait au moyen d'un langage déclaratif, on
appelle cela une requête.

Les requêtes sont regroupées en transations qui sont atomiques (tout est
exécuté ou rien).

\begin{itemize}
  \item \textbf{Indépendance des programmes aux données~:} d'un point de vue du
    développeur, on ne sait pas où les données sont stockées ni comment elles
    le sont.
  \item \textbf{Simplicité~:} utilisation d'un langage non procédural.
  \item \textbf{Efficacité des accès aux données~:} temps de réponse proche
    d'une application dédiée. Les débits globaux sont très bons maintenant.
  \item \textbf{Partage et sécurité~:} multi-utilisateurs avec des droits très
    fins. Tout le monde ne peut pas faire des modifications ou lire
    toutes les données.\\
    Gestion de la concurence des transactions.
  \item \textbf{Conception facilité des applications~:} sauvegarde facilité des
    données. Redondance contrôlée des données.
  \item \textbf{Facilité de l'administration des SGBD~:} conception visuelle
    des BDD, outils d'audit et de tunning, statistiques, \ldots
\end{itemize}

\subsection{Langages des SGBDs}

\subsubsection{Langage de définition des données}

Définition de la base, des tables, les types des champs, etc.

\subsubsection{Langage de manipulation de données}

Il peut être autonome comme SQL ou intégré dans un langage de programmation.

\subsection{Utilisateurs d'un SGBD}

\paragraph{L'utilisateur final} il va effectuer des recherches, accéder à la
base par des interfaces applicatives ou web. Voire utiliser des langages
simples comme QBE.

\paragraph{Le programmeur d'application} Spécialiste SQL, conçoit et implémente
des applications qui accédent à la BD

\section{Architecture d'un SGBD}

Premièrement, on doit avoir un gestionnaire de disques ou de fichiers (si on se
sert du système de fichiers du système). Mais les objectifs ne sont pas les
mêmes, ce n'est pas le bon choix.

La partie interne va gérer la communication, gestionnaire de verrou,
récupération en cas de panne, \ldots

La partie externe va faire l'interface avec les applications.\\


On trouve 4 grands modules~:
\begin{itemize}
  \item \textbf{L'évaluateur de requête~:} parse, planifie, évalue les
    opérateurs, optimisations.
  \item \textbf{Gestion de la concurence~:} gestionnaire des transaction et des
    verrous.
  \item \textbf{Récupération en cas de panne.}
  \item \textbf{Gestion des données~:} gestionnaire de l'espace disque, du
    tampon, méthode d'accès et fichiers.
\end{itemize}

Le \textbf{catalogue} est une base de données contenant des données sur les
bases de données~: type des colonnes, tables, \ldots

\subsection{Objectifs du gestionnaire de transaction}

Il préserve les propriétés \textbf{acid} des transactions~:
\begin{itemize}
  \item Atomicité~: tout est exécuté correctement ou rien (du coup, annuler :D)
  \item Cohérence de la base~: toutes les conditions des tables doivent être
    validées.
  \item Isolation~: on fait comme si l'on était seul dans la base.
  \item Durabilité~: gérer tous les cas de pannes, \ldots
\end{itemize}

Il doit aussi gérer les verrous et les journaux.

\section{Organisation d'une BD}

On distingue trois niveaux~:
\begin{itemize}
  \item Niveau interne~: on a des fichiers dans lesquelles les données sont
    stockées.
  \item Niveau conceptuel~: il s'occupe de la modélisation du monde réel, en
    prennant appuis sur le niveau interne pour regrouper les données.
  \item Niveau externe~: on a des shémas externes, c'est à destination de
    l'utilisateur. Cela ne correspond pas toujours à ce qui est enregistré dans
    les fichiers (prix HT/TTC par exemple).
\end{itemize}

\section{Histoire des SGBD}

\subsection{Modéle hiérarchique (fin des années 60)}

IBM lança IMS. Les associations entre les données sont représentées par un
arbre. Chaque enregistrement possède une clé~; dans l'arbre, chaque
enregistrement a un seul père.

On a beaucoup de redondance d'informations (un même client qui achète deux
produits par exemple).

\subsection{Modèle réseau (années 70)}

Ce modèle a été proposée par Richard Bachman. Elle a été implémentée par
Honeywell sous le nom IDS, standardisée en 1969.

Les associations entre les données sont représentées par un graphe.

Beaucoup de problématique ne sont pas gérées comme la dépendance d'éléments.

\subsection{Modèle relationnel (1970-80)}

C'est Ted Codd qui définit ce modèle lorsqu'il travaillait pour IBM. Il s'en
suit deux projets majeurs~:
\begin{itemize}
  \item \textbf{INGRES~:} à l'université de Berkley. Par la suite PostGreSQL
  \item \textbf{System R.~:} dans un labo d'IBM, qui deviendra le produit DB2
    qui inspira Oracle.
\end{itemize}

Le succès du modèle relationnel tient dans l'implémentation multi-plateforme
car son concurent~: le modèle réseau qui ne fonctionnait que sur les mainframes
d'IBM exclusivement.\\

De nombreux points de Ted Codd ont cependant été abandonnés~: le langage de
base (alpha) était très mathématique et peu adapté. Au final, la première norme
de SQL est parrue en 86.

\subsection{Modèle entité/association}

Proposé par Peter Chen~: chaque enregistrement est une entitée qui sont reliées
entre-elles par des associations. Personne n'a implémenté ces idées, seul
l'outil de modélisation a été conservé.

\subsection{Modèle R++, Relationel++}

Nouvelles briques~: notion d'attribut d'un certain type (couleur issue d'un
ensemble particulier: un domaine), aggrégation, \ldots

Pas non plus de grand succès. Mais le modèle relationel a absorpé pas mal de
concepts.

\subsection{Modèle sémantique}

Notion d'héritage, de classe, de propriétés, poussant le modèle relationnel à
implémenter de la gestion objet.

\subsection{Modèle orienté objet}

Reprise des idées du modèle sémantique. Implémentée par une société française
(O2) par François Bancilhon. Il crée un langage déclaratif OQL.

La compta de l'école est toujours gérée sous Orion \textbackslash{}o/

Le problème de la boîte fut qu'elle soit française~!

\subsection{Modèle relationnel objet}

Débuté avec l'intérêt d'INGRES.\\

C'est actuellement le modèle actuel.

\subsection{Recherches actuelles}

XML, Internet et web, multimédia, aide à la prise de décision, interrogation
par le contenu d'objet multimédia, système d'informations géographique.
