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 inter­ relié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 Fournisseur Télévision SYNO, SANGSUM Le modèle relationnel 6/11 ● Solution : Produit Fournisseur Télévision SYNO Télévision 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 Fournisseur Télévision LCD SYNO Télévision SANGSUM Télévision LCD SANGSUM Fournisseur Adresse SYNO Rue de l'impasse SANGSUM 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 Pays Paris France Londres 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 ● ● Chiffrement / Authentification des échanges ● DoS (Denial of Service) ● Gestion des utilisateurs : ● Exposition du SGBD (périmètre système et réseau) – Mots de passe faibles – ACL (Access Control List) inapropriées Valeur des données stockées