Base de données. Chapitre 1 Introduction



Documents pareils
IFT3030 Base de données. Chapitre 1 Introduction

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de données relationnelles

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL (première partie) c Olivier Caron

Bases de Données Avancées

SQL Historique

Le Langage De Description De Données(LDD)

Rappel sur les bases de données

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

CREATION WEB DYNAMIQUE

Conception des bases de données : Modèle Entité-Association

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

A QUOI SERVENT LES BASES DE DONNÉES?

Les bases de données

16H Cours / 18H TD / 20H TP

Introduction au Système de Gestion de Base de Données et aux Base de Données

Création et Gestion des tables

Olivier Mondet

CHAPITRE 1. Introduction aux bases de données

1 Introduction et installation

UML et les Bases de Données

Information utiles. webpage : Google+ : digiusto/

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Bases de Données Relationnelles. Le Modèle Relationnel

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Langage SQL : créer et interroger une base

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TP3 : Creation de tables 1 seance

Modélisation de bases de données : Le modèle relationnel

TP Contraintes - Triggers

I4 : Bases de Données

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Chapitre 1 Généralités sur les bases de données

Application web de gestion de comptes en banques

Introduction aux Bases de Données

Bases de données relationnelles & SQL

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

1 Position du problème

Pour les débutants. langage de définition des données

Le Langage SQL version Oracle

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

Modélisation des données

Bases de données Cours 1 : Généralités sur les bases de données

1/ Présentation de SQL Server :

Systèmes d information et bases de données (niveau 1)

Bases de Données. Plan

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

A QUOI SERVENT LES BASES DE DONNÉES?

Modèle Entité/Association

Intégrité sémantique dans les bases de données relationnelles

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

PHP 5. La base de données MySql. A. Belaïd 1

LE LANGAGE SQL2 1. INTRODUCTION

OpenPaaS Le réseau social d'entreprise

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Vincent Augusto

A. Définition et formalisme

Le langage SQL Rappels

Bases de données. Chapitre 1. Introduction

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Modèle conceptuel : diagramme entité-association

Bases de données et sites WEB

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Cours: Administration d'une Base de Données

Historisation des données

MySQL / SQL EXEMPLES

Compétences Business Objects

Les bases de données Page 1 / 8

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

INTRODUCTION : Données structurées et accès simplifié

1. Base de données SQLite

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Gestion de base de données

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Notes de cours : bases de données distribuées et repliquées

Cours Bases de données 2ème année IUT

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Cours Bases de données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Université de Bangui. Modélisons en UML

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Intégrité des données

Modélisation conceptuelle des données Responsable: Dominique Schneuwly, Regis Caloz

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

OBJECTIFS ET ARCHITECTURE DES SGBD

Bases de données avancées Introduction

Auto-évaluation Oracle: cours de base

Transcription:

Base de données Chapitre 1 Introduction

Plan du cours Introduction Modèle relationnel SQL Conception 2

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Petite base de données avec 1 seule table (appelons la professeur) Conserver les données Supporter des opérations sur les données 3

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 Sélection SELECT NOM, FONCTION FROM PROFESSEUR WHERE AN_ENT > 1992 75902 Yida Prof_agr MRT1664 1990 NOM FONCTION Gilles Prof_adj Myriam Prof_agr Claudine Prof_adj 4

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Insertion INSERT INTO PROFESSEUR (MAT, NOM, FONCTION, COURS, AN_ENT) VALUES (66231, Jian, Prof_adj, MRT2323, 1996) 5

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Insertion 66231 Jian Prof_adj MRT2323 1996 INSERT INTO PROFESSEUR (MAT, NOM, FONCTION, COURS, AN_ENT) VALUES (66231, Jian, Prof_adj, MRT2323, 1996) 6

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Mise à jour UPDATE PROFESSEUR SET COURS = MRT2325 WHERE MAT = 66231 66231 Jian Prof_adj MRT2323 1996 7

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Mise à jour UPDATE PROFESSEUR SET COURS = MRT2325 WHERE MAT = 66231 66231 Jian Prof_adj MRT2325 1996 8

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Destruction DELETE FROM PROFESSEUR WHERE MAT = 66231 66231 Jian Prof_adj MRT2325 1996 9

