Programme
1. Généralités sur les bases de données
1.1. Le concept de bases de données
1.1.1. Les fichiers et leurs limites
1.1.2. La définition d’une base de données
1.1.3. Les différents modèles de bases de données
1.2. Le système de gestion de bases de données
1.2.1. Les fonctions d’un SGBD
1.2.2. Accès aux données
1.3. Architecture d’un SGBD
1.3.1. Niveau conceptuel
1.3.2. Niveau interne
1.3.3. Niveau externe
1.3.4. Langages et modèles de données LDD, LMD, LCD
2. Le modèle Entité - Association
2.1. Définitions et généralités
2.2. Les concepts
2.3. Démarche de conception du MEA (Entité-Association)
3. Présentation du modèle réseau
3.1. Généralités
3.2. Les concepts
4. Modèle à objets
4.1. Généralités
4.2. Les concepts
2
1.1. Le concept de bases de données
3
système informatique. Elle organise l'information qu'elle contient en tables, en
champs (les colonnes) et en enregistrements (les lignes).
4
Figure 1-1. Modèle de données hiérarchique
Les inconvénients récurrents sont toujours la forte dépendance entre les
données stockées et les méthodes d’accès. Les chaînages internes impliquent
forcément une programmation complexe. Outre ces problèmes de
programmation, ce modèle montre des lacunes lors de l’accès à la base.
5
qu’une usine à gaz gavée de pointeurs. Pour preuve, plus personne n’utilise
de tels SGBD où la dépendance entre les données stockées et les méthodes
d’accès existe toujours, et l’évolution d’une base de données est très coûteuse
en termes de recompilation de pointeurs.
Le modèle relationnel
En 1970, E. Codd publie l’article de référence posant les bases du modèle
relationnel. D’un seul coup, toutes les limitations des précédents modèles sont
résolues. Le but initial de ce modèle était d’améliorer l’indépendance entre les
données et les traitements. Cet aspect des choses est réussi et avec ça d’autres
fonctionnalités apparaissent :
Normalisation (dépendances fonctionnelles) et théorie des ensembles
(algèbre relationnelle).
Cohérence des données (non-redondance et intégrité référentielle).
Langage SQL (déclaratif et normalisé).
Accès aux données optimisé (choix du chemin par le SGBD).
Indexation, etc.
6
Les liens entre les enregistrements de la base de données sont réalisés non pas
à l’aide de pointeurs physiques, mais à l’aide des valeurs des clés étrangères
et des clés primaires. Pour cette raison, le modèle relationnel est dit « modèle
à valeurs ».
8
Modèle de données orienté colonnes
Le modèle orienté colonnes ressemble à une table dénormalisée (sans la
présence de NULL, toutefois) dont la structure est dynamique. Les SGBD les
plus connus sont HBase (implémentation du BigTable de Google) et
Cassandra (projet Apache qui reprend à la fois l’architecture de Dynamo
d’Amazon et BigTable).
9
Figure 1-8. Modèle de données en graphes
11
Rôles
On crée un rôle auquel on attribue des droits. Puis on attribue des rôles à des
utilisateurs ou connexions.
Rôles prédéfinis :
- Rôles serveur : Administration du serveur, configuration des paramètres
niveau serveur, exécution de certaines procédures stockées et d’ajout des
serveurs liés, gestion des connexions serveur, gestion des traitements au
sein du serveur, création ou modification des bases de données, gestion des
fichiers sur le disque, exécution d’instruction BULK INSERT.
- Rôles base de données : propriétaire base de données, ajout et suppression
des utilisateurs de base de données, utilisation d’instruction SELECT,
utilisation des instructions (INSERT, UPDATE et DELETE), des
opérations sur les objets de base de données, gestion des éléments de
sécurité sur la base de données, utilisation des backups, Interdit
l’instruction SELECT, Interdit l’écriture sur la base de données.
Rôle créer par utilisateur
12
1.3.1. Niveau conceptuel
On précise à ce niveau les tables, les relations entre tables, les contraintes
d'intégrité, les vues et les droits par groupe d'utilisateurs. Ce niveau concerne
l'administrateur et les développeurs.
13
1.3.4. Langages et modèles de données LDD, LMD, LCD
Type de données
INTEGER : permet de stocker des entiers signés codés sur 4 octets.
BIGINT : permet de stocker des entiers signés codés sur 8 octets.
14
REAL : permet de stocker des réels comportant 6 chiffres significatifs codés sur
4 octets.
DOUBLE PRECISION : permet de stocker des réels comportant 15 chiffres
significatifs codés sur 8 octets.
NUMERIC[(précision, [longueur])] : permet de stocker des données
numériques à la fois entières et réelles avec une précision de 1000 chiffres
significatifs. Longueur précise le nombre maximum de chiffres significatifs
stockés et précision donne le nombre maximum de chiffres après la virgule.
CHAR(longueur) : permet de stocker des chaînes de caractères de longueur fixe.
Longueur doit être inférieur à 255, sa valeur par défaut est 1.
VARCHAR(longueur) : permet de stocker des chaînes de caractères de longueur
variable. Longueur doit être inférieur à 2000, il n’y a pas de valeur par défaut.
DATE : permet de stocker des données constituées d’une date.
TIMESTAMP : permet de stocker des données constituées d’une date et d’une
heure.
BOOLEAN : permet de stocker des valeurs Booléenne.
MONEY : permet de stocker des valeurs monétaires.
TEXT : permet des stocker des chaînes de caractères de longueur variable.
Contraintes
Contraintes de colonne
NOT NULL ou NULL: interdit (NOT NULL) ou autorise (NULL)
l’insertion de valeur NULL pour cet attribut.
UNIQUE: désigne l’attribut comme clé secondaire de la table. Deux n-
uplets ne peuvent recevoir des valeurs identiques pour cet attribut, mais
l’insertion de valeur NULL est toutefois autorisée. Cette contrainte peut
apparaître plusieurs fois dans l’instruction.
PRIMARY KEY: désigne l’attribut comme clé primaire de la table. La
clé primaire étant unique, cette contrainte ne peut apparaître qu’une
seule fois dans l’instruction. La définition d’une clé primaire composée
15
se fait par l’intermédiaire d’une contrainte de table. En fait, la contrainte
PRIMARY KEY est totalement équivalente à la contrainte UNIQUE
NOT NULL.
REFERENCES table [(colonne)] [ON DELETE CASCADE]:
contrainte d’intégrité référentielle pour l’attribut de la table en cours de
définition. Les valeurs prises par cet attribut doivent exister dans
l’attribut colonne qui possède une contrainte PRIMARY KEY ou
UNIQUE dans la table. En l’absence de précision d’attribut colonne,
l’attribut retenu est celui correspondant à la clé primaire de la table
spécifiée.
CHECK (condition): vérifie lors de l’insertion de n-uplets que
l’attribut réalise la condition.
DEFAULT valeur: permet de spécifier la valeur par défaut de l’attribut.
Contraintes de table
PRIMARY KEY (colonne, …): désigne la concaténation des attributs
cités comme clé primaire de la table. Cette contrainte ne peut apparaître
qu’une seule fois dans l’instruction.
UNIQUE (colonne, …): désigne la concaténation des attributs cités
comme clé secondaire de la table. Dans ce cas, au moins une des colonnes
participant à cette clé secondaire doit permettre de distinguer le n-uplets.
Cette contrainte peut apparaître plusieurs fois dans l’instruction.
FOREIGN KEY (colonne, …) REFERENCES table [(colonne, …)]
[ON DELETE CASCADE | SET NULL]: contrainte d’intégrité
référentielle pour un ensemble d’attributs de la table en cours de définition.
Les valeurs prises par ces attributs doivent exister dans l’ensemble
d’attributs spécifié et posséder une contrainte PRIMARY KEY ou
UNIQUE dans la table.
CHECK (condition): contrainte permet d’exprimer une condition qui doit
exister entre plusieurs attributs de la ligne.
16
Langage de manipulation de données - LMD
Le langage de manipulation de données est l’ensemble des commandes
concernant la manipulation des données dans une base de données. Il permet
l’ajout, la suppression et la modification de lignes, la visualisation du contenu des
tables et leur verrouillage.
17
SELECT : cette clause permet de spécifier les attributs que l’on désire
voir apparaître dans le résultat de la requête.
FROM: cette clause spécifie les tables sur lesquelles porte la requête.
WHERE: cette clause permet de filtrer les n-uplets en imposant une
condition à remplir pour qu’ils soient présents dans le résultat de la
requête.
GROUP BY : cette clause permet de définir des groupes
HAVING : cette clause permet de spécifier un filtre (condition de
regroupement des n-uplets) portant sur les résultats.
UNION, INTERSECT et EXCEPT : cette clause permet d’effectuer
des opérations ensemblistes entre plusieurs résultats de requête
ORDER BY : cette clause permet de trier les n-uplets du résultat
18