12.01.2015 Views

TP1 : création de BD avec phpmyadmin - IA

TP1 : création de BD avec phpmyadmin - IA

TP1 : création de BD avec phpmyadmin - IA

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>BD</strong> – 1 er semestre – GM5<br />

<strong>TP1</strong> : phpMyAdmin et la <strong>création</strong> <strong>de</strong> tables<br />

Le but <strong>de</strong> ce TP est <strong>de</strong> se familiariser <strong>avec</strong> phpMyAdmin , une interface web codée en php<br />

pour gérer le contenu d’une base MySql. A la fin <strong>de</strong> chaque exercice, exportez l’ensemble<br />

<strong>de</strong>s opérations effectuées sera exporté dans un fichier SQL. C’est ce fichier qui vous<br />

permettra d’avoir une trace <strong>de</strong>s opérations permettant <strong>de</strong> recréer votre base, et qui vous<br />

sera utile pour revoir ce TP.<br />

Exercice 1 (corrigé): 2h30<br />

Connexion :<br />

Connectez-vous à l’interface phpMyAdmin en tapant l’url suivante dans un navigateur :<br />

https://pc84.polytech.upmc.fr/<strong>phpmyadmin</strong>/<br />

Votre login est le même que sous linux et votre mot <strong>de</strong> passe, c’est votre login aussi.<br />

Deux panneaux s’affichent : ils seront toujours visibles. Le panneau <strong>de</strong> gauche est le<br />

gui<strong>de</strong> <strong>de</strong> navigation pour les bases <strong>de</strong> données et les tables. Le panneau <strong>de</strong> droite est<br />

l’espace <strong>de</strong> travail principal où sont gérées les données et où apparaissent les résultats.<br />

Pour revenir à l’accueil, cliquez dans le panneau <strong>de</strong> gauche sur l’image .<br />

Vues :<br />

Dans le panneau <strong>de</strong> droite, nous pouvons être en vue Base <strong>de</strong> données, ce qui nous permet<br />

<strong>de</strong> faire diverses actions sur une base <strong>de</strong> données précise, ou en vue Table où nous avons<br />

accès à plusieurs fonctions pour gérer une table. Chacune <strong>de</strong>s vues comporte un menu en<br />

haut <strong>de</strong> page, contenant <strong>de</strong>s onglets qui conduisent à diverses pages secondaires qui<br />

présentent l’information regroupée par fonction (structure <strong>de</strong> table, privilèges, …).<br />

Création <strong>de</strong> tables :<br />

Le but <strong>de</strong> cette section est <strong>de</strong> créer les tables suivantes et <strong>de</strong> détecter les impossibilités s’il<br />

y en a :<br />

1


<strong>BD</strong> – 1 er semestre – GM5<br />

2


<strong>BD</strong> – 1 er semestre – GM5<br />

1. PhpMyAdmin est une interface graphique web –écrite en php bien sur, qui permet<br />

d’envoyer <strong>de</strong>s instructions SQL au serveur Mysql <strong>de</strong> l’école (installé sur le pc84) via<br />

<strong>de</strong>s formulaires web. PhpMyAdmin affiche l’instruction SQL envoyée dans un<br />

panneau. Pour gar<strong>de</strong>r une trace complète <strong>de</strong> toutes actions,, les instructions SQL que<br />

vous allez générées <strong>de</strong>vront être inscrites au fur et à mesure dans un fichier texte<br />

nommé tp1_ex1.sql (où nom1 et nom2 sont les noms du binôme).<br />

2. Dans le menu déroulant à gauche, vous remarquerez une liste <strong>de</strong> bases <strong>de</strong> données.<br />

Seules celles que vous pouvez réellement consulter montrent qu'elles ont <strong>de</strong>s tables<br />

(nombre entre parenthèses).<br />

Sélectionnez la base i<strong>de</strong>ntifiée par votre login en cliquant sur son nom dans le<br />

panneau <strong>de</strong> gauche.<br />

3. La <strong>création</strong> d’une table se fait en <strong>de</strong>ux temps : 1) <strong>création</strong> <strong>de</strong> la table en indiquant<br />

son nom et le nombre d’attributs qui la composent et 2) information <strong>de</strong>s attributs au<br />

travers d’un écran spécifique. Une fois les champs informés, cliquer sur<br />

« sauvegar<strong>de</strong>r ».<br />

Créez la table STATION(nomStation, capacité, lieu, région, tarif) en renseignant<br />

uniquement le type <strong>de</strong>s champs.<br />

1. Un écran confirmant la <strong>création</strong> <strong>de</strong> la base apparait, <strong>avec</strong> le co<strong>de</strong> sql correspondant,<br />