Exemple MAT NOM FONCTION COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 75902 Yida Prof_agr MRT1664 1990 Destruction DELETE FROM PROFESSEUR WHERE MAT = 66231 10

Système de gestion de bases de données Système de gestion de base de données Applications Base de données Utilisateurs Un système informatique de conservation de l information nécessite : Données Matériel Logiciel Utilisateurs 11

Base de données Définitions Données persistantes Durée de vie dépasse celle de l exécution d un programme Base de données Collection de données persistantes utilisées par des systèmes informatiques Exemples Organisations banques, hôpitaux, université, compagnies, etc. Systèmes comptabilité, gestion du personnel, gestion de stock, etc. 12

Base de données supervise Employé participe Projet affecté finance Département Client Information Entités Relations Propriétés Employé Mat Nom... 13

Base de données Acteurs Concepteur Administrateur de données Administrateur de la base de données Utilisateur final Une même personne peut occuper plusieurs rôles Un même rôle peut être occupé par plusieurs personnes 14

Base de données Avantages Réduit les redondances Un fichier du personnel pour la paye/comptabilité Un fichier du personnel pour les ressources humaines Évite l incohérence Ajout d un nouvel employé Permet le partage des données Entre applications existantes et futures Permet l application des normes ODMG, CORBA, etc. 15

Base de données Avantages Garantie la sécurité Utilisateurs (politique) Opérations (consultation, destruction, insertion) Assure l intégrité Données exactes Permet d établir des priorités Optimisation des accès pour certaines applications au détriment des autres Assure l indépendance des données Applications, représentation interne, etc. 16

Historique Génération 0 (années 60) fichiers reliés par des pointeurs IDS.I (Honeywell) et IMS.I (IBM) pour les programmes de la conquête spatiale (APOLLO) 1ère génération (fin des années 60) modèles hiérarchique et réseau (travaux de CODASYL) TOTAL, IDMS, IDS.2 et IMS.2, etc. 2ème génération (depuis 1970) modèle relationnel SGBD commercialisés à partir de 1980 ORACLE, SYSBASE, DB2, etc. 3ème génération (début des années 80) extension du relationnel (Oracle 10i, DB2 Universal Database, etc.) à objets (ObjectStore, GemStone, O2, etc.) 4ème génération Internet, les informations non structurées, le multimédia, la découverte des données, XML 17

Base de données Chapitre 2 Le modèle relationnel

Types de modèles Modèles conceptuels Entités-Relations UML Modèles de bases de données Réseau Hiérarchique Relationnel À objets 19

Plan du cours Introduction Modèle relationnel SQL Conception 20

Concepts de base Attribut Colonne d une relation caractérisée par un nom Relation Degré nombre d attributs Cardinalité nombre de n-uplets 21

Concepts de base Exemple Attribut Prof_adj Prof_agr Prof_tit Domaine MAT NOM GRADE COURS AN_ENT 62945 Gilles Prof_adj MRT1111 1997 n-uple 34560 Myriam Prof_agr MRT2221 1993 21539 Claudine Prof_adj MRT3331 1999 80200 Bernard Prof_tit MRT1112 1982 Cardinalité 75902 Yida Prof_agr MRT1664 1990 Degré 22

Concepts de base Relation vs. Table Relation : définition d un objet abstrait (voir plus haut) Table : représentation concrète de cet objet abstrait Souvent confondues 23

Intégrité des données Introduction A tout instant la base représente une partie du monde réel à travers une configuration particulière des valeurs des données Certaines configurations des valeurs n ont pas de sens exemple age d une personne = -35 Intégration de règles d intégrité pour informer le SGBD de certaines contraintes du monde réel 24

