CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES
CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES Objectifs de l enseignement prototyper et créer une base de données simple, à l aide d un outil interactif ; utiliser une application de création et de manipulation de données, offrant une interface graphique, notamment pour créer une base de données simple, ne comportant pas plus de trois tables ayant chacune un nombre limité de colonnes. Les principales capacités développées dans cette partie de la formation sont : utiliser une application offrant une interface graphique pour créer une base de données et l alimenter ; recourir aux concepts des bases de données relationnelles ; traduire les questions posées dans un langage de requête en respectant sa syntaxe ;
CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES
CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES
Une base de données mal conçue peut entraîner des erreurs ensuite lors de son utilisation. Redondance des données Incohérence en modification Anomalie d insertion Anomalie de suppression
C est pourquoi le problème de la conception de bases de données bien formées a été largement étudié et de nombreux travaux ont ainsi permis de mettre au point une théorie permettant de trouver des modèles abstraits fiables.
C est pourquoi le problème de la conception de bases de données bien formées a été largement étudié et de nombreux travaux ont ainsi permis de mettre au point une théorie permettant de trouver des modèles abstraits fiables. Un des modèles les plus utilisés est le modèle entités-associations, présenté par Chen en 1976 (The Entity Relationship Model - Toward A Unified View of Data ), permet une description naturelle du monde réel à partir des concepts d entité et d association. Il établit des méthodologies de conception, c est-à-dire des règles qui permettent en principe d obtenir un modèle correct de la réalité décrite.
C est pourquoi le problème de la conception de bases de données bien formées a été largement étudié et de nombreux travaux ont ainsi permis de mettre au point une théorie permettant de trouver des modèles abstraits fiables. Un des modèles les plus utilisés est le modèle entités-associations, présenté par Chen en 1976, permet une description naturelle du monde réel à partir des concepts d entité et d association. Il établit des méthodologies de conception, c est-à-dire des règles qui permettent en principe d obtenir un modèle correct de la réalité décrite. Il se traduit ensuite de manière naturelle dans le modèle relationnel des bases de données.
C est pourquoi le problème de la conception de bases de données bien formées a été largement étudié et de nombreux travaux ont ainsi permis de mettre au point une théorie permettant de trouver des modèles abstraits fiables. Un des modèles les plus utilisés est le modèle entités-associations, présenté par Chen en 1976, permet une description naturelle du monde réel à partir des concepts d entité et d association. Il établit des méthodologies de conception, c est-à-dire des règles qui permettent en principe d obtenir un modèle correct de la réalité décrite. Il se traduit ensuite de manière naturelle dans le modèle relationnel des bases de données. Il n est pas au programme de l IPT. Nous abordons donc la conception d une base sur un exemple, de manière expérimentale.
2) Exemple CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES 2) Exemple
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité.
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles.
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Réponse possible : il faut identifier chaque repas organisé (attribut date), les plats servis (attribut plat), les invités (attribut invité), les plats préférés de chaque invité (attribut pref).
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas?
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas? Réponse possible : autant que de plats préférés par cette personne. Le nombre d enregistrement à introduire est donc supérieur à 1 et dépend de la personne considérée.
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas? Travail demandé : lister les informations redondantes de la table
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas? Travail demandé : lister les informations redondantes de la table Réponse possible : invité plats préférés, plat servi invités
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas? Travail demandé : lister les informations redondantes de la table Travail demandé : imaginer, sans détailler les attributs, trois relations permettant d éviter redondances. ces
2) Exemple Une personne, amateur(trice) de cuisine, écrit sur un carnet chaque repas qu elle organise, le menu et les invités. Elle veut utiliser son nouvel ordinateur pour remplacer son vieux carnet et compte tenu de la puissance de la machine, se propose de tenir compte des préférences de chaque invité. Travail demandé : faire la liste des attributs que devrait contenir une relation unique pour contenir toutes les données utiles. Travail demandé : combien d enregistrements faut-il créer si l on veut rajouter un convive qui a été oublié à un repas? Travail demandé : lister les informations redondantes de la table Travail demandé : imaginer, sans détailler les attributs, trois relations permettant d éviter redondances. ces Réponse possible : REPAS qui donne la liste des invités qui ont été reçus et à quelle date ; MENU donne le menu servi à chaque date ; PREFERENCE donne pour chaque personne ses plats préférés.
2) Exemple L amateur(trice) de cuisine crée donc une base de données composée de trois relations : REPAS(date, invité) ; MENU(date, plat) ; PREFERENCE(personne, plat). Travail demandé : Ces tables présentent-elles une clé primaire?
2) Exemple L amateur(trice) de cuisine crée donc une base de données composée de trois relations : REPAS(date, invité) ; MENU(date, plat) ; PREFERENCE(personne, plat). Travail demandé : Ces tables présentent-elles une clé primaire? Réponse possible : aucune ne présente de clé primaire. Dans REPAS, la même date correspond à plusieurs personnes, un invité peut être invité plusieurs fois. Dans MENUS, une date correspond à plusieurs plats, un même plat peut être servi à différents repas. Dans PREFERENCES, une personne peut préférer plusieurs plats, un même plat peut être préféré par plusieurs personnes.
2) Exemple CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES 2) Exemple
1) Interface graphique 2) Exemple CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES 2) Exemple 1) Interface graphique
1) Interface graphique 2) Exemple La plupart des SGDB communément utilisés (MySql, Oracle ) ont des interfaces graphiques intégrées permettant de les exploiter «facilement».
1) Interface graphique 2) Exemple La plupart des SGDB communément utilisés (MySql, Oracle ) ont des interfaces graphiques intégrées permettant de les exploiter «facilement». Elles présentent beaucoup d options et sont, de ce fait, assez lourdes à manipuler.
1) Interface graphique 2) Exemple La plupart des SGDB communément utilisés (MySql, Oracle ) ont des interfaces graphiques intégrées permettant de les exploiter «facilement». Elles présentent beaucoup d options et sont, de ce fait, assez lourdes à manipuler. Nous utiliserons par la suite l interface Sqliteman associée au SGDB Sqlite qui a l avantage d être réduite aux opérations essentielles. Elle est installé «en local» sur chaque machine. Ouvrons cette application et lisons son aide en ligne ou le kit de survie.
1) Interface graphique 2) Exemple 2) Manipulation CONCEPTION ÉLÉMENTAIRE DE BASES DE DONNÉES 2) Exemple 1) Interface graphique 2) Manipulation
1) Interface graphique 2) Exemple 2) Manipulation Travail demandé : créer dans votre répertoire personnel une base INVITATION contenant les trois tables REPAS(date: text (formatjj.mm.aa), invite: text), MENUS(date: text (formatjj.mm.aa), plat: text), PREFERENCES(personne: text, plat: text). Y inscrire quelques données.
Bases de données I- Présentation générale d une base III-Remplir une table Remarque : Le format le plus universel des fichiers contenant des données (sans aucun formatage ni décoration) correspond à l extension.csv (Comma Separated Values). C est un fichier de type text où chaque ligne (terminée par le caractère «\n») correspond à un enregistrement à l intérieur duquel les données sont conventionnellement séparées par un caractère unique (qui peut être, suivant les cas, une virgule, un point-virgule, une tabulation ) Ce type de fichier est généré et lu par tous les tableurs (Excel, OpenOfficeCalc, Regressi, ) et SGDB. Il peut facilement être exploité par un langage de programmation (Python, ). C est le format à utiliser pour conserver ou transmettre des données sans imposer le mode (ou le logiciel) de leur utilisation.
1) Interface graphique 2) Exemple 2) Manipulation Travail demandé : après avoir récupéré les fichiers repas.csv, menus.csv, et preferences.csv depuis le répertoire Mes documents/mes groupes/pcsi1/ipt/, importer les données qu ils contiennent dans les tables correspondantes de la base (le caractère de séparation utilisé est le pointvirgule). Répondre aux questions suivantes en utilisant l algèbre relationnelle (les réponses proposées contiennent aussi la traduction en SQL. On pourra les tester dans le logiciel pour se familiariser avec la syntaxe.)
1) Interface graphique 2) Exemple 2) Manipulation Q1 : Quels sont les invités du repas du 03.11.10?
1) Interface graphique 2) Exemple 2) Manipulation Q1 : Quels sont les invités du repas du 03.11.10? Réponse proposée : PROJECTION invite ( SELECTION date= "03.11.10" (REPAS)) en SQL : SELECT invite FROM REPAS WHERE date = "03.11.10"
1) Interface graphique 2) Exemple 2) Manipulation Q2 : Indiquer quelques enregistrements du produit cartésien entre REPAS et PREFERENCES.
1) Interface graphique 2) Exemple 2) Manipulation Q2 : Indiquer quelques enregistrements du produit cartésien entre REPAS et PREFERENCES. Réponse proposée : en SQL : SELECT R.*, P.* FROM REPAS R, PREFERENCES P
1) Interface graphique 2) Exemple 2) Manipulation Q3 : Quelles sont les personnes qui n'ont jamais été invités?
1) Interface graphique 2) Exemple 2) Manipulation Q3 : Quelles sont les personnes qui n'ont jamais été invités? Réponse proposée : PROJECTION personne (PREFERENCES) PROJECTION invite (REPAS) en SQL : SELECT personne FROM PREFERENCES EXCEPT SELECT invite FROM REPAS
1) Interface graphique 2) Exemple 2) Manipulation Q4 : Quels sont les invités qui sont venus à tous les repas?
1) Interface graphique 2) Exemple 2) Manipulation Q4 : Quels sont les invités qui sont venus à tous les repas? Réponse proposée : REPAS PROJECTION date (REPAS) en SQL : SELECT invite FROM REPAS GROUP BY invite HAVING count(*) = (SELECT count(distinct date) FROM REPAS)
1) Interface graphique 2) Exemple 2) Manipulation Q5 : Quels sont les plats qui ont été servis à Alice?
1) Interface graphique 2) Exemple 2) Manipulation Q5 : Quels sont les plats qui ont été servis à Alice? Réponse proposée : PROJECTION plat ( SELECTION invité=alice (REPAS) repas.date=menus.date MENUS) en SQL : SELECT distinct plat FROM REPAS AS R, MENUS AS M WHERE R.date = M.date AND invite ='Alice'
1) Interface graphique 2) Exemple 2) Manipulation Q5 : Quels sont les plats qui ont été servis à Alice? Réponse proposée : PROJECTION plat ( SELECTION invité=alice (REPAS) repas.date=menus.date MENUS) en SQL : SELECT distinct plat FROM REPAS AS R, MENUS AS M WHERE R.date = M.date AND invite ='Alice Après avoir essayé la requête SQL proposée, observer ce qui se passe : si l on enlève les deux mots AS ; si l on enlève l optiondistinct ; si l on remplacedistinct plat par*
1) Interface graphique 2) Exemple 2) Manipulation Q6 : Quels sont les invités qui lors d'un repas ont eu au moins un de leur plat préféré?
1) Interface graphique 2) Exemple 2) Manipulation Q6 : Quels sont les invités qui lors d'un repas ont eu au moins un de leur plat préféré? Réponse proposée : PREFERENCES1(personne1, plat1) <- PREFERENCES PREFERENCES est renommée pour pouvoir faire une jointure avec MENU (sinon un attribut est commun et la jointure sur deux attributs est alors impossible). PROJECTION invité ((MENU REPAS) (invité=personne1 ET plat=plat1) PREFERENCES1) en SQL : SELECT distinct invité FROM REPAS R, PREFERENCES P, MENU m WHERE R.invité=P.personne AND R.Date = M.date AND P.plat = M.plat
Bases de données