qui peut alors êre modifié manuellement en cliquant sur « modifier ». Mais il est<br />

également possible <strong>de</strong> modifier un attribut en cliquant le bouton Action correspondant<br />

à un crayon.<br />

Modifier la table STATION <strong>de</strong> telle sorte que les attributs capacité, lieu et tarif soient<br />

toujours connues et que l’attribut nomStation soit la clé primaire.<br />

2. Pour revenir à la vue Base <strong>de</strong> données, cliquez sur le nom <strong>de</strong> la base dans le panneau<br />

<strong>de</strong> gauche.<br />

Créer les tables suivantes, <strong>avec</strong> leurs clés primaires, en spécifiant les options ci<strong>de</strong>ssous<br />

(mais sans spécifier les contraintes <strong>de</strong> clés étrangères pour le moment) :<br />

a. ACTIVITE(nomStation*, libellé, prix)<br />

b. CLIENT(id, nom, prénom, ville, région, sol<strong>de</strong>)<br />

c. SEJOUR(id*, station*, début, nbPlaces)<br />

Les données nom, ville, sol<strong>de</strong> et nbPlaces doivent toujours être connues.<br />

Les montants (prix, tarif et sol<strong>de</strong>) ont une valeur par défaut à 0.<br />

Il ne peut pas y avoir <strong>de</strong>ux stations dans le même lieu et la même région.<br />

Les régions autorisées sont : 'Ocean Indien', 'Antilles', 'Europe', 'Ameriques' et<br />

'Extreme Orient'.<br />

3


<strong>BD</strong> – 1 er semestre – GM5<br />

<br />

<br />

<br />

Le numéro <strong>de</strong> client est auto-incrémenté.<br />

Le prénom du client peut être omis.<br />

Il existe un in<strong>de</strong>x sur les noms <strong>de</strong>s clients.<br />

3. Pour ajouter une contrainte référentielle (FOREIGN KEY), il faut que la table soit <strong>de</strong><br />

type InnoDB. Si cette information n’a pas été donnée au moment <strong>de</strong> la <strong>création</strong> en<br />

choisissant le type <strong>de</strong> la table dans le menu déroulant, il est possible <strong>de</strong> le modifier en<br />

sélectionnant la table, en cliquant dans l’onglet « Opérations » puis en modifiant le<br />

type <strong>de</strong> la table dans le menu correspondant et en cliquant sur « Exécuter ».<br />

Vérifier que vos tables sont bien toutes <strong>de</strong> type InnoDB.<br />

4. Pour ajouter une contrainte référentielle (clé étrangère) dans une table <strong>de</strong> type<br />

InnoDB, il faut sélectionner la table puis cliquer sur le lien « Gestion <strong>de</strong>s relations ».<br />

Seuls les attributs in<strong>de</strong>xés 1 (dont les clés primaires) peuvent participer à une<br />

contrainte référentielle..<br />

Ajouter les options <strong>de</strong> clés étrangères correspondant au schéma décrit plus haut en<br />

choisissant les comportements qui vous semblent le plus cohérent. Par exemple, la<br />

modification d’une station doit entrainer la modification <strong>de</strong> ses activités.<br />

5. Pour insérer <strong>de</strong>s tuples dans une table, sélectionner la table puis cliquer sur l’onglet<br />

« Insérer ». Vous pouvez saisir <strong>de</strong>ux tuples à la fois (le <strong>de</strong>uxième est ignoré si vous ne<br />

remplissez pas ses champs). Pour les valeurs auto-incrémentées, il n’est pas<br />

nécessaire <strong>de</strong> saisir leur valeur. Pour visualiser les tuples insérés, cliquer sur l’onglet<br />

« Afficher ».<br />

Remplissez les tables <strong>avec</strong> les tuples <strong>de</strong> la figure. Toutes les insertions sont-elles<br />

possibles L’ordre <strong>de</strong>s INSERT est important. Pourquoi <br />

6. Pour modifier individuellement un tuple, afficher la table et cliquer sur le crayon dans<br />

les options du tuple.<br />

Modifier la valeur du tarif <strong>de</strong> la station Venusa à 1300.<br />

7. Pour modifier plusieurs tuples d’une table, il faut cliquer sur l’onglet SQL <strong>de</strong> la vue<br />

<strong>de</strong> la table, écrire le co<strong>de</strong> SQL correspondant à l’update et cliquer sur « Exécuter »<br />

Incrémenter <strong>de</strong> 5% les tarifs <strong>de</strong> toutes les stations en une seule comman<strong>de</strong>.<br />

8. Pour supprimer individuellement un tuple, afficher la table et cliquer sur la croix<br />

dans les options du tuple<br />