Intégrité des données Exemple de contraintes d intégrité??? Matricule doit être sous la forme nnnnn La valeur de GRADE doit appartenir à l ensemble {Prof_adj, Prof_agr, Prof_tit} L année de recrutement doit être supérieure à 1920 (ou pourquoi pas 1878) L année de recrutement doit être inférieure ou égale à l année courante Tous les professeurs recrutés avant 1994 doivent être au moins agrégés Contraintes spécifiques à une base de données particulière 25

Intégrité des données Propriétés d intégrité générale clés candidates et clés primaires clés étrangères Clés candidates Ensemble minimal d attributs dont la connaissance des valeurs permet d identifier un n-uplet unique de la relation considérée Chaque relation contient au moins une clé candidate 26

Intégrité des données Clés candidates Utilité mécanisme d adressage au niveau des n- uplets d une table Exemple Professeur WHERE MAT = 34560, produit un seul n-uplet en résultat Professeur WHERE AN_ENT = 1994, va produire un nombre imprévisible de n-uplets en résultat 27

Intégrité des données Clé primaire Une clé choisie parmi l ensemble des clés candidates Le choix est arbitraire Peut se faire selon des heuristiques Plus simple par exemple Exemple Clés candidates MAT et NOM - COURS Clé primaire MAT 28

Intégrité des données Clé primaire Exemple Etudiant (Code_per, Nom, Prenom, Adresse, Date_nais, Lieu_nais, NAS) Quelles sont les clés candidates? Quelle clé primaire choisir? 29

Intégrité des données Clés étrangères Soit R2 une relation, un sous-ensemble d attributs FK dans R2 est dit clé étrangère dans le cas où * il existe une relation R1 avec une clé candidate CK (R1 peut être R2) * à tout instant, chaque valeur de FK dans R2 est identique à une valeur de CK dans R1 30

Intégrité des données Clés étrangères Propriétés Il n est pas nécessaire d avoir pour toute valeur de CK dans R1 une valeur identique de FK dans R2 Une clé étrangère est composée ou simple Chaque attribut d une clé étrangère doit être défini sur le même domaine que son équivalent dans la clé candidate correspondante 31

Intégrité des données Clés étrangères Propriétés Un attribut d une clé étrangère peut faire partie d une clé candidate de sa relation Employe (Mat, Nom, ) Projet (Num, Designation, ) Role (Mat, Num, role) 32

Intégrité des données Clés étrangères Diagramme référentiel représentation graphique des références Employé Projet Rôle Dépt 33

