Bases de données Licence IRX Bernard Caron 2008-2009 B. Caron Présentation 9 heures de cours 12 heures de TD et TP 1 contrôle de TP de 1h30 1 contrôle Pré-requis : aucun Contact : [email protected] 2 B. Caron déroulement 1 : intro 2 : Dépendances fonctionnelles + TD 3 : Entités Association +TD 4 : Modélisation logique + TD 5 : Langage de manipulation + TD 6 : TP SQL 7 : TP SQL 8 : Exam TP 3 B. Caron Plan du cours Introduction Modélisation conceptuelle Modélisation Logique Description des relations en SQL Pour aller plus loin 4 B. Caron Bibliographie • Pierre Crescenzo http://www.crescenzo.nom.fr/CMBasesDeDonnees/ • Georges Gardarin http://perso.wanadoo.fr/georges.gardarin/ • Sébastien Choplin http://www.laria.u-picardie.fr/~choplin/enseignement/DB_IUP1.pdf • MySQL http://dev.mysql.com/doc/mysql/fr/ 5 B. Caron Introduction • • • • • • • • Exemple Limites des fichiers BD SGBD Propriétés Les types d’utilisateurs Architecture Les différents types de SGBD Historique 6 B. Caron Introduction – exemples • • • • • • • gestion d'entreprise (stocks, personnels, clients…) banques (comptes, emprunts…) systèmes de réservation (avions, trains, spectacles…) bibliothèques, vidéothèques, médiathèques… bureautique (agendas, répertoires, photos, courriers…) géographie (cartes routières, cartes maritimes…) informatique (programmes, documentations…) 7 B. Caron Introduction – exemples • Agence de presse gère ses reportages et les photos associées aux reportages ainsi que les auteurs des photos et des reportages • Un reportage est composé de plusieurs images, d’un auteur et d’un texte ainsi que d’une date de parution. Une image qui peut appartenir à plusieurs reportages est composée de l’image elle-même, de son auteur et d’une date. • Les auteurs des images et des reportages sont définis par leur nom et prénom. • Plusieurs postes informatiques doivent avoir accès à ces informations, sous différents OS pour des usages différents 8 B. Caron Introduction – Limites des fichiers • Application sur chaque poste • Fichiers à partager entre les postes auteurs Exécutable 1 Images Reportages Exécutable 2 Exécutable 3 9 B. Caron Introduction – Limites des fichiers • Problèmes à résoudre – Données • Modifications concurrentes • Peu fiables et redondantes – Maintenance logicielle et matérielle – Evolution • Format propriétaire des fichiers • Format propriétaire de l’accès • Complexité de l’application – Changement de l’application 10 B. Caron Introduction – BD SGBD • Base de donnée et Système de Gestion de Base de Données Base de données SGBD Filtres d’accès Logiciel 1 Logiciel 2 Logiciel 3 11 B. Caron Introduction – BD SGBD • Base de données : ensemble d’informations : – – – – exhaustives, non redondantes, structurées, persistantes 12 B. Caron Introduction – BD SGBD • SGBD, un logiciel : – – – – décrire modifier interroger administrer les données d'une base de données. Son langage d’interrogation est normalisé 13 B. Caron Introduction – BD SGBD • Problèmes résolus – Données • Modifications concurrentes : SGBD s’en charge • Peu fiables et redondantes : SGBD s’en charge – Maintenance : matériel et logiciel SGBD peuvent être changés de manière transparente – Evolution • Format propriétaire des fichiers : SGBD s’en charge • Format propriétaire de l’accès : SGBD s’en charge • Complexité de l’application : normalisation de l’accès – Changement des applications : possible sans changer la bdd Indépendance traitement et données 14 B. Caron Introduction – BD SGBD • Avantages BDD – Information n'est stockée qu'une seule fois – Une seule source d’information pour toutes les applications – Contrôle de l’accès par des vues différentes • Avantages SGBD – – – – – Centralisation des données = intégrité des données Contrôle centralisé de l'accès aux données = Sécurité Traitements puissants = rapidité de développement Traitements non prévus par les applications Indépendance vis-à-vis de la structure physique et logique des données = maintenance facilitée 15 B. Caron Introduction – Propriétés • • • • • • • • La BD doit correspondre à la réalité qu'elle modélise : description des données Pas de redondance d'information dans la BD, physiquement à un seul endroit. Le SGBD doit être indépendant du stockage physique LE SGBD doit posséder des fonctions de consultation et de mise à jour. Le SGBD doit pouvoir gérer plusieurs accès simultanés Accès rapides (améliorations possibles indépendantes de l’application) Toutes les données ne sont pas accessibles à tous les utilisateurs Tolérance aux problèmes matériels, logiciels ou humains. 16 B. Caron Introduction – Types d’utilisateurs • • • • • • • Utilisateurs inconscients Utilisateurs conscients Utilisateurs confirmés requêtes Concepteurs Développeurs d’application Administrateurs de BD Développeurs de SGBD 17 B. Caron Introduction : différents niveaux • Niveau externe : – Environnement de Programmation, Interface conviviales : outils d’aides, de saisie et d’impression • Niveau logique: – Structure des données, consultation et mise à jour. Confidentialité et intégrité des données • Niveau physique : – Mémoire, fichiers, concurrence d’accès, reprises sur pannes, fiabilité 18 B. Caron Introduction - Architecture • Architecture clients/serveur pour les données (2 tiers) Base de données SGBD Filtres d’accès Logiciel 1 Logiciel 2 Logiciel 3 19 B. Caron Introduction - Architecture • Architecture clients/serveur données et Application (3 tiers) Serveur d’applications Base de données Application 1 Application 2 SGBD Application 3 Navigateur WEB Navigateur WEB Navigateur WEB 20 B. Caron Introduction - Différents types de SGBD • SGBD hiérarchique – Données sous forme d’arbre – Utilisation de pointeurs Reportages Reportages_1 Auteur Texte Photo 21 Texte_1 Photos Auteur Image Date Auteur Image Date Auteur Image Date B. Caron Introduction - Différents types de SGBD • SGBD Réseau – Données sous forme de graphe quelconque – Utilisation de pointeurs – Evite la dissymétrie Reportages_1 Texte_1 Photos Auteur Image Date Rep Auteur Image Date Rep 22 B. Caron Introduction - Différents types de SGBD • SGBD Hiérarchique – Dissymétrie (hiérarchique) – Application liée à l’implantation physique (pointeurs) – Pas de partage des données • SGBD Réseau – Application liée à l’implantation physique (pointeurs) – Langage de manipulation complexe 23 B. Caron Introduction - Différents types de SGBD • SGBD relationnel – Tables (lignes colonnes) – Plus de pointeurs – Langage non procédural de manipulation Reportage ( auteur, texte, photos) Photo (auteur,laphoto,date) Reportage, Photo sont des relations 24 B. Caron Introduction - Historique 1961 Premiers systèmes IDS (Integrated Data Storage) modèle réseau 1965 Fichiers et modèle hiérarchique IMS (Information Management System). IMS devient IMS DB/DC (DataBase/DataCom) modèle réseau. 1970 Modèle relationnel 1974 Méthode Merise Entité/Relation 1975 SGBD relationnels expérimentaux : INGRES SGBD fichiers sur micro : dbase 1980 SGBD relationnels commerciaux : Oracle, DB2, MySQL, Postgres 1990 SGBD orientés objet expérimentaux 25 B. Caron Introduction - Modélisation • Nécessité d’utiliser des méthodes de conception de bases de données • Systématiques • Permettent la réutilisation Méthodes les plus possible indépendantes du SGBD Méthodes permettant de décrire le monde réel • • 26 B. Caron Modélisation conceptuelle - les étapes •Etapes de modélisation Monde réel Etape 1 de modélisation conceptuelle •UML •Dépendances fonctionnelles puis Entité/Association Ne dépend pas du SGBD Etape 2 de modélisation logique •Relationnel •Objet Dépend su SGBD 27 Modèle conceptuel Vue 1 Modèle logique Vue 2 Implantation B. Caron Chap 1 : Modélisation conceptuelle • • • • • Etapes de la modélisation Dictionnaire des données Dépendances fonctionnelles Modèle Entité/Association Passage DF vers EA 28 B. Caron Modélisation conceptuelle – les étapes Dictionnaire des données Dépendances fonctionnelles Modèle Entité/Associations 29 B. Caron Mod. conceptuelle – dic. des données Donnée : Information quelconque Suppression des synonymes Vérifier que 2 données différentes ont un nom différent Enlever les données inutiles Enlever les paramètres Enlever les données calculables Donner le domaine des données restantes On peut conserver des données calculables pour des raisons de temps de calcul, mais à faire lors de l’optimisation, à la fin. 30 B. Caron Mod. conceptuelle – dic. des données synonyme inutile paramètre calculable Date naissance Age * Nbre enfants * Nbre Filles Nbre garçons Nombre total d’enfants Couleur des cheveux 31 * Part fiscale enfant * Part fiscale adulte * B. Caron Mod. conceptuelle – dic. des données domaine Date naissance Nbre Filles Nbre garçons 2N-2N-4N 2N 2N 32 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Dépendance fonctionnelle : Lien d’une donnée source vers une donnée cible. Tel que à une source correspond une seule cible • Représentation graphique : Source N° étudiant Cible Nom étudiant Nom de famille Livre emprunté Livre emprunté N° étudiant 33 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Représentation sous forme de matrice : Sources -> V Cibles V Nom étudiant Nom étudiant N° étudiant * 1 N° étudiant * Age 1 Age * 34 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Règles 1 : – Une ligne qui n’est pas une source ne doit avoir qu’un 1 (1 seul antécédent) • Graphiquement : N° étudiant N° INSEE Nom étudiant N° étudiant N° INSEE Nom étudiant 35 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Règles 2 : – Recherche des données isolées (pas de 1 dans une ligne de la matrice) – Combiner 2 sources • Graphiquement : N° étudiant Cours Note 36 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Règles 3 : – Suppression des dépendances implicites • Graphiquement : N° étudiant N° INSEE Nom étudiant 37 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Règles 4 : – Recherche des dépendances entre sources (avec ou sans données associées) – Ajouter une donnée Date • Graphiquement : Appartenance Etudiant Nom étudiant Groupe Nom Groupe 38 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Résumé de la démarche graphique: – Mettre un lien entre les sources et les cibles – Bien vérifier qu’à une source correspond une seule cible – Recherche des données isolées : 2 sources sont nécessaires – Recherche des dépendances entre 2 sources – Suppression des dépendances implicites – Souligner les sources 39 B. Caron Mod. Conceptuelle – Dep. fonctionnelles • Exemple – Une agence de presse gère ses reportages et les photos associées aux reportages ainsi que les auteurs des photos et des reportages – Un reportage est composé de plusieurs images, d’un auteur et d’un texte ainsi que d’une date de parution. Une image qui peut appartenir à plusieurs reportages est composée de l’image elle-même, de son auteur et d’une date. – Les auteurs des images et des reportages sont définis par leur nom et prénom. 40 Num_rep 10N Num_image 12N Num_auteur 5N Texte 10000C Date_rep 2N+2N+4N Date_image 2N+2N+4N Image 1000000C Nom 20C Prénom 20C B. Caron Mod. Conceptuelle – Dep. fonctionnelles Num_rep Num_auteur Prénom Date_Rep Nom Num_image Appartenance Date_image 41 Image B. Caron Mod. Conceptuelle – Entité Association • Entité : – – – – – Objets ou individus du monde réel Plusieurs occurrences de l’objet Nom du type de l’objet Un ou des identifiants (soulignés) Des propriétés Les propriétés viennent du dictionnaire Les identifiants permettent de distinguer de manière unique les occurrences de l’objet = clé Etudiant numero_e nom prénom 42 B. Caron Mod. Conceptuelle – Entité Association Association : – Regroupement entre 2 ou plusieurs entités – On lui donne un nom Etudiant Livre numero_e nom prénom numero_l auteur titre emprunter 43 B. Caron Mod. Conceptuelle – Entité Association – On indique la cardinalité – On peut ajouter des attributs Etudiant numero_e nom prénom (Emprunte) 0..n (est emprunté par) Emprunter emprunter date 0..1 Livre numero_l auteur titre 44 B. Caron Mod. Conceptuelle – Entité Association – L’association de plusieurs entités est possible Livre (est emprunté par) 0..1 Etudiant numero_e nom prénom numero_l auteur titre (Emprunte) Biliothèque 0..n emprunter 0..n numero_b lieu (accueille des emprunteurs) 45 B. Caron Mod. Conceptuelle – DF vers EA Num_rep Auteur Num_auteur Prénom Date_Rep Nom Num_auteur Prénom Nom 0..n 1..1 Reportage Rédiger 0..n Num_image Num_rep Date_rep 0..n Ajout Créer Date_image Image 1..1 Ajout Image Num_image Date_image Image 0..n Une source élémentaire -> identité + clé Une source vers plusieurs cibles elles-mêmes sources -> identité plus clé des cibles Cible terminale -> attribut DF entre identifiants -> Association 46 B. Caron Mod. Conceptuelle – DF vers EA – Autres cas N° étudiant N° cours N° Cours Note Num_auteur Prénom Nom 1..n 1..n Noter Note Etudiant N° étudiant Date_rep 47 B. Caron Chap 2 : Modélisation logique • Modèle relationnel • Passage E-A -> modèle relationnel • Normalisation 48 B. Caron Modélisation logique - Modèle • Modèle relationnel – Mod. Conceptuelle : Entités-Associations – Bdd relationnelles – Normalisé : SQL • Modèle objet – Mod. Conceptuelle : UML – Bdd objet – Normalisé : SQL 49 B. Caron Modélisation logique - Modèle • Produit cartésien D1 X D2 X D3 – D1 D2 D3 : ensembles – les tuples <V1,V2,V3> tels que : V1 D1 , V2 D2 , V3 D3 • Exemple : – D1={Eléphant,Souris} D2={Grand, Petit} D3 = {Mammifère, Oiseau} – <Eléphant, Grand, Mammifère> <Souris, Petit, Mammifère> • Graphiquement : Elephant Souris Grand Petit Mammifère Oiseau 50 B. Caron Modélisation logique - Modèle • Relation : table à 2 dimensions Attribut Collection Nom de la relation Animal Taille Genre Eléphant Grand Mammifère Souris Petit Mammifère 51 B. Caron Modélisation logique - Modèle • Clé : – Un ou plusieurs attributs permettant de distinguer chaque tuple (la connaissance de la clé permet d’identifier un tuple unique) – Toute relation doit posséder une clé – Dans l’exemple, clé : Animal 52 B. Caron Modélisation logique - Modèle • Clé candidate : – – – – Une clé candidate d'une relation est un ensemble minimal des attributs de la relation dont les valeurs identifient à coup sûr une occurrence. La valeur d'une clé candidate est donc distincte pour toutes les occurrences. La notion de clé candidate est essentielle dans le modèle relationnel. Toute relation a au moins une clé candidate et peut en avoir plusieurs. 53 B. Caron Modélisation logique - Modèle • Clé primaire : – La notion de clé primaire est moins importante que celle de clé candidate dans le modèle relationnel. La clé primaire peut être choisie arbitrairement mais le contexte aide souvent à déterminer laquelle des clés candidates doit être considérée comme clé primaire. Pour signaler la clé primaire, ses attributs sont soulignés. – – 54 B. Caron Modélisation logique - Modèle • Clé étrangère – Une clé étrangère d'une relation est formée d'un ou plusieurs de ses attributs qui constituent une clé candidate dans une autre relation on met un # devant l’attribut. 55 B. Caron Modélisation logique - Modèle • Schéma d’une relation Nom de la relation Nom des attributs Les Clés • Notation Liste des attributs – Collection (Animal, Taille, Classification) Nom de la relation 56 Clé primaire : soulignée B. Caron Modélisation logique - Modèle • Clé étrangère – Exemple : Image(Num_image,Date_image,Image Reportage(Num_rep,Date_rep,Texte) Ajout(#Num_rep,#Num_image) Clé étrangère 57 B. Caron Modélisation logique - Passage E-A -> Mod. R • • Entité correspond Association Relation correspond Association si aucune cardinalité maximale 1 Si clé : conservée, sinon on concatène les clé des entités associées Auteur Num_auteur Prénom Nom 0..n 1..1 Reportage Rédiger 0..n Num_rep Date_rep 0..n Image(Num_image,Date_image,Image) Reportage (Num_rep,Date_rep) Auteur (Num_auteur, Prénom,Nom) Ajout (Num_rep,Num_image) Créer 1..1 Ajout Image Num_image Date_image Image Clé formée des 2 attributs 0..n 58 B. Caron Modélisation logique - Passage E-A -> Mod. R • Relation correspond Association avec cardinalité maximale 1 on ajoute à la relation (correspond à la card. 1) comme attribut la clé de la relation qui a une cardinalité >1 Auteur Num_auteur Prénom Nom 0..n 1..1 Reportage Rédiger 0..n Num_rep Date_rep Image(Num_image,Date_image,Image, Num_auteur) Reportage (Num_rep,Date_rep,Num_auteur) Auteur (Num_auteur, Prénom,Nom) Ajout (Num_rep,Num_image) 0..n Créer 1..1 Ajout Image Num_image Date_image Image 0..n 59 B. Caron Modélisation logique - Normalisation • Première forme normale (1NF): – Un attribut d’une relation ne doit pas pouvoir prendre plusieurs valeurs – Solution : créer une autre relation – Exemple : Machine(Num_machine,Date_instal, logiciel) Devient : Machine(Num_machine,Date_instal) logiciel(Num_Logiciel, Num_machine) 60 B. Caron Modélisation logique - Normalisation • Deuxième forme normale (2NF) – Un attribut qui ne fait pas partie de la clé candidate ne doit pas être dépendent d’une partie de la clé. – Toute clé candidate a un seul attribut est forcément 2NF – Solution : créer une relation pour enlever l’attribut – Exemple : Fournisseur (NomFourn, Article, Adresse, Prix) NomFourn, Article Prix et NomFourn Adresse (manque Article) Devient : Fournisseur (NomFourn, Adresse) Produit (NomFourn, Article, Prix) 61 B. Caron Modélisation logique - Normalisation • Deuxième forme normale (2NF) – Exemple correct : Ajout (Num_rep, Num_photo, date, Num_personne) – Astuces : Éviter les clés à 2 attributs Éviter d’autres attributs que ceux de la clé 62 B. Caron Modélisation logique - Normalisation • Troisième forme normale (3NF) : – chacun des attributs d’une relation qui ne fait pas partie de la clé élémentaire est en dépendance fonctionnelle élémentaire directe de la clé (pas de transitivité). – Solution : 2 relations – Exemple : EMPLOYE (Matricule, Nom, Dep, NomDep) Matricule Dep NomDep Devient EMPLOYE (Matricule, Nom, Dep) EMPLOYE (Dep, NomDep) 63 B. Caron Modélisation logique - Normalisation • Relations de l’exemple : Image(Num_image,Date_image,Image, Num_auteur) Reportage (Num_rep,Date_rep,Num_auteur) Auteur (Num_auteur, Prénom,Nom) Ajout (Num_rep,Num_image) Toutes 3NF (et donc 2NF et 1NF) La première étape de modélisation conceptuelle par les DF doit normalement aboutir à des relations 3NF. Il existe d’autres formes normales 64 B. Caron Chap 3 : SQL • • • • • Introduction Description des relations Modification des relations Manipulation des données Interrogation 65 B. Caron SQL - Introduction • • • • Il existe de nombreux langages, SQL est le plus répandu SQL = Structured Query Language (langage de requête structuré). Normalisation internationale et en constante évolution Utilisés dans de nombreux produits : – – – – Oracle SQL server (Microsoft) Mysql … 66 B. Caron SQL - Introduction • SQL permet de supprimer créer modifier des relations dans une base de données : langage de description des données • SQL permet de supprimer créer modifier des occurrences dans une relation : langage de manipulation des données • SQL basée sur l’algèbre relationnelle sur laquelle SQL réalise des opérations d’interrogation : langage d’interrogation des données • • • l’algèbre relationnelle ne sera pas étudiée ici On utilisera MySQL qui est un sous ensemble et ne respecte pas complètement la syntaxe SQL Manuel de référence : http://dev.mysql.com/doc/mysql/fr/index.html • Manuel de la version 4.1 : http://www.nexen.net/docs/mysql/annotee/manual.php 67 B. Caron SQL – description des relations Image(Num_image,Date_image,Image, Num_auteur) Reportage (Num_rep,Date_rep,Num_auteur) Auteur (Num_auteur, Prénom,Nom) Ajout (#Num_rep,#Num_image) Classique pour une clé CREATE DATABASE agence Image(Num_image,Date_image,Image, Num_auteur) CREATE TABLE Image(Num_image INTEGER AUTO_INCREMENT, Date_image DATE, Image BLOB, Num_auteur INTEGER, RAW en SQL PRIMARY KEY (NUM_image)) 68 B. Caron SQL – description des relations Reportage (Num_rep,Date_rep,Num_auteur) CREATE TABLE Reportage( Num_rep INTEGER AUTO_INCREMENT, Date_rep DATE, Num_auteur INTEGER, PRIMARY KEY (Num_rep)) Auteur (Num_auteur, Prénom,Nom) CREATE TABLE Auteur(Num_auteur INTEGER AUTO_INCREMENT, Prenom CHAR(20), Nom CHAR(20), PRIMARY KEY (Num_auteur)) 69 B. Caron SQL – description des relations Ajout (#Num_rep,#Num_image) CREATE TABLE Ajout(Num_rep INTEGER, Num_image INTEGER, PRIMARY KEY (Num_rep, Num_image)) Clé étrangère inexistante en MySQL Selon le format de la table 70 B. Caron SQL – modification des relations Ajout (#Num_rep, #Num_image, date) ALTER TABLE Ajout ADD Date_aj DATE Ajout (#Num_rep,#Num_image) ALTER TABLE Ajout DROP Date_aj Suppression d’une table : DROP TABLE Ajout Suppression d’une base : DROP DATABASE Agence 71 B. Caron SQL – Manipulation des données Auteur (Num_auteur, Prénom,Nom) Ajout d’un tuple : INSERT INTO Auteur VALUES (NULL, 'Jean', 'Blanc') Modification d’un tuple UPDATE Auteur SET Prenom='Paul' WHERE Prenom='Jean' Suppression d’un tuple DELETE FROM Auteur WHERE Prenom='Paul'" 72 B. Caron SQL – Interrogation des données INSERT INTO auteur VALUES (NULL, 'Jean', 'Blanc'), (NULL,'Claude','Blanc'), (NULL,'Jean-Claude','Blanc'), (NULL,'Jean','Noir'), (NULL,'Claude','Noir') SELECT * FROM auteur 73 B. Caron SQL – Interrogation des données SELECT * FROM auteur WHERE NOM= 'Noir' SELECT * FROM auteur WHERE NOM= 'Noir' AND PRENOM= 'Jean' 74 B. Caron SQL – Interrogation des données reportages (Num_rep,Date_rep,Num_auteur) INSERT INTO reportages VALUES (NULL, '2005-08-31', '1'), (NULL, '2005-06-25', '2'), (NULL, '2005-06-01', '2'), (NULL, '2005-03-01', '3'), (NULL, '2005-03-01', '3') SELECT * FROM reportages 75 B. Caron SQL – Interrogation des données image(Num_image,Date_image,Image, Num_auteur) INSERT INTO image VALUES (NULL, '2004-08-31', 'xxx', '2'), (NULL, '2004-06-25', 'xxx', '5'), (NULL, '2005-03-08', 'xxx', '3'), (NULL, '2005-02-05', 'xxx', '4'), (NULL, '2005-02-05', 'xxx', '1') SELECT * FROM images 76 B. Caron SQL – Interrogation des données ajout (#Num_rep,#Num_image) INSERT INTO ajout VALUES ('1', '2'), ('1', '3'), ('2', '1'), ('2', '2'), ('3', '4') SELECT * FROM ajout 77 B. Caron SQL – Interrogation des données • Jointure de tables (partagent une clé) select auteur.nom from auteur,reportage where auteur.Num_auteur=reportage.Num_auteur 78 B. Caron Pour aller plus loin • Optimisation • Clés étrangères 79 B. Caron Pour aller plus loin – Optimisation • SELECT * FROM auteur WHERE nom = 'BLANC' – Le SGBD regarde toutes les lignes pour retrouver tous les 'BLANC‘ – Temps de réponse très lent • Création d’un index dans la table CREATE TABLE Auteur(Num_auteur INTEGER AUTO_INCREMENT, Prenom CHAR(20), Nom CHAR(20), PRIMARY KEY (Num_auteur), Index (Nom)) – Le SGBD crée en mémoire des blocs disques – Ils contiennent des couples : index, numéro de bloc – Accès plus rapide mais : • Modification plus lente (création blocs et couples) • Prend plus de place 80 B. Caron Pour aller plus loin – Optimisation • Utiliser les types les plus compacts possibles (TINYINT, MEDIUMINT,INT) • N’utiliser des SELECT que sur les attributs utiles. Exemple on veut les prénoms : SELECT PRENOM FROM auteur WHERE NOM= 'Noir' Préférable à : SELECT * FROM auteur WHERE NOM= 'Noir' 81 B. Caron Clés étrangères Reportage (Num_rep,Date_rep,Num_auteur) CREATE TABLE Reportage( Num_rep INTEGER AUTO_INCREMENT, Date_rep DATE, Num_auteur INTEGER, PRIMARY KEY (Num_rep)) TYPE=InnoDB Image(Num_image,Date_image,Image, Num_auteur) CREATE TABLE Image(Num_image INTEGER AUTO_INCREMENT, Date_image DATE, Image BLOB, Num_auteur INTEGER, PRIMARY KEY (NUM_image)) TYPE=InnoDB Ajout (#Num_rep,#Num_image) CREATE TABLE Ajout(Num_rep2 INTEGER, Num_image2 INTEGER, FOREIGN KEY (Num_rep2) REFERENCES reportage(Num_rep), FOREIGN KEY (Num_image2) REFERENCES image(Num_image) ) TYPE=InnoDB 82 B. Caron