Présentation du cours. Rappel sur SQL
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Présentation du cours. Rappel sur SQL « If you don’t know where you are going, you will probably end up somewhere else. » Domingo Palao « Si tu ne sais pas où tu t’en vas, probablement tu arriveras ailleurs » -Laurence J. Peter.
Plan de la semaine S e m Présentation du cours a i n Présentation des étudiants e 1 Présentation du chargé de cours Présentation du plan de cours IFT287 Exploitation de BD relationnelles et OO Introduction et mise en contexte Rappel sur SQL 2015-08-26 © Domingo Palao 2
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Présentation du chargé de cours
Présentation du chargé de cours S e Prénom et nom m Domingo PALAO MUÑOZ a Formation en informatique i n Maîtrise en Commerce électronique. Université de Montréal e Bac en génie informatique. Université National Autonome du Mexique 1 Expériences avec les bases de données Modélisation et développement de plusieurs systèmes d’information ayant IFT287 Exploitation de BD relationnelles et OO comme principal élément les bases de données Mémoire du bac en génie informatique Mémoire de maîtrise sur les bases de données distribuées Bases de données utilisées Oracle, Sybase, Adabas, RDB, MS SQL Server, Informix Attentes du cours IFT287 Que les étudiantes et les étudiants aient une bonne compréhension de l’utilisation des bases de données relationnelles et orientées objet dans le contexte du développement d’un système logiciel Passe-temps Le baseball, la musique, la lecture. 2015-08-26 © Domingo Palao 4
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Présentation du plan de cours
Plan de cours Description de l’annuaire S e m a i Voir plan du cours Objectif : n e 1 Développer une application Web simple IFT287 Exploitation de BD relationnelles et OO exploitant des bases de données relationnelles et orientées objet. 2015-08-26 © Domingo Palao 6
Plan de cours À la fin de ce cours, l’étudiant devrait être S e m a capable : i n de connaître les composantes de base d’un e système de gestion de base de données; 1 de savoir exploiter une base de données relationnelle et une base de données orientée objet; IFT287 Exploitation de BD relationnelles et OO de connaître et d’appliquer les principes de base du langage XML pour l’échange électronique de données; de développer une interface graphique web simple; de parfaire sa connaissance des bases de données de manière autonome. 2015-08-26 © Domingo Palao 7
Plan de cours Objectifs spécifiques. S e m a À la fin de cette activité pédagogique, l’étudiante ou l’étudiant sera i capable de: n e Manipuler de bases de données relationnelles Créer, modifier et interroger une base de données relationnelle en mode 1 client-serveur; Développer une application simple, dans un langage de programmation IFT287 Exploitation de BD relationnelles et OO orienté-objet, exploitant une base de données relationnelle. Manipuler de bases de données orientées objet Créer, modifier et interroger une base de données orientée objet; Utiliser une base de données orientée objet; Développer une application simple, dans un langage de programmation orientée objet, exploitant une base de données orientée objet. Manipuler des interfaces Créer une description de fichier XML; Créer et d’interroger un fichier XML à partir d’une application; Développer une interface graphique web simple pour une application. 2015-08-26 © Domingo Palao 8
Plan de cours Qualifications préalables S e m a Concepts et architecture des bases de données. i n Création, interrogation et mise à jour d’une base de données e relationnelle à l’aide du langage SQL. 1 Requêtes complexes. IFT287 Exploitation de BD relationnelles et OO Contraintes d’intégrité. Modélisation entité-relation. Traduction d’un modèle entité-relation en un modèle relationnel. Dépendances fonctionnelles, dépendances multivaluées, dépendances de jointure. Normalisation : 1FN à 5FN et BCNF. Voir la liste des références pour une mise à niveau. 2015-08-26 © Domingo Palao 9
Plan de cours Responsabilités et tâches S e m a i Des étudiantes et étudiants. n e S’approprier de la matière du cours par la lecture 1 des articles indiqués des manuels de base. Participer aux activités qui se déroulent en classe. IFT287 Exploitation de BD relationnelles et OO Du chargé de cours. Organiser et gérer l’environnement d’apprentissage Fournir toutes les ressources d’apprentissage nécessaires et animer les activités en classe Évaluateur 2015-08-26 © Domingo Palao 10
Plan de cours Organisation et déroulement du S e m a i n cours e Préparation du cours Apprentissage en classe 1 IFT287 Exploitation de BD relationnelles et OO Exercices au laboratoire La réalisation des travaux pratiques 2015-08-26 © Domingo Palao 11
Plan de cours S e m La communication dans le cours a i Courriel électronique n e Le site web : http://ift287-dpm.espaceweb.usherbrooke.ca/index.html 1 IFT287 Exploitation de BD relationnelles et OO 2015-08-26 © Domingo Palao 12
Plan de cours S e Matériel didactique et pédagogique Plan de cours m a i n e Manuels de base 1 Autres références IFT287 Exploitation de BD relationnelles et OO Diapositives utilisées lors des exposés Sites Web de référence, etc. 2015-08-26 © Domingo Palao 13
Plan de cours S e Réalisations et critères d’évaluation m Travaux pratiques : a i Six travaux. n Rappel sur SQL e Introduction à Java 1 L’approche client-serveur avec JDBC et Java 1 L’approche client-serveur avec JDBC et Java 2 IFT287 Exploitation de BD relationnelles et OO L’approche client-serveur avec NoSQL et Java XML et Interface web Les équipes de 2 personnes pour la période de mercredi. turnin. Pas de dépôt de travaux par courriel (aucune exception!) Validation La partie pratique de l’évaluation se fait lors de la période de laboratoire. SEULEMENT 1 PÉRIODE! Après cette période vous avez le droit de présenter votre travail pendant la période de laboratoire suivante, mais il y a une pénalité de 30% La partie de correction du code 2015-08-26 © Domingo Palao 14
Plan de cours S e Réalisations et critères d’évaluation m a Examens : i n Mi-session. e Final. 1 Points bonis pour l’examen: IFT287 Exploitation de BD relationnelles et OO Commentaires chaque semaine Préparez un résumé de la matière traitée dans les cours (1 page seulement écrite à la main!) Les résumés sont à remettre avant l’examen. 2015-08-26 © Domingo Palao 15
Plan de cours S e Notation m a Éléments de notation Points i n Examen périodique 30 e Examen final 35 1 Travaux pratiques (5,5,6,6,6,7) points) 35 IFT287 Exploitation de BD relationnelles et OO TOTAL 100 Points extra Commentaires après chaque séance 5 0.5 chaque (10/13) Ou Résumé avant l’examen 2.5 (2) TOTAL 105 La note maximale sera toujours 100 points 2015-08-26 © Domingo Palao 16
Plan de cours Note sur le plagiat S e m a i n e Coopération entre étudiants 1 Matériel sur Internet IFT287 Exploitation de BD relationnelles et OO 2015-08-26 © Domingo Palao 17
Plan de cours S e Bibliographie m Livre 1. Fundamentals of database systems fifth edition. a i Auteur: Elmasri, Ramez n e Publié par: Pearson Addison Wesley 1 Livre 2. IFT287: Notes du cours. IFT287 Exploitation de BD relationnelles et OO Auteur: M. Frappier Livre 3. Principles of Database Systems with Internet and Java applications. Auteur: G. Ricardi Publié par: Addison Wesley Livre 4. Au cœur de Java 8ème édition Auteur:Cay Horstman Publié par: John Wiley, 2008 Autres références. 2015-08-26 © Domingo Palao 18
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Rappel sur SQL Domingo Palao
SQL Structured Query Langage (SQL) S e m a ou langage structuré de requêtes i est un langage informatique n e standard et normalisé, destiné à 1 interroger ou manipuler une base de données. IFT287 Exploitation de BD relationnelles et OO Edgar F. Codd (1923-2003) en 1970 a rédigé l’article « A Relational Model of Data for Large Shared Data Banks » dans la revue ACM. IBM s’est mis à développer Edgar F. Codd (1923-2003) SEQUEL (Structured English Query Language) pour mettre en œuvre le modèle de Codd. 2015-08-26 © Domingo Palao 20
SQL S e 1979, Relational Software, Inc (actuellement ORACLE Corporation) m a présenté la première version commerciale de SQL. a i SQL a été adopté comme recommandation par l’Institut de n e Normalisation Américaine (ANSI) en 1986, et comme norme internationale par l’ISO en 1987. 1 SQL2 finalisée en 1992. IFT287 Exploitation de BD relationnelles et OO Un des principaux changements, l’ajout des OUTER JOIN. SQL3 proposée en 1999. Elle supporte une extension objet et elle est partiellement implémentée par quelques SGBD. SQL:2003 Introduction de fonctions pour la manipulation de XML SQL:2008 Ajout de fonctions de fenêtrage, 2015-08-26 © Domingo Palao 21
SQL Il existe 3 niveaux de conformité dans la norme S e m a SQL-92 : i n Entry e Intermediate 1 Full IFT287 Exploitation de BD relationnelles et OO La majorité des systèmes de gestion de bases de données se prétendaient compatibles au standard SQL dès lors qu'ils se conformaient au niveau Entry. L'ensemble des fonctionnalités des niveaux Intermediate et Full étaient, soit trop volumineux, soit en conflit avec les fonctionnalités implantées. http://docs.postgresqlfr.org/8.1/features.html 2015-08-26 © Domingo Palao 22
SQL S e m SQL est composé de deux parties : a i n SQL déclaratif e DDL, Data Definition Language. 1 DML, Data Manipulation Language. IFT287 Exploitation de BD relationnelles et OO DCL, Data Control Language. TCL, Transaction Control Language SQL procédural PSM, Persistent Stored Module CLI, Call Level Interface Embedded SQL 2015-08-26 © Domingo Palao 23
Exercice rapide S e m Donner quelques exemples de a i n commandes de : e DDL, Data Definition Language. 1 DML, Data Manipulation Language. IFT287 Exploitation de BD relationnelles et OO DCL, Data Control Language. TCL, Transaction Control Language 2015-08-26 © Domingo Palao 24
Exercice rapide (Solution) S e Donner quelques exemples de commandes de : m a DDL, Data Definition Language. i CREATE – Créer des objets dans la base de données n ALTER – Changer la structure de la base de données e DROP – Supprimer des objets 1 TRUNCATE – Supprimer tous les enregistrements d’une table (l’espace alloué aux enregistrements est libéré) IFT287 Exploitation de BD relationnelles et OO COMMENT – Ajouter des commentaires dans le dictionnaire de données RENAME – Renommer un objet DML, Data Manipulation Language. SELECT – Faire une requête à la base de données INSERT – Insérer des données UPDATE – Mettre à jour les données existantes dans une table DELETE – Supprimer les enregistrements d’une table (l’espace alloué à ces enregistrements reste) CALL – Appeler un programme en PL/SQL ou Java EXPLAIN PLAN – Expliquer la manière d’accéder à la base de données LOCK TABLE - Contrôler la concurrence 2015-08-26 © Domingo Palao 25
Exercice rapide (Solution) S e m Donner quelques exemples de commandes a i de: n e DCL, Data Control Language. 1 GRANT – Donner des privilèges d’accès aux usagers REVOKE – Enlever des privilèges donnés avec le GRANT IFT287 Exploitation de BD relationnelles et OO TCL, Transaction Control Language COMMIT - Sauvegarder les données de manière définitive SAVEPOINT – Identifier un point où on peut retourner avec un rollback dans une transaction ROLLBACK – Retourner la base de données à son état original depuis le dernier COMMIT ou SAVEPOINT SET TRANSACTION – Changer les options d’une transaction 2015-08-26 © Domingo Palao 26
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Data Definition Language
Data Definition Language S e m Utilise les commandes pour établir la a i n définition des tables (relations) d’une base e 1 de données CREATE IFT287 Exploitation de BD relationnelles et OO DROP ALTER TRUNCATE COMMENT RENAME 2015-08-26 © Domingo Palao 28
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Data Manipulation Language
Requêtes en SQL SQL a une commande de base pour chercher S e m a l’information dans la base de données, la commande i SELECT n e Le format de base de l’instruction SELECT de SQL est 1 connu comme le bloque SELECT-FROM-WHERE IFT287 Exploitation de BD relationnelles et OO SELECT FROM WHERE < liste d’attributs > c’est une liste de noms d’attributs qu’on cherche avec la requête < liste de tables > c’est une liste obligatoire qui spécifie les tables à utiliser pendant la requête c’est la condition booléenne identifiant les tuples à chercher avec la requête 2015-08-26 © Domingo Palao 30
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Opérations d’ensemble
Opérations d’ensemble S e m SQL a incorporé quelques opérations a i d’ensembles n e UNION 1 MINUS IFT287 Exploitation de BD relationnelles et OO INTERSECT Les résultats de ces opérations sont des ensembles de tuples. Les tuples dupliqués sont éliminés du résultat. Les opérations d’ensembles s’appliquent seulement aux relations ayant le même nombre d’attributs et les attributs doivent apparaître dans le même ordre. 2015-08-26 © Domingo Palao 32
Opérations d’ensemble S e m Faire une liste de tous les noms des employés a i ainsi que les noms de tous leurs dépendants n e (SELECT FNAME 1 FROM EMPLOYE) IFT287 Exploitation de BD relationnelles et OO UNION (SELECT DEPENDENT_NAME FROM DEPENDENT) Pourquoi une requête avec des opérations d’ensemble est considérée comme deux requêtes? 2015-08-26 © Domingo Palao 33
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Requêtes imbriquées
Requêtes imbriquées Une requête SELECT peut appeler une requête S e m a imbriquée. i n Nous pouvons spécifier dans la clause WHERE une e deuxième requête, nommée outer query 1 Chercher le nom et l’adresse de tous les employés qui IFT287 Exploitation de BD relationnelles et OO travaillent dans le département 'Research’ ou ‘Sales’. SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' OR DNAME=‘Sales') 2015-08-26 © Domingo Palao 35
Utilisation de JOIN dans SQL2 Exemples : S e m a SELECT FNAME, LNAME, ADDRESS i FROM EMPLOYEE, DEPARTMENT n WHERE DNAME='Research' AND DNUMBER=DNO e Peut être écrite : 1 SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT IFT287 Exploitation de BD relationnelles et OO ON DNUMBER=DNO) WHERE DNAME='Research’ Ou bien: SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE NATURAL JOIN DEPARTMENT AS DEPT(DNAME, DNO, MSSN, MSDATE) WHERE DNAME='Research’ 2015-08-26 © Domingo Palao 36
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Outer Join 2015-08-26 © Domingo Palao 37
OUTER JOIN S e m Prenons les tables suivantes: a i n Dept e deptId deptNom 1 1 Développement IFT287 Exploitation de BD relationnelles et OO 2 Recherche 3 Finances Emp empId empNom deptId 1 Jean Beauregard 1 2 Anne Rivaud 2 3 Marie Allaire 2015-08-26 © Domingo Palao 38
OUTER JOIN S e m L’instruction suivante: a i n SELECT * e 1 FROM dept JOIN emp ON (dept.deptId = emp.deptId) IFT287 Exploitation de BD relationnelles et OO dept.deptId deptNom empId empNom emp.deptId 1 Développement 1 Jean Beauregard 1 2 Recherche 2 Anne Rivaud 2 2015-08-26 © Domingo Palao 39
OUTER JOIN S e m L’instruction suivante: a i n SELECT * e 1 FROM dept LEFT JOIN emp ON (dept.deptId = emp.deptId) IFT287 Exploitation de BD relationnelles et OO dept.deptId deptNom empId empNom emp.deptId 1 Développement 1 Jean Beauregard 1 2 Recherche 2 Anne Rivaud 2 3 Finances NULL NULL NULL Donne comme résultat les enregistrements de la relation de gauche qui n’ont pas une correspondance dans la relation de droite. 2015-08-26 © Domingo Palao 40
OUTER JOIN S e m L’instruction suivante: a i n SELECT * e 1 FROM dept RIGHT JOIN emp ON (dept.deptId = emp.deptId) IFT287 Exploitation de BD relationnelles et OO dept.deptId deptNom empId empNom emp.deptId 1 Développement 1 Jean Beauregard 1 2 Recherche 2 Anne Rivaud 2 NULL NULL 3 Marie Allaire Donne comme résultat les enregistrements de la relation de droite qui n’ont pas une correspondance dans la relation de gauche. 2015-08-26 © Domingo Palao 41
OUTER JOIN S e m L’instruction suivante: a i n SELECT * e 1 FROM dept FULL JOIN emp ON (dept.deptId = emp.deptId) IFT287 Exploitation de BD relationnelles et OO dept.deptId deptNom empId empNom emp.deptId 1 Développement 1 Jean Beauregard 1 2 Recherche 2 Anne Rivaud 2 NULL NULL 3 Marie Allaire 3 Finances NULL NULL NULL Donne comme résultat les enregistrements de la relation de droite qui n’ont pas une correspondance dans la relation de gauche. 2015-08-26 © Domingo Palao 42
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Fonctions d’agrégation 2015-08-26 © Domingo Palao 43
Fonctions d’agrégation S e Nous avons : m a COUNT, i n SUM, e MAX, 1 MIN, IFT287 Exploitation de BD relationnelles et OO AVG Trouver le salaire maximal, minimal et moyen de tous les employés. SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE Quelques implémentations de SQL ne permettent qu’une fonction d’agrégation dans la clause SELECT 2015-08-26 © Domingo Palao 44
Fonctions d’agrégation S e m Trouver le salaire maximal, minimal et a i n moyen des employés du département e 1 'Research'. SELECT MAX(SALARY), IFT287 Exploitation de BD relationnelles et OO MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research' 2015-08-26 © Domingo Palao 45
Groupes S e Dans plusieurs cas, nous avons besoin d’appliquer une fonction d’agrégation à un ou plusieurs sous-groupes de m a i n tuples dans une relation La fonction doit être appliquée à chaque sous-groupe de e 1 manière indépendante IFT287 Exploitation de BD relationnelles et OO SQL a la clause GROUP BY pour spécifier les options de groupage Pour chaque département, trouver le numéro de département, le nombre d’employés et le salaire moyen SELECT DNO, COUNT (*), AVG (SALARY) FROM EMPLOYEE GROUP BY DNO 2015-08-26 © Domingo Palao 46
Groupes S e m Pour chaque projet, trouver le numéro de a i n projet, le nom du projet, et le nombre e 1 d’employés qui travaillent dans ce projet SELECT PNUMBER, PNAME, COUNT (*) IFT287 Exploitation de BD relationnelles et OO FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME Dans ce cas, les fonctions d’agrégation et de groupage sont appliquées après la jointure de deux relations 2015-08-26 © Domingo Palao 47
La clause HAVING Quelques fois, nous voulons obtenir les valeurs S e m a appliquées aux fonctions d’agrégations, mais seulement i pour quelques groupes avec une condition précise n e La clause HAVING est utilisée pour spécifier une 1 condition de sélection dans les groupes HAVING ne fonctionne pas avec les tuples IFT287 Exploitation de BD relationnelles et OO individuellement Exemple : Pour chaque projet avec plus que deux employés, trouver le numéro de projet, nom du projet et le numéro des employés qui travaillent dans ce projet SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT (*) > 2 2015-08-26 © Domingo Palao 48
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Mise à jour des données en SQL
Mise à jour des données en SQL S e m Il y a trois commandes SQL pour modifier a i n une base de données : e 1 INSERT DELETE IFT287 Exploitation de BD relationnelles et OO UPDATE 2015-08-26 © Domingo Palao 50
INSERT S e INSERT est utilisée pour ajouter un ou plusieurs tuples dans une relation m Les valeurs des attributs doivent être dans le même ordre qu’au moment de a créer la table avec la commande CREATE TABLE i n Exemple: e INSERT INTO EMPLOYEE VALUES ('Richard','K','Marini', '653298653', '30-DEC-52', 1 '98 Oak Forest,Katy,TX', 'M', 37000,'987654321', 4 ) IFT287 Exploitation de BD relationnelles et OO Une forme alternative spécifie de manière explicite le nom des attributs qui correspondent aux valeurs de la nouvelle tuple Exemple: Ajouter un EMPLOYEE duquel on connaît seulement FNAME, LNAME, et SSN. INSERT INTO EMPLOYEE (FNAME, LNAME, SSN) VALUES ('Richard', 'Marini', '653298653') INSERT INTO NEW_EMPLOYEE (FNAME, LNAME, SSN) SELECT (FNAME, LNAME, SSN) FROM EMPLOYEE 2015-08-26 © Domingo Palao 51
DELETE S e Supprime les tuples d’une relation m Nous pouvons ajouter la clause WHERE pour sélectionner les tuples à a supprimer i n L’intégrité référentielle est validée e S’il n’y a pas une clause WHERE, tous les tuples de la relation seront 1 supprimés IFT287 Exploitation de BD relationnelles et OO DELETE FROM EMPLOYEE WHERE LNAME='Brown’ DELETE FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research') DELETE FROM EMPLOYEE 2015-08-26 © Domingo Palao 52
UPDATE S e Utilisée pour modifier les valeurs d’un ou plusieurs tuples m La clause WHERE sélectionne les tuples à modifier a i Chaque commande modifie les tuples dans la même relation n L’intégrité référentielle est validée e 1 UPDATE PROJECT SET PLOCATION = 'Bellaire', DNUM = 5 IFT287 Exploitation de BD relationnelles et OO WHERE PNUMBER=10 Donner une augmentation de salaire de 10% aux employés du département de ‘Research’. UPDATE EMPLOYEE SET SALARY = SALARY *1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research') 2015-08-26 © Domingo Palao 53
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Vues
Vues en SQL S e Une vue est une table virtuelle qui est dérivée d’autres m a tables i n Elle n’a pas d’existence propre. e Aucune donnée ne lui est associée. 1 Sa description est stockée sous la forme d’une requête. Permets l’utilisation complète des requêtes. IFT287 Exploitation de BD relationnelles et OO Pour créer une vue, nous avons la commande: CREATE VIEW CREATE VIEW WORKS_ON_NEW AS SELECT FNAME, LNAME, PNAME, HOURS FROM EMPLOYEE, PROJECT, WORKS_ON WHERE SSN=ESSN AND PNO=PNUMBER 2015-08-26 © Domingo Palao 55
Utilité des vues S e m Confidentialité a i Les utilisateurs n’ont pas le droit d’accéder qu’aux n e vues. 1 Cacher la complexité des données aux IFT287 Exploitation de BD relationnelles et OO utilisateurs Vue simplifiée des données. Simplifier les requêtes aux utilisateurs non spécialisés. Présenter différentes perspectives sur les données aux utilisateurs Renommer des colonnes. 2015-08-26 © Domingo Palao 56
IFT287 Exploitation de bases de données relationnelles et orientées objet Semaine 1 Questions?
Vous pouvez aussi lire