TD3 - Normalisation + LDD

Inès de Courchelle

Durée : 1h30

Consignes :

Durant ce TD l’utilisation d’un papier et d’un crayon est fortement conseillé !

Objectifs :

  • Appliquer des règles génériques de validité de données (Normalisation)
  • Utiliser mySQL pour la première fois
  • Créer le squelette d’une base de données (LDD)

Attention :

  • L’ensemble des exercices ci-dessous ne seront pas tous corrigés en cours !
  • Les éléments de correction seront donnés en TD, EN AUCUN CAS, des corrections toutes faites vous serons données ou distribuées. Vous devez prendre des notes !

Exo 1 - Normalisation

Travailler(#idEmploye, anneeEncours, anneeDebutEmploi, specialites)

  1. En quelle forme normale est cette relation ? Pourquoi ?
  2. Si elle n’est pas en 3ème forme normale (3FN), expliquez les éventuels problèmes et proposez une décomposition qui permet de la rendre en 3FN

Exo 2 - Prendre en main mySQL

Objectif : Création d’un utilisateur qui n’est pas root

Pourquoi ?

Il ne faut surtout pas modifier une BD en mode root

Comment ?

  1. Ouvrir un terminal
  2. Vérifier que le service mysql est lancé
  3. Lancer mysql en root
  4. Créer un nouvel utilisateur
  5. Quitter mysql
  6. Tester la connextion avec le nouvel utilisateur

1- Ouvrir un terminal

2- Vérifier que le service mysql est lancé

sudo service mysql status

S’il n’est pas lancé :

sudo service mysql start

Vérification :

sudo service mysql status

3- Lancer mysql en root

sudo mysql -u root -p

Le mot de passe ROOT par defaut est : cytech0001

4- Créer un nouvel utilisateur

CREATE USER 'r2d2'@'localhost' IDENTIFIED BY 'r2d2';
  • Ici, la commande créé un user qui a pour login r2d2
  • dont le mot de passe est r2d2
  • ATTENTION :
    • les côtes -> ’ sont obligatoires
    • et le point virgule -> ; est obligatoire

Pas de panic - Si vous avez l’erreur suivante à la création du USER

Solution

mettre un mot de passe un peu plus compliqué

RE essayer de créer un nouvel utilisateur

CREATE USER 'r2d2'@'localhost' IDENTIFIED BY 'mdp!anakin<3';

Donner les priviléges au nouvel utilisateur

GRANT ALL PRIVILEGES ON *.* TO 'r2d2'@'localhost';
  • Ici, la commande donne tous les droits d’accès
  • au user -> r2d2

5- Quitter mysql

exit

6- Tester la connextion avec le nouvel utilisateur

mysql -u r2d2 -p

Tips !

  • NE PAS OUBLIER LE USER QUE L’ON VIENT DE CRÉER

  • Trouver un identifiant et mdp que l’on oublie pas
  • Utiliser un identifiant et un mdp identique
  • Exemple :
    • login : ines
    • mdp : ines
  • Prendre un identifiant et mdp non confidentiel
  • Pourquoi ? Vous serez amené à l’écrire en clair dans des fichiers de configuration, notamment en programmation web

Créer un script

  1. Ouvrir son éditeur de texte préféré
  2. Enregistrer le fichier avec l’extension .sql
  3. Ouvrir le terminal
  4. Placer vous à l’endroit ou vous avez enregistré votre fichier
  5. Lancer mysql
  6. Entrer la commande :
source <nom_du_fichier>.sql

Quelques commandes utiles !

  • create database < nom de la bd >;
  • show databases;
  • use < nom de la bd >;
  • show tables;
  • describe < nom de la table >;
  • show create table < nom de la table >;

Exo 3 - Médiathèque

Nous considèrons le MLD suivant :

Realisateur(idRealisateur,nom,prenom)

Acteur(idActeur,nom,prenom)

Film(idFilm,titre,dateF,duree,#idRealisateur)

Jouer(#idActeur,#idFilm,personnage)

  1. Créer un fichier appelé mediatheque.sql permettant de créer la base de données << Mediatheque >>
  2. Exécuter le script mediateque.sql permettant de créer la base de données
  3. Quels mots clés dois-je rajouter pour supprimer la base de données si elles existes déjà ?
  4. Indiquer dans le script que vous allez utiliser cette base de données
  5. Créer les différentes tables (attention : ne pas oublier les clés primaires et étrangère)
  6. Mettre comme date par défaut la date du système pour la table Film
  7. Rendre obligatoire les informations, titre, duree, nom, prenom
  8. Vérifier que la durée d’un film est supérieur à 30 min.
  9. Reconstituer le MCD correspondant

Exo 4 - Gestion Personnel

Nous considèrons le MLD suivant :

Service(idService,nom)

Produit(idProduit,appelation)

Employe(idEmploye,nom,prenom,#idService)

Fabriquer(#idEmploye,#idProduit,dateDeRealisation)

  1. Créer un script permettant de créer la base de données << Manufacture >>
  2. Exécuter le script permettant de créer la base de données
  3. Quels mots clés dois-je rajouter pour supprimer la base de données si elles existes déjà ?
  4. Indiquer dans le script que vous allez utiliser cette base de données
  5. Créer les différentes tables (attention : ne pas oublier les clés primaires et étrangère)
  6. Reconstituer le MCD correspondant