Intégrité des données Exemple Employe (mat# : entier, nom : caractères, adresse : caractères, dept : entier, sup : entier) Projet (num# : entier, designation : caractères) Departement (dept# : entier, dir : entier, nom : caractères) Role (mat# : entier, num# : entier, role_emp : caractères) 34

Intégrité des données Clés étrangères Intégrité référentielle La base de données ne doit pas contenir une valeur de clé étrangère non «unifiable» Cette contrainte est dite référentielle Conséquence : Il faut créer et détruire les n- uplets dans un ordre particulier Dans certains SGBDs (version 92 de SQL), on peut différer la vérification d une contrainte d intégrité référentielle (restreinte vs. cascade) 35

Aperçu de déclaration de table en SQL Domaine de base Entier : INTEGER Décimal : DECIMAL(m,n) Réel flottant : FLOAT Chaîne de caractères : CHAR(n) Date : DATE. Création d une table (forme simple) CREATE TABLE <nom-table> ( <attribut> <type>, <attribut> <type>, <attribut> <type>, ) 36

Aperçu de définition de données en SQL Création d une table (forme simple) Exemple CREATE TABLE VIN ( NV INTEGER, CRU CHAR(10), MIL INTEGER) Contraintes d intégrité NOT NULL UNIQUE ou PRIMARY KEY FOREIGN KEY REFERENCES CHECK 37

Aperçu de définition de données en SQL Avec contraintes d intégrité Exemple (SQL 86) CREATE TABLE COMMANDE ( NC INTEGER UNIQUE NOT NULL, NV INTEGER NOT NULL QUANTITE DECIMAL(6)) Exemple (SQL 89) CREATE TABLE COMMANDE ( NC INTEGER PRIMARY KEY, NV INTEGER NOT NULL REFERENCES VIN, QUANTITE DECIMAL(6) CHECK(QUANTITE > 0)) --------------------------------------------------------------------------------------------------------------- NC INTEGER, PRIMARY KEY (NC), NV INTEGER NOT NULL, FOREIGN KEY (NV) REFERENCES VIN, SQL 92 38

Aperçu de définition de données en SQL Modification du schéma d une table ALTER TABLE <table> ADD COLUMN<attribut> <type>, <attribut> <type>, Exemple ALTER TABLE COMMANDE ADD COLUMN DATE_COM DATE Suppression d une table DROP TABLE <table> Exemple DROP TABLE COMMANDE 39

Aperçu de définition de données en SQL Exemple (SQL) Employe (mat# : entier, nom : caractères, adresse : caractères, dept : entier, sup : entier) Projet (num# : entier, designation : caractères) Departement (dept# : entier, dir : entier, nom : caractères) Role (mat# : entier, num# : entier, role_emp : caractères) 40

Aperçu de définition de données en SQL, exemple Employe (mat# : entier, nom : caractères, adresse : caractères, dept : entier, sup : entier) CREATE TABLE EMPLOYE ( MAT INTEGER, NOM CHAR(12), ADRESSE CHAR(25), DEPT INTEGER NOT NULL, SUP INTEGER NOT NULL, PRIMARY KEY (MAT), FOREIGN KEY (DEPT) REFERENCES DEPARTEMENT, FOREIGN KEY (SUP ) REFERENCES EMPLOYE (MAT)); 41

Aperçu de définition de données en SQL, exemple Projet (num# : entier, designation : caractères) CREATE TABLE PROJET ( NUM INTEGER, DESIGNATION CHAR(20), PRIMARY KEY (NUM)); 42

Aperçu de définition de données en SQL, exemple Departement (dept# : entier, dir : entier, nom : caractères) CREATE TABLE DEPARTEMENT ( DEPT INTEGER, DIR INTEGER NOT NULL, DESIGNATION CHAR(20), PRIMARY KEY (DEPT), FOREIGN KEY (DIR) REFERENCES EMPLOYE (MAT)); 43

Aperçu de définition de données en SQL, exemple Role (mat# : entier, num# : entier, role_emp : caractères) CREATE TABLE ROLE ( MAT INTEGER, NUM INTEGER, ROLE_EMP CHAR(15), PRIMARY KEY (MAT, NUM), FOREIGN KEY (MAT) REFERENCES EMPLOYE, FOREIGN KEY (NUM) REFERENCES PROJET)); 44

Base de données Chapitre 3 SQL

Plan du cours Introduction Modèle relationnel SQL Conception 46

Introduction Permet de retrouver et de manipuler les données sans préciser les détails Dérivé de SEQUEL 2 (76), lui-même dérivé de SQUARE (75) Proposé par IBM (82 puis 87) Première version normalisée SQL1 (ISO89) Deuxième version normalisée SQL2 (ISO92) SQL3 en cours de normalisation Sert de couche basse aux L4G (par exemple Access) 47

Définition des données Domaine Définition de domaines peu utilisée Définition à partir des types de base ANSI SQL Oracle ----------------- --------------- CHARACTER(n), CHAR(n) CHAR(n) CHARACTER VARYING(n), CHAR VARYING(n) VARCHAR(n) NUMERIC(p,s), DECIMAL(p,s), DEC(p,s)[1] NUMBER(p,s) INTEGER, INT, SMALLINT NUMBER(38) FLOAT(b)[2], DOUBLE PRECISION[3], REAL[4] NUMBER 48

Définition des données Domaine Exemple CREATE DOMAIN COULEUR CHAR(6) DEFAULT vert CONSTRAINT VALIDE_COULEUR CHECK (VALUE IN rouge, blanc, vert, bleu, noir ) Modification de la définition (ALTER DOMAIN ) Destruction d un domaine DROP DOMAIN domaine [RESTRICT CASCADE] 49

Définition des données Table Création d une table (forme simple) Exemple CREATE TABLE VIN ( NV NUMBER, CRU CHAR(10), MIL NUMBER) Contraintes d intégrité NOT NULL UNIQUE ou PRIMARY KEY FOREIGN KEY REFERENCES CHECK 50

Définition des données Table SQL 92 Avec contraintes d intégrité Exemple (SQL 86) CREATE TABLE COMMANDE ( NC NUMBER UNIQUE NOT NULL, NV NUMBER NOT NULL QUANTITE NUMBER(6)) Exemple (SQL 89) CREATE TABLE COMMANDE ( NC NUMBER PRIMARY KEY, NV NUMBER NOT NULL REFERENCES VIN, QUANTITE NUMBER(6) CHECK(QUANTITE > 0)) -------------------------------------------------------------------------------------------------- NC NUMBER, PRIMARY KEY (NC), NV NUMBER NOT NULL, FOREIGN KEY (NV) REFERENCES VIN, 51

Définition des données Table Modification du schéma d une table ALTER TABLE <table> ADD COLUMN<attribut> <type>, <attribut> <type>, Exemple ALTER TABLE COMMANDE ADD COLUMN DATE_COM DATE Suppression d une table DROP TABLE <table> Exemple DROP TABLE COMMANDE 52

Accès aux données Clause SELECT Forme SELECT [ ALL DISTINCT ] {<liste_attributs> *} Clause FROM Forme FROM <liste_tables> Exemple Employe (mat#, nom, adresse, dept, sup) Projet (num#, designation, budget) Departement (dept#, dir, appellation) Role (nume#, nump#, role_emp) 53

Accès aux données Exemple Donner les noms et adresses des employés SELECT nom, adresse FROM Employe Donner la liste des projets SELECT * FROM Projet Donner les noms et les départements des employés SELECT nom, appellation FROM Employe, Departement 54

Accès aux données Clause WHERE Forme WHERE <condition> Exemple Donner les noms et adresses des employés qui travaillent au DIRO SELECT nom, adresse FROM Employe, Departement WHERE appellation = DIRO Donner les noms des employés responsables de projets SELECT nom FROM Employe E, Role R WHERE E.mat = R.nume AND role_emp = responsable 55

Accès aux données Fonctions de calcul COUNT, SUM, AVG, MAX, MIN Exemple Donner le nombre d employés qui travaillent au DIRO SELECT COUNT (*) FROM Employe, Departement WHERE appellation = DIRO Donner le budget total des projets sous la responsabilité de l employé numéro 35677 SELECT SUM (budget) FROM Employe E, Role R, Projet WHERE E.mat = R.nume AND role_emp = responsable AND mat = 35677 56

Accès aux données Forme de conditions IN (NOT IN), Donner la liste des directeurs de départements SELECT * FROM Employe WHERE mat IN (SELECT dir FROM Departement) ANY ou ALL, Donner la liste des employés responsables de projets SELECT * FROM Employe WHERE mat = ANY (SELECT nume FROM Role WHERE role_emp = responsable ) 57

Accès aux données Forme de conditions IS (NOT) NULL, Donner la liste des employés sans superviseur SELECT * FROM Employe WHERE sup IS NULL EXISTS, Donner les numéros de projets dans lesquels intervient au moins un employé autre que le responsable SELECT DISTINCT nump FROM Role WHERE EXISTS (SELECT nump FROM Role WHERE role_emp!= responsable ) 58

Accès aux données Clause GROUP BY Forme GROUP BY <liste_attributs> Exemple Donner les noms des employés regroupés par projet SELECT nom FROM Employe E, Role R WHERE E.mat = R.nume GROUP BY R.nump 59

Accès aux données Clause HAVING Forme HAVING <condition> Exemple Donner les numéros de projets dans lesquels interviennent au moins dix employés autres que le responsable SELECT nump FROM Role WHERE role_emp!= responsable GROUP BY nump HAVING COUNT(nume) > 9 60

Accès aux données Unions Forme <requete> UNION <requete> Exemple, liste des cadres SELECT * FROM Employe WHERE mat IN ( SELECT dir UNION SELECT * FROM Employe WHERE mat = ANY ( FROM Departement) SELECT nume FROM Role WHERE role_emp = responsable ) 61

Manipulation des données Insertion Forme INSERT INTO <table> [ (<liste_colonnes>)] {VALUES (<liste_valeurs>) <requete>} Exemple 1 INSERT INTO Employe (mat, nom, adresse, dept, sup) VALUES (34098, Gilles, 3456, Gaspe, Mtl, 456, 68735) Exemple 2 INSERT INTO Directeur SELECT * FROM Employe WHERE mat IN ( SELECT dir FROM Departement) 62

Manipulation des données Mise à jour Forme UPDATE <table> SET {<nom_colonne> = <expression>} + WHERE {<condition> CURRENT OF <nom_curseur>} Exemple 1 UPDATE Employe SET adresse = 3456, Gaspe, Mtl WHERE mat = 34098 Exemple 2 UPDATE Projet SET budget = budget + 1000 WHERE num IN ( SELECT nump FROM Role WHERE nume = 34098 AND role_emp = responsable ) 63

Manipulation des données Suppression Forme DELETE FROM <table> [WHERE {<condition> CURRENT OF <nom_curseur>}] Exemple 1 DELETE FROM Employe WHERE mat = 34098 Exemple 2 DELETE FROM Projet WHERE num IN ( SELECT nump FROM Role WHERE nume = 68754) 64

SQL intégré (JDBC) Introduction SQL peut être intégré dans un langage hôte (C, COBOL, PL/1, PASCAL, JAVA, etc.) Conflit (opération ensembliste vs. opération séquentielle) traitement de plusieurs n-uplets Étude du cas du langage Java (JDBC) 65

Base de données Chapitre 4 Conception de bases de données

Plan du cours Introduction Modèle relationnel SQL Conception 67

Introduction Problème de la conception Associer une structure logique aux données. En d'autres termes, trouver les relations et leurs attributs Techniques Dépendances fonctionnelles Les formes normales Le modèle Entité-Association 68

Modélisation sémantique Permet de modéliser les données En utilisant différents formalismes exemples : E/A, UML, Une conception de base de données qui commence par la modélisation sémantique est dite conception descendante (conception allant du plus haut niveau vers le plus bas niveau) 69

Modèle Entité/Association Généralités Appelé également Entité/Relation Proposé par Chen en 1976 Englobe à l'origine un nombre restreint de concepts (entité, association, propriété) Diverses extensions ont été proposées par la suite (contraintes, généralisation agrégation, ) 70

Modèle Entité/Association, Concepts Entité "Une chose qui peut être identifiée distinctement" Par abus de langage, on confond entité et type d'entité Exemples : Concrètes : voiture, employé Abstraites : projet, cours Mais, mariage??? 71

Modèle Entité/Association, Concepts Entité (suite) On distingue souvent Entité régulière Entité faible dont l'existence dépend d'une autre entité Exemple Employé. entité régulière Personne_a_charge. entité faible dont l'existence dépend de celle de l'entité Employé 72

Modèle Entité/Association, Concepts Entité (suite) Représentation graphique Nom de l'entité ou Employé Projet Nom de l'entité 73

Modèle Entité/Association, Concepts Propriété Les entités possèdent des propriétés qui les décrivent Appelées également Attributs Exemples : Pour Employé: matricule, nom, adresse mais pas le numéro de département 74

Modèle Entité/Association, Concepts Propriété Elle peut être Simple ou composée âge (simple) adresse (composée) Un identificateur (ou clé) code_permanent mono ou multi-valuée nom (mono-valuée) prénom (multi-valuée) 75

Modèle Entité/Association, Concepts Propriété Elle peut être Manquante valeur inconnue non applicable (date_mariage pour un célibataire) De base ou dérivée nom (base) ancienneté (dérivée de la date d'embauche et de la date d'aujourd'hui) Quantité totale (dérivée de la somme des quantités) 76

Modèle Entité/Association, Concepts Propriété Représentation graphique propriété Parfois, on utilise cette notation pour les propriétés multi-valuées Nom Employé Matricule propriété Parfois, on utilise cette notation pour les identificateurs Prénoms Adresse ident Rue Ville CP 77

Modèle Entité/Association, Concepts Association Est une relation entre entités Même abus de langage entre association et type d'associations Exemple Participe_dans entre Employé et Projet Récolte entre Producteur et Vin Comme une entité, elle peut posséder des propriétés 78

Modèle Entité/Association, Concepts Association Elle est dite binaire si elle relie uniquement deux entités, ternaire si elle en relie trois, etc. Chaque participant (entité) possède un rôle dans l'association Elle peut être réflexive Exemple : est_mariée_à entre personne et personne 79

Modèle Entité/Association, Concepts Association Cardinalités Indiquent le nombre minimal et maximal d'occurrences d'une association pour une occurrence d'un participant Par exemple pour l'association contrôle entre Département et Projet un Département contrôle 0 ou plusieurs projets un Projet est contrôlé par un et un seul département Les différentes possibilités sont 0,1 ; 1,1 ; 0,N ; 1,N 80

Modèle Entité/Association, Concepts Association Représentation graphique Pers_à_ch association Période Parfois, on utilise cette notation pour une association impliquant une entité faible association Professeur 0,1 A_dirigé 1,N Département 1,1 Est_tuteur 0,N Employé 0,N 1,1 Supervise 81

Modèle Entité/Association, Concepts Un exemple complet DDN Nom N_emp local Prén. Lien NAS Nom Adr Rue Ville Pers_à_ch 1,1 Est_tuteur 1,1 0,N Employé 0,N 1,1 Supervise 0,1 1,N Est_affecté Date Dirige Participe 1,N 0,1 1,1 1,N N_heures Département Contrôle 1,N Projet Num Nom Budget 82

Conception de la base de données E/A vers relationnel Entité Chaque type d'entité devient une relation. Son identificateur devient la clé et les propriétés deviennent des attributs. Les propriétés multi-valuées sont transformées conformément à la 1NF Matricule Prénoms Nom Employé Employe(Matricule, Nom, Prenom) 83

Conception de la base de données E/A vers relationnel Association plusieurs à plusieurs {0,N 1,N} vers {0,N 1,N} Chaque type d'association devient une relation Les identificateurs des participants deviennent la clé de la relation NAS Session Sigle Etudiant 0,N 1,N Suit Cours Inscription(NAS, Sigle, Session) NAS et Sigle sont des clés étrangères également 84

Conception de la base de données E/A vers relationnel Association un à plusieurs {0,1 1,1} vers {0,N 1,N} Chaque type d'association se traduit par un ajout d'une clé étrangère NAS Nom_D Employé 1,1 1,N Est_aff Dept Employé(NAS,, Nom_D) Cas particulier d'une association impliquant une entité faible (contrainte CASCADE) 85

Conception de la base de données E/A vers relationnel Association un à un {0,1 1,1} vers {0,1 1,1} Chaque type d'association se traduit par NAS Une fusion des deux relations correspondantes Un ajout de clé étrangère dans l'une ou les deux relations Num Employé 1,1 1,1 Occupe Bureau Option 1 : Employé(NAS,, Num) Option 2 : Employé(NAS,, Num) Bureau(Num,, NAS) 86

Conception de la base de données E/A vers relationnel Convertir le modèle suivant en Relationnel DDN Nom N_emp local Pren. Lien NAS Nom Adr Rue Ville Pers_à_ch 1,1 Est_tuteur 1,1 0,N Employé 0,N 1,1 Supervise 0,1 1,N Est_affecté Date Dirige Participe 1,N 0,1 1,1 1,N N_heures Département Contrôle 1,N Projet Num Nom budget 87