1 Un attribut in<strong>de</strong>xé est un attribut pour lequel existe un in<strong>de</strong>x permettant d’accé<strong>de</strong>r rapi<strong>de</strong>ment à la donnée via<br />

l’attribut. Les attributs in<strong>de</strong>xés sont les attributs participant à une clé primaire, à une clé secondaire (contrainte<br />

d’unicité) ou tout simplement un attribut pour lequel on a créé manuellement un in<strong>de</strong>x.<br />

4


<strong>BD</strong> – 1 er semestre – GM5<br />

Supprimer <strong>de</strong> la table STATION la station Santalba. Vérifier que toutes ses activités<br />

ont disparu.<br />

9. Exporter une base <strong>de</strong> données consiste en la génération d’un fichier texte dans un<br />

format donné. Pour exporter une <strong>BD</strong> au format SQL, cliquer sur le nom <strong>de</strong> la base<br />

dans le panneau <strong>de</strong> gauche, puis dans l’onglet « Exporter ».<br />

Exporter votre base au format SQL et sauvegar<strong>de</strong>r-là dans un nouveau fichier texte<br />

nommé tp1_ex1_.sql., où nombase est le nom <strong>de</strong> la base. Que contient<br />

ce fichier Est-il i<strong>de</strong>ntique au fichier tp1_ex1.sql Pourquoi A quoi sert d’exporter<br />

une base <br />

10. Pour supprimer complètement une table (le schéma + les données), il faut cliquer sur<br />

le nom <strong>de</strong> la table et choisir l’onglet « Supprimer ».<br />

a. Quelle est la comman<strong>de</strong> <strong>de</strong> suppression d’une table <br />

b. Supprimer toutes les tables. Y’a-t-il un ordre <strong>de</strong> suppression Quelles sont les<br />

comman<strong>de</strong>s SQL générées <br />

Exercice 2 (à rendre) : 1h30<br />

Par la suite, les instructions SQL que vous allez générées <strong>de</strong>vront être inscrites dans un fichier<br />

nommé tp1_nom1_nom2.sql (où nom1 et nom2 sont les noms du binôme) et seront soumises en<br />

fin d’exercice.<br />

Le but <strong>de</strong> cette section est <strong>de</strong> créer les tables suivantes :<br />

5


<strong>BD</strong> – 1 er semestre – GM5<br />

1. Créer les tables :<br />

a. Déduire le schéma, le type <strong>de</strong>s données et les contraintes référentielles<br />

(REFERENCES).<br />

b. Ajouter les contraintes suivantes :<br />

Les données nom_mat, coef doivent toujours être connues.<br />

Il ne peut pas y avoir <strong>de</strong>ux matières dans la même table <strong>avec</strong> le même nom.<br />

Le gra<strong>de</strong> <strong>de</strong>s enseignants peut prendre l’une <strong>de</strong>s valeurs : ‘ASS’, ‘MCF’, ‘PR’.<br />

c. Créer <strong>de</strong>s séquences pour num_mat, num_etu et num_ens (en respectant la valeur<br />

initiale).<br />

2. Créer un in<strong>de</strong>x sur les noms <strong>de</strong>s étudiants.<br />

2. Remplissez les tables <strong>avec</strong> les tuples présentés en début d’exercice.<br />

3. Essayer d’insérer le tuple (6,’Programmation’,3,11) dans la table matieres, est-ce que<br />

l’insertion est possible Pourquoi L’ordre <strong>de</strong>s INSERT est important. Pourquoi <br />

Inscrivez vos réponses en commentaires du fichier tp1_nom1_nom2.sql<br />

4. Modifier la note <strong>de</strong> l'étudiant numéro 1 correspondant à la matière numéro 2 à 13.<br />

5. Augmenter <strong>de</strong> 15% les notes <strong>de</strong> tous les étudiants.<br />

6. Essayer <strong>de</strong> supprimer <strong>de</strong> la table matieres la matière nommée 'Statistiques'. Que se passet-il<br />

et pourquoi Modifier la table notes <strong>de</strong> sorte que les notes relatives à une matière<br />

soient supprimées automatiquement si on supprime la matière <strong>de</strong> la table matieres.<br />

7. L’école souhaite maintenir <strong>de</strong>s statistiques sur le nombre <strong>de</strong> notes données par matière.<br />

Ajouter une colonne nbNote dans la table matiere initialement à 0. Créer une règle telle<br />

que l’ajout d’une note dans la table note modifie la valeur nbNote correspondant dans la<br />

table matieres.<br />

6


<strong>BD</strong> – 1 er semestre – GM5<br />

Soumission du TP<br />

Soumettre votre fichier tp1_nom1_nom2.sql en précisant le sujet suivant :<br />

[GM5-bd] tp1 nom1 nom2<br />

7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!