Outils en Informatique - TP Bases de Données élémentaires DE1 TP N°3 : Compléments sur la création d’une base de données et sur les requêtes Les questions et manipulations ci-dessous portent BD_Test_TD1.mdb, que vous avez créée précédemment. I. sur la base de données Complément sur la création de base de données : définition des contraintes d’unicité Cette section va vous indiquer comment créer des contraintes d’unicité multi-attributs. Une contrainte d’unicité mono-attribut (ne portant que sur un seul attribut) permet de vérifier que les valeurs d’un attribut sont uniques, c’est-à-dire que chaque valeur de l’attribut n’apparaît qu’une seule fois dans la colonne correspondante. Chaque valeur de l’attribut est unique. Par défaut, tout attribut clé primaire est unique. Lorsque vous avez défini vos clés primaires lors du TP N°1, ACCESS a automatiquement mis à jour la propriété Indexé en lui donnant la valeur Oui – sans doublon (cf. Question 1 du TP N°1). Lorsque vous choisissez d’indexer un attribut (non clé primaire) sans doublon vous définissez une contrainte d’unicité sur cet attribut. 1. Reprendre la relation Cours, créée lors du TP N°1, et définir une contrainte d’unicité sur l’attribut Intitulé (On ne veut pas deux intitulés de même nom pour deux cours différents). § Une contrainte d’unicité multi-attributs porte sur plusieurs attributs (A1, A2,…,An) et permet de vérifier l’unicité des ensembles de valeurs (v1, v2,…,vn) où vi est la valeur de l’attribut Ai. Pour plus de clarté, prenons l’exemple de la relation Telephones, créée lors du TP N°1. Si vous avez choisi comme clé primaire de cette relation (table) le couple (RefEtudiant,Numero), alors par défaut le couple est unique. Par exemple, le couple (123456,06 72 34 45 67), indiquant que l’étudiant de numéro de carte 123456 a comme téléphone le numéro 06 72 34 45 67, ne peut apparaître qu’une seule fois dans la table. En revanche, si vous avez choisi comme clé primaire de la relation Telephones, un attribut numérique s’incrémentant automatiquement, alors il est possible de créer deux nuplets avec le même couple (RefEtudiant,Numero), car ce couple n’est pas défini comme unique. Les étapes suivantes vont permettre de définir une contrainte d’unicité sur ce couple d’attributs. 2. Reprendre la relation (table) Telephones et, si ce n’est pas déjà fait, choisir ou définir une clé primaire correspondant à un numéro s’incrémentant automatiquement. 3. Insérer deux nuplets avec le même étudiant et le même numéro de téléphone. Aucun message d’erreur ne doit être affiché si vous avez bien défini la clé primaire comme indiqué précédemment. 4. Supprimer ensuite un des deux nuplets ajoutés. Université Paris-Dauphine 1/4 Outils en Informatique - TP Bases de Données élémentaires 5. DE1 Revenir en mode Création pour la relation (table) Telephones et cliquer sur l’icône . Une fenêtre de la forme de celle de la Figure 1 doit s’afficher. Cette fenêtre indique l’existence de trois index. Le deuxième index s’appelle PrimaryKey (pour clé primaire en anglais), porte sur l’attribut N° et ordonne les valeurs de cet attribut par ordre croissant. Il est créé par défaut par Access sur l’attribut clé primaire de la relation Telephones. Le troisième index s’appelle RefEtudiant, porte sur l’attribut de même nom. Il a été crée lorsque dans le TP N°1 vous aviez choisi d’indexer l’attribut RefEtudiant avec doublons. Le premier a été créé par défaut par access, sans raison valable apparente. Figure 1 - Fenêtre de création d'index de la relation Telephones. Rappel : un index est une structure de données qui accélère l’accès aux données. Un index de base de données ressemble un peu à un index de livre. L’index à la fin d’un livre indique, pour chaque mot-clé, les pages du livre où apparaît ce mot-clé. Un index de base de données indique, pour chaque valeur de l’attribut indexé, quels sont les nuplets correspondants. Supposons que l’on recherche les nuplets contenant les numéros de téléphone de l’étudiant numéro 12345. Sans index, Access doit lire chaque nuplet de la relation Telephones pour vérifier si l’attribut RefEtudiant a pour valeur 12345. Avec l’index, Access sait exactement quels sont les nuplets ayant 12345 comme valeur de l’attribut RefEtudiant. Voir transparents 26 et 27 du cours. 6. Dans la fenêtre Index, sur une ligne vierge et dans la colonne Nom de l’index, inscrire ContrainteUnicité. Il s’agit du nom de l’index que l’on va créer pour préciser que le couple (RefEtudiant,Numero) doit être unique. Dans la colonne Nom du champ sur la même ligne, sélectionner RefEtudiant dans la liste. Sur la ligne du dessous, toujours pour la colonne Nom du champ (laissez la colonne Nom de l'index vierge au niveau de cette ligne), sélectionner Numero. 7. Cliquer sur le nom de votre index (ContrainteUnicité) et dans le bas de la fenêtre, sélectionner Oui pour la propriété Unique – voir Figure 2. Vous venez de créer une contrainte d’unicité multi-attributs portant sur le couple d’attributs (RefEtudiant,Numero). Université Paris-Dauphine 2/4 Outils en Informatique - TP Bases de Données élémentaires DE1 Figure 2 - Création d'une contrainte d'unicité pour le couple (RefEtudiant,Numero) de la relation Telephones. 8. Insérer maintenant un nuplet avec les même valeurs pour le couple d’atributs (RefEtudiant,Numero) qu’un nuplet existant dans votre relation Telephones. Si vous avez bien défini votre contrainte d’unicité multi-attributs, un message d’erreur doit s’afficher. II. Requête « complexe » Cette section complète le TP N°2. A. Requête de sélection 9. Insérer deux nuplets dans la relation Cours correspondant à un cours d’Analyse et un cours d’Algorithmique. 10. Insérer deux nuplets dans la relation Notes pour le même étudiant de telle sorte que cet étudiant ait 14 en note d’examen de Session 1 d’Analyse et 12 en note d’examen de Session 1 d’Algorithmique. Insérer également deux autres nuplets dans la relation Notes : un pour un autre étudiant ayant eu 14 en note d’examen de Session 1 d’Analyse (mais pas 12 en note d’examen de Session 1 d’Algorithmique), et vice-versa. 11. Créer une requête permettant de sélectionner le nom et le prénom des étudiants ayant eu 14 en note d’examen de première session en Analyse et 12 en note d’examen de première session en Algorithmique. Rappel : un nuplet a une et une seule valeur pour chaque attribut. Astuce : il va peut-être falloir créer des sous-requêtes pour écrire celle demandée. B. Requête d’ajout Une requête d’ajout permet d’ajouter des nuplets dans une relation (table), à partir des données d’une relation de la même base de données ou d’une autre base de données. Pour tester le fonctionnement des requêtes d’ajout, prenons l’exemple suivant. On suppose que la base de données BD_Test_TD1.mdb est utilisée par le secrétariat du département MIDO. On suppose que le CRIO Informatique possède sa propre base de données dans laquelle une relation (table) LoginsACreer contient les numéros de carte, les noms et prénoms Université Paris-Dauphine 3/4 Outils en Informatique - TP Bases de Données élémentaires DE1 des étudiants pour lesquels il faut créer des comptes sur les machines du CRIO. Vous allez créer une requête d’ajout permettant d’ajouter des nuplets dans la relation LoginsACreer de la base de données du CRIO à partir des données issues de la relation Etudiants de la base de données que vous avez créée précédemment. Les étapes à suivre sont les suivantes : 12. Créer une nouvelle base de données, intitulée par exemple BD_CRIO.mdb. 13. Créer dans cette base de données, une relation LoginsACreer contenant les attributs suivants : § Une clé primaire de type entier s’incrémentant automatiquement § Un attribut NumeroCarte de type Numérique § Un attribut Nom de type Texte § Un attribut Prenom de type Texte 14. Retourner dans la base de données BD_Test_TD1.mdb. 15. Créer une nouvelle requête en mode Création. 16. Sélectionner la relation Etudiants dans la fenêtre Ajouter une table et fermer la fenêtre Ajouter une table. 17. 18. Dans le menu Requêtes, sélectionner Requête Ajout. Dans la fenêtre qui apparaît (voir Figure 3), indiquer, dans Nom de fichier, le nom de la base de données que vous avez créée à l’étape 12, en précisant le chemin d’accès1 complet, BD_CRIO.mdb, et dans Nom de la table sélectionner le nom de la relation LoginsACreer (qui apparaît après que vous avez indiqué le nom de l’autre base de données). Figure 3 - Fenêtre de destination des données ajoutées. 19. Sélectionner les attributs NumeroCarte, Nom et Prenom de la relation Etudiants (comme pour une requête de sélection) et sélectionner les noms d’attributs correspondant dans la ligne Ajouter à (au-dessus des critères de recherche). 20. Exécuter la requête. 21. Vérifier dans la relation LoginsACreer de la base de données BD_CRIO.mdb que les nuplets ont bien été insérés. 1 Le chemin d’accès complet correspond à la liste des répertoires où trouver le fichier depuis le répertoire racine de la machine (C:\ pour le répertoire racine du disque C ou D:\ pour le répertoire racine du disque D) Ex. D:\MAUDE\COURS\POLY_06_07\BD\L1\FichiersACCESSTP\BD_CRIO.mdb Université Paris-Dauphine 4/4