L’utilisation des bases de données

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

L’utilisation des bases de données Application à MySQL

Introduction Ce cours doit vous permettre de : Découvrir ce qu’est une base de donnée Découvrir comment créer une base de données sans trop de redondance Découvrir comment interroger une base de donnée MySQL Ce cours ne vous permettra pas : De bien comprendre les mécanismes sous-jacent Savoir faire une base de donnée optimisée D’avoir le BTS sans approfondir le sujet (tester, poser des questions…), tout comme pour les sockets

Qu’est ce que c’est que ça? Un peu de vocabulaire… Une base de donnée peut être vue comme un ensemble de tableaux Excel : Chaque fichier Excel est une table Une ligne d’une table est un enregistrement (ou tuple) Une colonne d’une table est un attribut

Donc c’est quoi ? Une base de donnée, c’est un ensemble de tables, et chaque table contient de l’information stocké sous forme de tuple. Exemple : base de donnée de l’ORT : Une table eleve Une table classe Une table matiere Une table note

Comment organiser les tables Prenons l’exemple précédent, et imaginons qu’on veuille stocker les notes de tous les élèves : On utilise la table note, et on met les attribut suivants : Nom Prenom NomMatière Note

Exemple 1 Nom Prenom NomMatiere Note Lelore Thibault Informatique 19 17 Français 8 Mathématique 15 Différents problèmes : Perte de place : on répète 4 fois le nom et le prénom, ainsi que le nom de la matière… Modification : Si on veux modifier le nom, il faut le faire partout ! Suppression : Si on supprime une note, on peut aussi supprimer un nom !

Comment organiser les tables Mieux : on utilise eleve, matiere et note : eleve Nom Prenom Adresse Telephone Zeset Degs 10 rue Dsf 0630525659 Edzts Freddy 5 rue Ggds Matiere Note Nom Enseignant Informatique Lelore Français Autre NomEleve NomMatiere Note Zeset Informatique 15 Edzts 5

Problèmes Pas parfait : Que se passe t’il si on a deux élèves avec le même nom ? Que se passe t’il si on modifie le nom d’un élève ? eleve Nom Prenom Adresse Telephone Zeset Degs 10 rue Dsf 0630525659 Edzts Freddy 5 rue Ggds Matiere Note Nom Enseignant Informatique Lelore Français Autre NomEleve NomMatiere Note Zeset Informatique 15 Edzts 5

Solution Lorsque l’on fait une table, il faut décider d’une clé Une clé est un attribut qui est unique dans toute la table. Il ne peut pas y avoir 2 tuple avec la même valeur Généralement, c’est un numéro, mais ça peut être n’importe quoi.

Règles et conseils Pour bien faire : Utiliser une clé numérique (un identifiant) Ne pas hésiter à découper une table en deux : Dans l’exemple suivant, le modèle détermine la marque et la puissance. On peut alors créer deux tables : Voiture IdVoiture Marque Modele Puissance Couleur 1 Renault R5 5 Rouge 2 Verte Voiture Modele IdVoiture IdModele Couleur 1 Rouge 2 Verte IdModele Modele Marque Puissance 1 R5 Renault 5 2 Picasso Citroen 12

Règle pour découper Transformer chaque attribut en attribut atomique : Quand un attribut contient plusieurs informations (nom et prénom, ou adresse et code postal…) Créer deux (ou plus) attributs. Déterminer quelles dépendances existent entre les attributs pour chaque table Quand un attribut détermine d’autres attributs (une note et un nom de matière, ou un modèle de voiture et une marque) Créer deux (ou plus) tables.

Schéma relationnel Une fois qu’on a décidé de quelles tables faire, il est possible de faire un schéma relationnel : Comme UML, mais avec : À la place des classes, c’est les tables À la place des méthodes, c’est les attributs Il n’existe que des liens simples entre les tables Penser aussi aux cardinalités

MySQL Une fois les tables décidées, il faut les créer Plusieurs logiciels (MySQL, PostGres, Access, Oracle…) Tous utilisent le même langage de requête : le SQL Tout d’abord une présentation de SQL

Créer une base de donnée : /* Table des quartiers */ CREATE TABLE quartiers ( id int NOT NULL auto_increment, nom_quartier text, PRIMARY KEY (id) ); /* Tables des lieux */ CREATE TABLE lieux ( nom text, ref_quartier int, description text,

Créer une base de donnée : /* Table des quartiers */ CREATE TABLE quartiers ( id int NOT NULL auto_increment, nom_quartier text, PRIMARY KEY (id) ); /* Tables des lieux */ CREATE TABLE lieux ( nom text, ref_quartier int, description text, Nouveaux types… Défini la clé principale

Insérer des valeurs INSERT INTO quartiers VALUES (1,'Wazemmes'); INSERT INTO quartiers(nom_quartier) VALUES ('Vieux Lille'); INSERT INTO lieux VALUES ('Biplan',1,'Salle de spectacle');

Insérer des valeurs Permet d’ajouter qu’une partie d’un tuple INSERT INTO quartiers VALUES (1,'Wazemmes'); INSERT INTO quartiers(nom_quartier) VALUES ('Vieux Lille'); INSERT INTO lieux VALUES ('Biplan',1,'Salle de spectacle'); Le numéro de la clé est sous entendu

Interrogation de la base Tout le contenu de la table quartiers : SELECT * FROM quartiers; Tous les noms de lieux: SELECT nom FROM lieux; Même chose mais classé par ordre alphabétique : SELECT nom FROM lieux ORDER BY nom; Compter le nombre de lieux différents : SELECT COUNT(DISTINCT nom) FROM lieux;

Interrogation suite Tous les noms de lieux qui se trouvent dans le quartier "Q1": SELECT lieux.nom FROM lieux,quartiers WHERE lieux. ref_quartier=quartiers.id and quartiers.nom="Q1"; Cette opération s’appelle une jointure Elle se fait grâce à la clé de la table quartiers : ref_quartier=quartiers.id

Modification UPDATE quartiers SET nom_quartier='Waazzeeeemmes !' WHERE ref_quartier=1;

Suppression DROP TABLE quartiers; DELETE FROM lieux; Supprime toute la table mais il faut qu’elle soit vide DELETE FROM lieux; Vide toute la table DELETE FROM lieux WHERE ref_quartier=1; Supprime toutes les lignes où ref_quartier=1

MySQL MySQL : A vous de découvrir et d’apprendre… Utiliser PHP (pour faire un site) Utiliser la ligne de commande Utiliser C++ (et autre langage de programmation) A vous de découvrir et d’apprendre… Hors programme