Bases de Données Ensemble d'informations (centralisées ou non) sur un sujet particulier Exhaustif Non redondant Structuré persistant À l'usage d'applications diverses Interrogeables et modifiables par des utilisateurs travaillant en parallèle 1
SGBD Logiciel qui permet de : décrire modifier interroger administrer les données d'une base de données dans un langage "naturel" 2
SGBD Avec les propriétés Efficacité => temps de réponse, optimisation des requêtes (minimisation des accès disque) Non redondance => pour éviter les problèmes de mise à jour Cohérence des données => contraintes d'intégrité définissant un état cohérent de la base Partageabilité des données => accès simultané Résistance aux pannes => revenir à un état sain 3
Le modèle relationnel Indépendance entre le niveau physique et le niveau logique Les données sont organisées sous la forme de tables (relations) Les données sont manipulées par des opérateurs de l'algèbre relationnelle à travers un langage de haut niveau L'état cohérent de la base est défini par un ensemble de contraintes d'intégrité 4
Conception d'une base Traitement des données dans un simple fichier texte Titre Année NomReal PrénomReal Naissance Alien 1979 Scott Ridley 1943 Vertigo 1958 Hitchcock Alfred 1899 Psychose 1960 Hitchcock Alfred 1899 Kagemusha 1980 Kurosawa Akira 1910 Magnolia 1999 Anderson Paul-Thomas 1970 American beauty 2000 Mendes Sam 1965 Sacrifice 1986 Tarkovski Andrei 1932 Pulp Fiction 1995 Tarantino Quentin 1963 Anomalies possibles - à l'insertion => 2 mêmes titres et réalisateurs différents - à la modification => on modifie l'année de naissance d'hitchcock dans Psychose et pas dans Vertigo - à la destruction => si on supprime un film, on supprime aussi son réalisateur 5
Conception d'une base Titre Année IdReal Alien 1979 1 Vertigo 1958 2 Psychose 1960 2 Kagemusha 1980 4 Magnolia 1999 5 American beauty 2000 6 Sacrifice 1986 7 Pulp Fiction 1995 8 NomReal PrénomReal Naissance Id Scott Ridley 1943 1 Hitchcock Alfred 1899 2 Tarantino Quentin 1963 3 Kurosawa Akira 1910 4 Anderson Paul-Thomas 1970 5 Mendes Sam 1965 6 Tarkovski Andrei 1932 7 Pour éviter les anomalies : Séparer la représentation des films et des réalisateurs => plus de redondance (Hitchcock n'est représenté qu'une seule fois) Identifier un film de manière unique (le titre par exemple) ou un réalisateur par un Id Établir un lien entre film et réalisateur (sans introduire de la redondance) => lien établi entre film et réalisateur par l'idreal 6
Schéma Entité/Association Données Schéma Entité/Association Réalisateur id nom prénom naissance réalise association de 1 à n Film titre année genre résumé entité entité Artiste Film id nom prénom naissance réalise joue rôle titre année genre résumé entité association de n à n entité 7
Du schéma E/A au schéma relationnel (1/3) On passe d'un modèle à 2 structures (entités et associations) à un modèle uniquement constitué de tables. Transcription des entités en tables : chaque colonne de la table représente un attribut de l'entité chaque table doit avoir une clé (identification unique pour ses lignes et plus petit sous-ensemble des attributs Film (titre, année,genre, résumé) clé Artiste (id, nom, prénom, naissance 8
Du schéma E/A au schéma relationnel (2/3) Artiste Film Transcription d'une association de 1 à n La clé de la table Artiste devient aussi un attribut de Film Dans Film, IdReal = id de Artiste (une ligne de Artiste ne référence qu'une et une seule ligne de Film) La clé de Artiste exportée vers Film est appelée clé étrangère Film (titre, année,genre, résumé, idreal) clé Artiste (id, nom, prénom, naissance 9
Du schéma E/A au schéma relationnel (3/3) Artiste rôle Film Transcription d'une association de n à n Création d'une table pour l'association La clé de cette table est constituée de la paire (clé Artiste+clé Film) Les attributs de l'association deviennent les attributs de la nouvelle table Rôle (titre, idreal, nomrôle) 10
Le langage SQL Les données de la base sont définies dans le langage LDD (Data Definition Language), sous ensemble du langage SQL Type CHAR(n) INTEGER VARCHAR(n) DECIMAL(m,n) DATE TIME DATETIME TEXT Description chaine de longueur fixe n entier chaine variable d'au plus n caractères numérique sur m chiffres avec n décimales date avec jour, mois, an Horaire en heure, minutes et secondes date et horaire Texte de longueur quelconque Les principaux types de données SQL 11
Création de la base Création des tables dans le langage SQL CREATE DATABASE films; Différents types de privilèges peuvent être accordés aux utilisateurs GRANT ALL PRIVILEGES ON Films TO admin@localhost IDENTIFIED BY 'admin' Pour travailler avec une base particulière USE Films; Pour détruire une base DROP DATABASE Films; 12
Création des tables CREATE TABLE Film ( titre VARCHAR (50) NOT NULL, annee INTEGER NOT NULL, genre VARCHAR (10), resume TEXT, Référence la clé primaire de la table Artiste Obligation de donner une valeur idreal INTEGER, PRIMARY KEY (titre), FOREIGN KEY (idreal) REFERENCES Artiste ); CREATE TABLE Artiste ( id INTEGER AUTO_INCREMENT NOT NULL, nom VARCHAR (30) NOT NULL, prenom VARCHAR (30) NOT NULL, naissance INTEGER, PRIMARY KEY (id), UNIQUE(nom,prenom) ); Pour détruire une table DROP TABLE IF EXISTS Film; 13
Insertion de données Syntaxe INSERT INTO nom_table (colonne1, colonne2, ) VALUES ('valeur1', 'valeur2',...); Exemple INSERT INTO Film (titre,annee) VALUES ( 'Magnolia', 1999); INSERT INTO Artiste (nom, prenom, naissance) VALUES ('Anderson', 'Paul', 1970); 14
Mise à jour de données Syntaxe UPDATE nom_table1, nom_table2,... SET colonne1 = valeur1, colonne2=valeur2,... WHERE condition; Exemple UPDATE Artiste SET prenom = 'Paul-Thomas' WHERE nom='anderson' AND naissance =1970 ; UPDATE Film, Artiste SET Film.idReal = Artiste.id WHERE Artiste.nom='Hitchcock' and Artiste.prenom='Alfred'; 15
Destruction des données Syntaxe DELETE FROM nom_table WHERE condition; Exemple DELETE FROM Film WHERE titre='pulp-fiction'; 16
Sélection de données Syntaxe SELECT colonne1, colonne2, FROM table1, table2, WHERE condition; où condition est une expression sur les attributs des tables du FROM les opérateurs applicables sont : opérateurs arithmétiques : +,*,-,... opérateurs relationnels : <,>,>=,...,!= opérateurs logiques : AND, NOT, OR BETWEEN, IN, LIKE caractères joker '_' remplace n'importe quel caractère '%' remplace n'importe quelle chaîne de caractères Exemple SELECT * FROM Film; SELECT titre FROM Film, Artiste WHERE Film.idReal = Artiste.id; 17
EXEMPLES SELECT * FROM Boutique WHERE nom IN ('Dijon','Lyon') SELECT * FROM Boutique WHERE Date BETWEEN '06-Jan-2009' AND '11-Jan-2009' nom ventes date Dijon 1500 05-Jan-2009 Lyon 2400 21-Jan-2009 nom ventes date Dijon 1500 05-Jan-2009 Chalon 400 09-Jan-2009 SELECT * FROM Boutique WHERE nom LIKE '%ON%' nom ventes date Dijon 1500 05-Jan-2009 Chalon 400 09-Jan-2009 Lyon 2400 21-Jan-2009 SELECT nom FROM Boutique WHERE ventes > 1000 OR (ventes < 500 AND ventes > 275) 18
Installations JDK + Netbeans 6.9.1 ensemble http://www.oracle.com/technetwork/java/javase/downloads/jdk-netbeans-jsp- 142931.html Ou bien Netbeans 6.9 IDE, environnement de développement incluant une palette de widgets (Swing) pour la génération d'interface Homme-Machine. http://netbeans.org/index.html J2SE https://cds.sun.com/is-bin/intershop.enfinity/wfs/cds-cds_developer- Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u24-oth-JPR@CDS- CDS_Developer Et en plus WampServer2 est une plate-forme qui rassemble un serveur web (Apache2), un SGBD MySQL et un outil d'administration des bases de données (PHPMyAdmin). http://www.wampserver.com/download.php 19