Bases de données
Au menu : Vocabulaire Le modèle relationnel Types de bases de données Implémentation libre : MySQL Le SQL (Simple Query Language) Administration d'un SGBD Sécurité des SGBD
Vocabulaire 1/2 Base de données : collection de données interreliées. SGBD : système de gestion de bases de données. Définition des la base de données (types d'objet à stocker) Construction de la base de données (stockage des données proprement dites) Manipulation des données (ajout / suppression / modification / consultation)
Vocabulaire 2/2 Le modèle de données ensemble de concepts permettant de décrire la structure d'une base de données Le modèle le plus employé est le modèle relationel Le schéma de base de données : descrption des données à gérer Une extension de la base de données : image des données à l'instant t
Le modèle relationnel 1/11 Représente l'information dans une collections de relations Concept de table : Numéro d'étudiant Nom Prénom 0089852213 Dupont Pierre 1202505501 Denis Thierry
Le modèle relationnel 2/11 Colonne : type de données (schéma) Ligne : collection de données => une entité du monde réel Une ligne est souvent appelée nuplet Notion de clé primaires Une clé primaire est un attribut du nuplet Sa valeur est unique (numéro de sécurité sociale) au sein de la table
Le modèle relationnel 3/11 Création d'une table Méthode merise Projection des attributs de la classe (objet) à stocker Une base de données est une collection de tables On met en place des relations (requêtes) entre les differentes tables
Le modèle relationnel 4/11 Ces realtions peuvent être : Séléctions Unions Intersections... Entre differentes tables
Le modèle relationnel 5/11 Notions de forme normales 1ère forme normale Chaque attribut des entités contient une valeur atomique (non composée) Problème : Produit Télévision Fournisseur SYNO, SANGSUM
Le modèle relationnel 6/11 Solution : Produit Télévision Télévision Fournisseur SYNO SANGSUM
Le modèle relationnel 7/11 2e forme normale Relation en première forme normale où chaque attribut qui n'appartient pas à la clé (l'ensemble des attributs permettant d'identifier de manière unique un tuple de l'entité) ne dépend pas uniquement d'une partie de la clé Problème : Produit Fournisseur Adresse Télévision LCD SYNO Rue de l'impasse Télévision SANGSUM 16 Rue du Bois Télévision LCD SANGSUM 16 Rue du Bois
Le modèle relationnel 8/11 Solution Produit Télévision LCD Télévision Télévision LCD Fournisseur SYNO SANGSUM SANGSUM Fournisseur SYNO SANGSUM Adresse Rue de l'impasse 16 Rue du Bois
Le modèle relationnel 9/11 3e forme normale Relation en deuxième forme normale où les attributs qui ne font pas partie de la clé ne dépendent pas d'attributs ne faisant pas non plus partie de la clé (les attributs sont donc complètement indépendants les uns des autres) Problème : Fournisseur Adresse Ville Pays SYNO Rue de l'impasse Paris France SANGSUM 16 Rue du Bois Londres Angleterre
Le modèle relationnel 10/11 Solution : Fournisseur Adresse Ville SYNO Rue de l'impasse Paris SANGSUM 16 Rue du Bois Londres Ville Paris Londres Pays France Angleterre
Le modèle relationnel 11/11 FNBC : forme normale de Boyce Codd Respecte la forme normale de Boyce Codd, la relation respectant la troisième forme normale et dont tous les attributs non clé ne sont pas source de dépendance fonctionnelle (DF) vers une partie de la clé Le non respect de la 2FN, 3FN et la FNBC entraîne de la redondance : une même information étant répétée un nombre considérable de fois Ajout d'un attribut identifiant non corellé avec la valeur des autres attributs faisant office de clé primaire
Types de base de données 1/2 Base de données texte plat Base de comptes Unix Documents XML... Base de données d'objets BerkleyDB Utilisé derrière OpenLDAP (implémentation d'annuaire)
Types de bases de données 2/2 Base de données relationelles standalone SQLite Utilisable en locale sur la machine Base de données relationelles réseau MySQL, Postresql... Architecture client / serveur
Implémentation libre : MySQL 1/2 Modèle client serveur Base de donnée relationelle Un serveur mysqld communicant : Soit par un socket local Soit par un socket réseau (port 3306/TCP par défaut) Un client mysql
Implémentation libre : MySQL 2/2 Elément essentiel des plates formes LAMP (Linux Apache Mysql PHP) Notions de cluster HA (High Availibilty) et LB (Load Balancing) Journaux de transaction
SQL (présentation) Simple Query Language Langage de manipulation des nuplet commun aux SGBD relationnels Des variantes peuvent cependant apparaître d'un SGBD à l'autre (support ou non des requêtes imbriquées, auto incrémentations de clés primaires etc.)
SQL (synthaxe) 1/4 CREATE CREATE DATABASE TEST01; CREATE TABLE test (id INT not null AUTO_INCREMENT, prenom VARCHAR (50) not null, nom VARCHAR (50) not null, ne_le DATE not null, ville VARCHAR (90), enfants INT, PRIMARY KEY (id));
SQL (synthaxe) 2/4 INSERT / UPDATE INSERT INTO test VALUES (1,'Nicolas','GRENECHE','2009-01-19',' Orléans',0);
SQL (synthaxe) 3/4 SELECT SELECT * FROM test WHERE nom='greneche';
SQL (synthaxe) 4/4 Beaucoup plus compliqué en pratique : Optimisation des requêtes Extensions propres aux differents moteurs de SGBD Implémentations des differents schémas de données (ex : cartouches spatiales, entrepôts de données etc.) DBA, C'est un métier à part entière!
Administration d'un SGBD Arrêt / redémarrage Reprise sur incident Sauvegarde Gestion des utilisateurs Aspects réseau Tuning / Performances Système d'exploitation sous jascent
Sécurité des SGBD Exposition du SGBD (périmètre système et réseau) Chiffrement / Authentification des échanges DoS (Denial of Service) Gestion des utilisateurs : Mots de passe faibles ACL (Access Control List) inapropriées Valeur des données stockées