Université Paris Ouest - Nanterre - la Défense. Master DEFI Bases de données. Marcel Cori

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

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

Bases de données relationnelles

1 Introduction et installation

Le langage SQL Rappels

16H Cours / 18H TD / 20H TP

Le Langage SQL version Oracle

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

Les bases de données

Vincent Augusto

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

Olivier Mondet

Langage SQL : créer et interroger une base

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

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

Le Langage De Description De Données(LDD)

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

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

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

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

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

SQL Historique

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

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

Création et Gestion des tables

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

Rappel sur les bases de données

CREATION WEB DYNAMIQUE

I4 : Bases de Données

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

MODE OPERATOIRE OPENOFFICE BASE

MySQL / SQL EXEMPLES

Bases de Données. Plan

Bases de Données Avancées

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

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

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

UML et les Bases de Données

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

FileMaker 13. Guide de référence SQL

Durée : 4 heures Le sujet se présente sous la forme de deux dossiers indépendants

Bases de données relationnelles & SQL

1. Base de données SQLite

Les BASES de DONNEES dans WampServer

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)

Bases de données avancées Introduction

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

I. MySQL : Serveur et SGBD

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

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

SOMMAIRE. Travailler avec les requêtes... 3

TP Contraintes - Triggers

Présentation du module Base de données spatio-temporelles

Systèmes de Gestion de Bases de Données

Bases de données. Chapitre 1. Introduction

Bases de données Outils de gestion

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Créer le schéma relationnel d une base de données ACCESS

Cours SQL. Base du langage SQL et des bases de données

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

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

Cours: Administration d'une Base de Données

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

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

TP3 : Creation de tables 1 seance

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Initiation à la Programmation en Logique avec SISCtus Prolog

Introduction aux Bases de Données 2004/2005

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données élémentaires Maude Manouvrier

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

Bases de données cours 1

Bases de données. PTSI Lycée Eiffel. 28 février 2014

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

LE LANGAGE SQL2 1. INTRODUCTION

Introduction aux Bases de Données

OpenPaaS Le réseau social d'entreprise

Algorithmique et programmation : les bases (VBA) Corrigé

A QUOI SERVENT LES BASES DE DONNÉES?

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

Information utiles. webpage : Google+ : digiusto/

FORMATION A L UTILISATION DE PMB QUELQUES NOTIONS DE SQL

COURS de BASES de DONNEES

Cours Bases de données

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

Année Universitaire 2009/2010 Session 2 de Printemps

TD n 10 : Ma première Base de Données

TP 1. Prise en main du langage Python

Support de cours. Introduction à SQL et MySQL. 2003, Sébastien Namèche

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

BTS/CGO P10 SYSTEME INFORMATION Année

Transcription:

Université Paris Ouest - Nanterre - la Défense Master DEFI 2008-2009 Bases de données Marcel Cori

1 Introduction 1.1 Modéliser une réalité 1.1.1 Le problème Les bases de données constituent une application de l informatique. Il s agit de traiter toute une classe de problèmes que l on peut qualifier grossièrement de problèmes de gestion. Par exemple (1) comment stocker toutes les informations concernant une entreprise (les employés, les clients, les stocks, etc.), ou toutes les informations concernant l Université Paris Ouest Nanterre la Défense, et (2) comment accéder à ces informations de manière pratique. 1.1.2 La nécessité d une modélisation Il ne serait pas efficace d écrire des programmes spécifiques pour chaque tâche à accomplir : les utilisateurs doivent pouvoir apporter de nouvelles informations ou accéder aux informations sans être des informaticiens, et en tout cas sans entrer dans le détail de l implémentation informatique. Toutefois, une réalité, pour être représentée en machine, doit être rigoureusement exprimée selon un certain modèle. 1.2 Notions de base 1.2.1 Bases de données Une base de données est un ensemble d informations persistantes (stockées sur des mémoires périphériques) qui représentent une portion de la réalité et sont accessibles par ordinateur à travers un logiciel unique (le système de gestion de bases de données). On distingue : (1) les bases de données physiques ; (2) les bases de données conceptuelles, (ou schémas conceptuels de bases de données). On peut modifier une base de données physique sans que le schéma conceptuel correspondant soit affecté. Pour pouvoir créer une base de données, il faut que les différentes informations soient exprimées dans des formats compatibles. Il s agit du processus d intégration. 2

1.2.2 Systèmes de gestion de bases de données : SGBD Un système de gestion de bases de données (SGBD) est un logiciel de définition et d utilisation des bases de données, qui doit vérifier les caractéristiques suivantes : (1) Un SGBD s appuie sur un modèle abstrait. (2) Un SGBD fournit deux langages à l utilisateur. (3) Un SGBD permet l accès à des informations distribuées sur des supports différents, il permet l accès simultané aux informations, et les informations sont protégées (contre les pannes ou les opérations indues). (4) Un SGBD réalise les stockages et l accès aux informations avec le maximum d efficacité. En particulier, il permet de manipuler de grandes quantités d informations. 1.2.3 Schémas et instances Le schéma est la structure d une base de données, qu il faut définir à sa création. Une instance de la base de données est son état à un moment donné. 1.3 Les langages 1.3.1 Langage de définition de données : LDD Le langage de définition des données (LDD) est utilisé quand on crée la base de données, ou quand on en modifie la structure. 1.3.2 Langage de manipulation de données : LMD Le langage de manipulation de données (LMD) ou langage de requête est utilisé pour : (1) extraire des informations ; (2) mettre à jour les informations, sans modifier la structure de la base de données. 1.3.3 Langages hôtes Certaines tâches sont exprimées dans un langage de programmation classique, dit langage hôte. 3

1.4 Caractéristiques supplémentaires 1.4.1 La notion de vue Une vue (ou sous-schéma conceptuel) permet de regrouper une partie des informations : la partie qui concerne un utilisateur donné. 1.4.2 Transactions et contrôle de concurrence Une transaction est une unité de traitement séquentielle qui, appliquée à une base de données cohérente, restitue une base de données cohérente : en cas de panne, il faut que la base de donnée reste cohérente. Par ailleurs, il ne faut pas que plusieurs transactions modifient simultanément les mêmes informations. À cette fin, le SGBD doit gérer ce que l on appelle le contrôle de concurrence. 1.4.3 La sécurité des données Les différents utilisateurs n ont pas les mêmes droits d accès aux bases de données. C est pourquoi il faut définir (1) des catégories d utilisateurs, et (2) séparer les informations contenues dans une base de données en des sous-ensembles. Une catégorie d utilisateurs peut avoir les droits d accès suivants sur un sous-ensemble d informations : le droit de lecture, le droit de création, le droit de modification ou le droit de destruction. Ce qui peut se schématiser selon un tableau à double entrée. 1.4.4 Les contraintes d intégrité Les contraintes d intégrité permettent d éviter certaines incohérences dans une base de données, ou d améliorer l adéquation des données vis-à-vis de la réalité qui est représentée. Ces contraintes portent sur les valeurs des données, et non sur la structure de la base. Plusieurs types de contraintes peuvent intervenir : - des contraintes sur la valeur de certaines données. Par exemple une note est comprise entre 0 et 20, un taux de TVA doit prendre une des valeurs 20,6%, 5,5% ou 2,1% ; - des contraintes sur les valeurs respectives des donées. Par exemple deux assurés sociaux ne peuvent avoir le même numéro INSEE, la date de décès d une personne ne peut précéder la date de naissance, un enseignant ne peut assurer deux cours en même temps ; - des contraintes sur l évolution de la valeur des données. Par exemple le nombre de diplômes d un individu ne peut pas diminuer, etc. 4

2 Le modèle relationnel 2.1 Entités 2.1.1 Définition Une entité est un objet distinguable. 2.1.2 Ensembles Un ensemble est formé d entités similaires. 2.1.3 Attributs Un attribut A associe aux entités d un ensemble E des valeurs prises dans un domaine D. A tout ensemble E sont associés un certain nombre de domaines D 1,..., D n et d attributs A 1,..., A n. 2.1.4 Clés Etant donné un ensemble E auquel sont associés les attributs A 1,..., A n, une clé est formée d un ensemble {i 1,..., i p } {1,..., p} tel que si les valeurs prises par deux objets pour les attributs A i1,..., A ip sont égales alors les deux objets sont identiques. Une clé permet d identifier un objet. 2.1.5 Héritage IS-A Etant donnés deux ensembles d entités E et F, on dit que E est un(e) F (E IS A F ) si E possède tous les attributs de F (E hérite de ces attributs). 2.2 Relations 2.2.1 Qu est-ce qu une relation? Etant donné un ensemble D, une relation binaire R sur cet ensemble est composée de couples d éléments de D. Ceci se généralise selon la définition suivante : 5

Définition : Etant donnés n ensembles (domaines) D 1,..., D n, une relation R sur ces domaines est constituée d un ensemble de n-uplets (tuple en anglais) où x 1 D 1,..., x n D n. x 1,..., x n n est l arité de la relation (on dit que la relation est n-aire). On ne s intéressera dans ce qui suit qu aux relations finies 1. 2.2.2 Relations et attributs Une relation R peut être vue comme un ensemble d entités. Si la relation est n-aire, on associe n attributs A 1,..., A n aux n-uplets de R. On définit le schéma de la relation R : R(A 1,..., A n ) ou R(A 1 : D 1,..., A n : D n ) 2.2.3 Représentation des relations par des tableaux Les n-uplets constituent les lignes du tableau représentant une relation. L ordre entre les lignes est indifférent. Chaque colonne pourra recevoir un nom, qui sera celui de l attribut correspondant. En ce cas, l ordre entre les colonnes peut être changé, à condition que chaque colonne conserve son nom. 2.2.4 Clés des relations On considère une relation R de schéma R(A 1,..., A n ). L ensemble d attributs K = {A i1,..., A ip } est une clé de la relation si et seulement si : (i) pour toute instance de la relation, si deux n-uplets sont égaux pour A i1,..., A ip, alors ils sont égaux. (ii) Il n existe pas de sous-ensemble de K vérifiant la condition (i). On peut choisir une clé primaire parmi des clés candidates. 1. Si n = 0, la relation contient au maximum un élément, le n-uplet vide, que l on notera ɛ. Il ne faut pas confondre la relation {ɛ} avec une relation vide pour laquelle n est quelconque, et qui ne contient aucun n-uplet. 6

2.2.5 Définition d une base de données relationnelle Une base de données relationnelle : - a un schéma formé d un ensemble de schémas de relations ; - a un contenu à un moment donné qui est un ensemble de relations correspondant aux schémas. 2.3 Opérations sur les relations On définit sur les relations des opérations qui donnent pour résultats également des relations. 2.3.1 L union Etant données deux relations R et S de même arité n, l union de R et S sera la relation notée R S, telle que : R S = { x 1,..., x n ; x 1,..., x n R ou x 1,..., x n S} On remarquera que si les domaines associés à R sont D 1,..., D n et les domaines associés à S sont D 1,..., D n, alors les domaines associés à R S seront: D 1 D 1,..., D n D n Si les attributs des deux relations ne sont pas indentiques, il faudra les renommer afin qu il n en soit pas ainsi. Dans ce cas, R et S sont de schémas respectifs R(A 1,..., A n ) et S(A 1,..., A n ) et le schéma de T = R S sera T (A 1 : D 1 D 1,..., A n : D n D n). 2.3.2 L intersection Etant données deux relations R et S de même arité n, l intersection de R et S sera la relation notée R S, telle que: R S = { x 1,..., x n ; x 1,..., x n R et x 1,..., x n S} On remarquera que si les domaines associés à R sont D 1,..., D n et les domaines associés à S sont D 1,..., D n, alors les domaines associés à R S seront : D 1 D 1,..., D n D n Si les attributs de deux relations ne sont pas identiques, on les renomme. 7

2.3.3 La différence ensembliste Etant données deux relations R et S de même arité n, la différence entre R et S sera la relation notée R S, telle que: R S = { x 1,..., x n R; x 1,..., x n / S} On remarquera que les domaines associés à R S seront des sous-ensembles des domaines associés à R, et que par conséquent on pourra considérer qu il s agit des mêmes domaines que ceux associés à R. Il faut encore que les ensembles d attributs associés à R et S soient identiques. 2.3.4 Le produit cartésien Etant données deux relations R et S d arités respectives n et m, le produit cartésien de R et S sera la relation notée R S, telle que: R S = { x 1,..., x n, x n+1,..., x n+m ; x 1,..., x n R et x n+1,..., x n+m S} Cette fois-ci, il faut que les ensembles d attributs associés aux deux relations soient distincts. Si ce n est pas le cas, on peut en renommer certains avant d effectuer le produit cartésien. En ce cas, si R est de schéma R(A 1,..., A n ) et S de schéma S(B 1,..., B m ), le produit T = R S est de schéma T (A 1,..., A n, B 1,..., B m ). Le produit cartésien permet de considérer toutes les combinaisons possibles des n- uplets de la première relation avec les n-uplets de la deuxième relation. 2.3.5 La sélection On considère les opérateurs de comparaison : =,, <, >,,. Etant donnée une relation R de schéma R(A 1,..., A n ), une expression conditionnelle sur R est définie comme suit: (i) A i θ x (resp. x θ A i ) est une expression conditionnelle, où x est une constante (c està-dire l élément d un domaine), A i est un attribut et θ un opérateur de comparaison. (ii) A i θ A j est une expression conditionnelle, où A i et A j sont des attributs et θ un opérateur de comparaison. (iii) Si α est une expression conditionnelle, alors α (non α) est aussi une expression conditionnelle. (iv) Si α et β sont deux expressions conditionnelles, alors α β (α et β) et α β (α ou β) sont aussi des expressions conditionnelles. Soit x 1,..., x n un n-uplet de D 1 D n. On dira que : (i) x 1,..., x n satisfait (A i θ x) si x i θx est vérifiée. (ii) x 1,..., x n satisfait (A i θ A j ) si x i θx j est vérifiée. 8

(iii) x 1,..., x n satisfait α si x 1,..., x n ne satisfait pas α. (iv) x 1,..., x n satisfait (α β) si x 1,..., x n satisfait α et x 1,..., x n satisfait β. x 1,..., x n satisfait (α β)) si x 1,..., x n satisfait α ou x 1,..., x n satisfait β. La sélection de R selon une expression conditionnelle α est définie par: σ α (R) = { x 1,..., x n R; x 1,..., x n satisfait α} Remarque: La sélection est l opération la plus adéquate pour extraire des informations d une relation de la base de données relationnelle. Elle est en général combinée à une projection. 2.3.6 La projection Etant donnée la relation R de schéma R(A 1,..., A n ) ainsi que les nombres i 1,..., i p tous distincts appartenant à {1,..., n}, on définit la projection selon A i1,..., A ip de R, notée Π Ai1,...,A ip (R) comme étant la relation d arité p: Π Ai1,...,A ip (R) = { x i1,..., x ip ; x 1,..., x n R} La projection S de R aura un schéma tel que S(A i1,..., A ip ). 2.3.7 La jointure naturelle On considère deux relations R(A 1,..., A n ) et S(B 1,..., B m ) telles que les derniers attributs de R soient identiques aux premiers attributs de S : i {1,..., k} B i = A n k+i La jointure naturelle de R et S, notée R S, est la relation composée des (n+m k)- uplets x 1,..., x n, y k+1,..., y m tels que : x 1,..., x n R et x n k+1,..., x n, y k+1,..., y m S Soit T = R S. Cette relation est de schéma T (A 1,..., A n, B k+1,..., B m ) Remarque: Dans le cas limite où k = 0, la jointure naturelle se ramène au produit cartésien, et dans le cas limite où k = n = m elle se ramène à l intersection. 9

3 Le langage SQL 3.1 Introduction SQL (Structured Query Language) est un langage unique qui joue tout à la fois le rôle de langage de manipulation des données (LMD) et de langage de définition des données (LDD). Un modèle de données est un formalisme déclaratif (statique), alors qu un LMD, comme un LDD, est procédural. Les LMD ont pour rôle essentiel : d exprimer des requêtes, qui permettent d extraire des informations des bases de données ; de permettre la mise à jour des bases de données (ajout de n-uplets, suppression, modification). SQL offre des possibilités supplémentaires par rapport au modèle relationnel, notamment : l utilisation d expressions permettant d effectuer des calculs (calculs sur des nombres, sur des suites de caractères,... ) ; la réalisation d opérations qui portent sur des colonnes entières, ainsi les opérations dites agrégats. Le LDD permet de définir la structure de la basede donées (schéma), mais il permet également de faire évoluer le schéma de la base de données dans le temps. 3.2 La définition des données 3.2.1 La création d une nouvelle relation CREATE TABLE <relation> (<liste d attributs typés>); avec : <liste d attributs typés> ::= <attribut typé> <liste d attributs typés> ::= <attribut typé>,<liste d attributs typés> 10

et: <attribut typé> ::= <attribut> <type> [NOT NULL] Parmi les différents types possibles il y a notamment : nombres INT ou INTEGER nombres entiers MEDIUMINT plus petits nombres entiers SMALLINT petits nombres entiers TINYINT très petits nombres entiers FLOAT(n) nombres à virgules d au plus n chiffres FLOAT nombres réel DOUBLE ou REAL nombres réels à double précision DECIMAL(n,p) nombres composés de n caractères avec p chiffres après la virgule texte CHAR(n) suite composée de n caractères VARCHAR(n) suite composée d au plus n caractères TEXT suite composée d au plus 65535 caractères BLOB suite composée d au plus 65535 caractères sensible à la casse temps DATE date YYYY-MM-DD TIME heure HHH:MM:SS DATETIME combinaison d une date et d une heure Le trait NOT NULL indique qu un attribut ne peut pas prendre la valeur NULL, c est-àdire qu il doit recevoir une valeur effective. 3.2.2 La suppression d une relation ou la modification d un schéma On supprime une relation par : DROP TABLE <relation>; On modifie le schéma d une relation, en ajoutant des attributs, ou en modifiant le type d un attribut par : ALTER TABLE <relation> ADD (<liste d attributs typés>); ALTER TABLE <relation> MODIFY (<attribut typé>); 3.2.3 Les index Les index sont utilisés pour accélérer l accès à une relation. Ils sont créés par : CREATE [UNIQUE] INDEX <index> ON <relation> (<liste d attributs>); 11

avec: <liste d attributs> ::= <liste d attributs> ::= <attribut> <attribut>,<liste d attributs> Le trait UNIQUE force le fait qu un attribut est une clé. On peut supprimer un index sans toucher à la relation à laquelle il s applique : DROP INDEX <index>; 3.3 La manipulation des données 3.3.1 L instruction SELECT portant sur une relation Une requête est effectuée à l aide de l instruction SELECT. Une forme simplifiée de cette instruction est la suivante : SELECT A 1,..., A k FROM R WHERE Ψ; où R est une relation, A 1,..., A k sont des attributs de cette relation et où Ψ est une formule logique dont on détaillera la forme ci-dessous. On peut dire que SELECT réalise tout à la fois une sélection (extraction d un certain nombre de n-uplets de la relation, c est-à-dire de lignes du tableau qui la représente, en fonction de critères exprimés par la formule logique) et une projection (extraction de certains attributs seulement, autrement dit de certaines colonnes du tableau qui représente la relation, celles apparaissant immédiatement après le mot-clé SELECT). Le résultat sera une nouvelle relation, donnée encore sous la forme d un tableau. Mais, si l on s en tient à l expression ci-dessus, les doublons ne seront pas éliminés. Afin d éliminer les doublons, on écrit : SELECT DISTINCT A 1,..., A k FROM R WHERE Ψ; Remarques : 1. On peut changer les attributs dans la relation construite par SELECT, autrement dit l intitulé des colonnes qui constitueront le résultat, en créant un alias de la manière suivante : SELECT A <alias> FROM R WHERE Ψ; 12

Notez l absence de ponctuation entre l attribut et son alias. 2. Le symbole * est utilisé pour représenter la liste de tous les attributs d une relation donnée (cas d une sélection sans projection). 3.3.2 L instruction SELECT portant sur plusieurs relations Une instruction SELECT peut porter sur deux relations, ou plus. En ce cas, les attributs seront notés R.A (attribut A de la relation R) lorsqu il sera nécessaire d éliminer une ambiguïté. La forme générale (mais simplifiée) de cette instruction devient la suivante : SELECT R i1.a 1,..., R ik.a k FROM R 1,..., R m WHERE Ψ; où R 1,..., R m sont des relations toutes distinctes, i 1,..., i k sont des nombres compris entre 1 et m et où Ψ est une formule logique. Les relations apparaissant après FROM sont les relations dont on extrait des attributs mais aussi les relations dont les attributs entrent dans la formule logique Ψ. Afin de comprendre ce qui se produit en ce cas, considérons un SELECT portant sur deux relations : SELECT R i1.a 1,..., R ik.a k FROM R 1, R 2 WHERE Ψ; Tout se passe comme si on faisait le produit des deux tableaux, autrement dit à chaque ligne de R 1 on associe autant de lignes du tableau produit qu il y a de lignes dans R 2. Les critères et extractions s appliquent à ce tableau produit. Le symbole * désigne alors toutes les colonnes du tableau produit, mais on peut écrire R.* si l on ne considère que l ensemble des attributs de la relation R. Les alias peuvent être affectés aux relations, ce qui permet par exemple de faire une double référence à une même relation dans une requête, de la manière suivante : SELECT r i1.a 1,..., r ik.a k FROM R r 1, R r 2 WHERE Ψ; On peut ainsi faire des comparaisons entre deux lignes d une même relation. 13

3.3.3 La clause WHERE La clause WHERE est optionnelle. Si on l omet, cela revient à obtenir une projection sans sélection. 3.3.3.1 Les connecteurs logiques La forme générale de la clause WHERE est : WHERE <condition> avec : <condition> ::= <test> <test> AND <condition> <test> OR <condition> NOT <condition> et : <test> ::= (<condition>) <expression> <opérateur de comparaison> <expression> Les opérateurs de comparaison sont : =,!=, >=, <=, <, >. 3.3.3.2 Les opérations arithmétiques On a : <expression> ::= <opérande> <opérateur> <expression> <opérande> et: <opérande> ::= <attribut> <constante> (<expression>) Les opérateurs (arithmétiques) sont : +, -, *, /. Remarque : On peut avoir des expressions à la place des attributs dans les instructions SELECT. 3.3.3.3 Les opérations sur des suites de caractères LENGTH(ch) détermine la longueur de la suite ch. LOWER(ch) convertit la suite ch en minuscules. UPPER(ch) convertit la suite ch en majuscules. MID(ch,m,n) extrait de ch n caractères à partir du m-ième (moins si ce n est pas possible). LOCATE(ch1,ch2) détermine la position de la sous-suite ch1 dans ch2 et renvoie 0 si ch1 n appartient pas à ch2. CONCAT(ch1, ch2) effectue la concaténation des deux suites de caractères. L opérateur LIKE permet d écrire 14

<test> ::= <attribut> LIKE <constante> où la constante est une suite de caractères (encadrée par des quotes) qui comprend les caractères particuliers: % qui désigne n importe quelle suite de caractères, qui désigne n importe quel caractère. 3.3.3.4 Les opérations sur les dates et heures NOW() détermine la date et l heure courantes. CURDATE() détermine la date courante. CURTIME() détermine l heure courante. YEAR(date) détermine le numéro de l année de date. MONTH(date) détermine le numéro du mois de date. DAYOFYEAR(date) détermine le numéro du jour de date, entre 1 et 366. DAYOFMONTH(date) détermine le numéro du jour dans le mois de date, entre 1 et 31. HOUR(heure) détermine une heure, entre 0 et 23. MINUTE(heure) détermine une minute, entre 0 et 59. SECOND(heure) détermine une seconde, entre 0 et 59. 3.3.3.5 Les opérations ensemblistes Les éléments qui forment un ensemble constant sont entre parenthèses et séparés par des virgules. Sinon, les ensembles peuvent être définis à l intérieur des clauses WHERE à l aide de l instruction SELECT, autrement dit de sous-requêtes. On peut avoir: <test> ::= <attribut> [NOT] IN <ensemble> pour un test qui vérifie si un attribut appartient (ou n appartient pas) à un ensemble, <test> ::= <attribut> <opérateur de comparaison> ANY <ensemble> pour des tests qui vérifent si un attribut est comparable à un des éléments de l ensemble, <test> ::= <attribut> <opérateur de comparaison> ALL <ensemble> pour des tests qui vérifent si un attribut est comparable à tous les éléments de l ensemble. 3.3.4 Les opérations agrégats Ces opérations s appliquent à la colonne entière d une relation. Les différents opérateurs possibles sont : SUM (somme) AVG (moyenne) COUNT (compter) MIN 15

MAX L instruction SELECT peut alors se présenter sous la forme : SELECT [DISTINCT] <liste d agrégats> FROM <liste de relations> WHERE Ψ; avec: <liste d agrégats> ::= <agrégat> <agrégat> <liste d agrégats> et: <agrégat> ::= <opérateur agrégat>(<attribut>) Le résultat d une telle requête comportera nécessairement une seule ligne. 3.3.5 Les groupes On peut partitionner les relations en sous-relations ou groupes. Un groupe rassemble tous les n-uplets qui ont les mêmes valeurs pour certains attributs. L instruction SELECT peut être utilisée de la manière suivante : SELECT [DISTINCT] <liste d attributs> <liste d agrégats> FROM <liste de relations> [WHERE Ψ] GROUP BY <liste d attributs>; La liste d attributs qui apparaît après SELECT doit comporter des attributs qui figurent dans le groupe BY. Les agrégats ne sont plus calculés pour une colonne entière, mais pour chaque groupe. Le résultat comportera autant de lignes distinctes qu il y a de groupes. Des conditions peuvent être définies sur les groupes, en utilisant la clause HAVING, de la manière suivante : SELECT [DISTINCT] <liste d attributs> <liste d agrégats> FROM <liste de relations> [WHERE Ψ] GROUP BY <liste d attributs> HAVING Φ; On ne s intéresse qu aux groupes qui vérifient la condition Φ, condition qui met nécessairement en jeu des agrégats. 16

3.3.6 Le tri des résultats On peut ordonner les résultats d une requête. Cela se fait (de manière simplifiée) par : SELECT [DISTINCT] <liste d attributs> FROM <liste de relations> [WHERE Ψ] ORDER BY <attribut> [DESC]; Le trait DESC indique que le tri se fait de manière décroissante, alors que par défaut il s effectue de manière croissante. Un tri peut se faire sur plusieurs attributs au lieu d un seul. Auquel cas, s il y a égalité des valeurs pour le premier attribut de la liste, c est le deuxième qui décide, et ainsi de suite. 3.3.7 La mise à jour 3.3.7.1 L insertion de nouveaux n-uplets INSERT INTO <relation> [(<liste d attributs>)] VALUES (<liste de valeurs>); avec : <liste de valeurs> ::= <liste de valeurs> ::= <valeur> <valeur>,<liste de valeurs> Les attributs qui ne figurent pas dans la liste se voient affecter la valeur NULL ; il faut que ces attributs n aient pas reçu à leur création le trait NOT NULL. Si la liste d attributs est omise, il faut que les valeurs correspondent aux attributs de la relation telle qu elle a été définie par CREATE, et dans l ordre. Il faut en particulier qu il y ait une compatibilité de types. L instruction INSERT peut également être utilisée afin d initialiser une nouvelle relation (déjà créée) ou d y ajouter de nouveaux n-uplets, à partir d une ou plusieurs autres relations, de la manière qui suit : INSERT INTO <relation> <instruction SELECT>; 3.3.7.2 La suppression de n-uplets DELETE FROM <relation> 17

WHERE <condition>; On supprime de la relation tous les n-uplets qui vérfient la condition. 3.3.7.3 La modification de n-uplets UPDATE R SET A i1 = E 1,..., A ik = E k WHERE Ψ; Pour chaque n-uplet de la relation R qui vérifie Ψ et pour tout j, l attribut A ij la valeur définie par l expression E j. prend 18

4 La conception des bases de données 4.1 Le schéma entité/association Une façon de construire une base de données consiste à commencer par décrire la réalité à représenter sous la forme abstraite d entités et d associations entre ces entités. Ce qui se traduit ensuite sous la forme de relations. 4.1.1 Les entités On commence par déterminer quelles sont les entités (cf. ci-dessus en 2.1.1). Ces entités possèdent des attributs, dont certains (qui forment les clés) permettent de les distinguer les unes des autres (ce qui est toujours possible puisque les entités sont distinguables). 4.1.2 Les associations On cherche quelles sont les associations qui lient les entités introduites. Il existe des associations un à plusieurs (1 : n) (un homme peut être le père de plusieurs enfants, mais un enfant ne peut avoir qu un père), et des associations plusieurs à plusieurs (n : m) (un professeur peut être l enseignant de plusieurs étudiants, et un étudiant peut avoir plusieurs enseignants). Ces associations sont schématisées de la manière suivante : A B (asssociation un à plusieurs de A à B) ; A B (asssociation plusieurs à plusieurs de A à B). Certaines associations peuvent recevoir des attributs qui leur sont propres. Par exemple l association (professeur, étudiant) peut recevoir l attribut enseignement (qui indique quel est le cours du professeur suivi par l étudiant). Cela n est intéressant que pour les associations plusieurs à plusieurs. On évite les associations liant plus de deux entités. Si on est tenté de le faire, on remplace cette association par une nouvelle entité, qui va être liée par des associations binaires (un à plusieurs) à chacune des entités considérées primitivement. Il n y a donc pas de règle absolue pour déterminer ce qui doit être représenté sous la forme d une entité et ce qui doit être représenté sous la forme d une association. Les critères à adopter sont les suivants : (1) rester le plus simple possible ; 19

(2) éviter les associations compliquées ; (3) éviter (absolument) les redondances, qui pourraient conduire à des incohérences ; (4) ne pas mélanger dans une même entité des concepts différents. 4.1.3 La traduction en base de données (1) Chaque entité donne lieu à une relation distincte, avec de préférence une clé (primaire) par relation. (2) Pour chaque association un à plusieurs de A à B, la clé de A devient un (ou plusieurs) attribut(s) de B, le nom des attributs pouvant être changé. Les attributs de A dans B forment une clé étrangère. (3) Pour chaque association plusieurs à plusieurs de A à B, on crée une relation AB, la clé étant constituée par l union des deux clés de A et B. Éventuellement on ajoute d autres attributs, les attributs de l association. 4.2 Les dépendances fonctionnelles 4.2.1 Définitions Soit U un ensemble d attributs. On définit une dépendance fonctionnelle sur U par deux sous-ensembles non vides X et Y de U. On dit que Y dépend fonctionnellement de X, et on écrit : X Y X sera la partie gauche de la dépendance, Y en sera la partie droite. Dans les parties droites comme dans les parties gauches des dépendances fonctionnelles on notera A 1... A n pour {A 1,..., A n }, XY pour X Y et XA (ou AX) pour X {A}. Soit R une relation de schéma R(A 1,..., A n ), et soient X et Y des sous-ensembles de {A 1,..., A n }. On dira que la relation R satisfait la dépendance fonctionnelle X Y si pour toute instance de R et pour tout jeu de valeurs associé aux attributs de X, il y a au maximum un jeu de valeurs associé aux attributs de Y. On ne peut déterminer les dépendances fonctionnelles qu en référence à la réalité que l on veut décrire. 4.2.2 Clés Soit R une relation de schéma R(A 1,..., A n ) dont X est une clé. Pour tout sousensemble Y de {A 1,..., A N }, R va satisfaire la dépendance fonctionnelle X Y. 20

Inversement, supposons que la relation R satisfait les dépendances d un ensemble F. Par définition, une clé (candidate) de R sera un sous-ensemble X de {A 1,..., A n } vérifiant : (i) X A 1... A n est une dépendance satisfaite par R ; (ii) il n y a pas de sous-ensemble strict Y de X tel que Y A 1... A n soit une dépendance satisfaite par R. Si X vérifie uniquement la condition (i), on dira que c est une sur-clé de la relation. 4.3 Décompositions 4.3.1 Définitions Etant donné un ensemble d attributs X = {A 1,..., A n }, une collection d ensembles ρ = X 1,..., X p est une décomposition de X si X 1 X p = X. ρ définit une décomposition R 1,... R p de toute relation R de schéma R(A 1,..., A n ) en prenant, pour tout i, R i = Π Xi (R). 4.3.2 Décomposition sans perte d information La décomposition ρ = X 1,..., X p est sans perte d information pour R si on a : R = Π X1 (R) Π Xp (R) Soient X = {A 1,..., A n } un ensemble d attributs, ρ = X 1,..., X p une décomposition de X et F un ensemble de dépendances fonctionnelles. On dit que ρ conserve l information relativement à F si, pour toute relation R qui satisfait toutes les dépendances de F, la décomposition de R selon ρ vérifie la condition de conservation de l information. 4.3.3 Décompositions qui conservent les dépendances Les dépendances fonctionnelles expriment certaines contraintes que les relations doivent vérifier. Si ces dépendances sont perdues par une décomposition, il se peut que les contraintes ne soient plus vérifiées. La projection d un ensemble F de dépendances fonctionnelles sur un ensemble d attributs Z est l ensemble Π Z (F) réduit aux dépendances qui ne mettent en jeu que des attributs de Z. 21

Une décomposition ρ = X 1,..., X p conserve un ensemble de dépendances fonctionnelles F si l union i {1,...,p} Π Xi (F) des projections sur les ensembles X 1,..., X p revient à l ensemble F. 4.4 Formes normales 4.4.1 Introduction La construction du schéma d une base de données relationnelle doit se plier aux exigences suivantes : - éviter les redondances, - ne pas risquer d introduire des incohérences ou des pertes d informations à la mise à jour. Il faut par ailleurs que les requêtes ne soient pas trop coûteuses en temps. 4.4.2 Première forme normale À chaque attribut est associé une valeur atomique, c est-à-dire une valeur qui n est pas composée de plusieurs éléments. Les valeurs contenues dans la base ne doivent pas être susceptibles de changer dans le temps sans que cela résulte de l intervention d un utilisateur (par exemple l âge d une personne ne peut être un attribut). 4.4.3 Deuxième forme normale Si une relation comporte une clé primaire composée, il faut que tous les attributs nonclés dépendent fonctionnellement de la totalité de la clé primaire. S il n en est pas ainsi : - on regroupe les attributs dépendant de la totalité de la clé primaire dans une relation (qui conserve cette clé) ; - pour chaque partie de la clé primaire dont dépendent fonctionnellement d autres attributs, on crée une nouvelle relation qui regroupe la partie de la clé primaire et les attributs qui en dépendent. La clé de cette nouvelle relation est la partie de la clé de la relation d origine. 4.4.4 Troisième forme normale Une relation est dite sous la troisième forme normale (3NF : 3rd Normal Form) si tout attribut qui ne fait pas partie de la clé : - dépend fonctionnellement de la totalité de la clé ; - ne dépend d aucun attribut qui ne fait pas partie de la clé. 22

S il n en est pas ainsi, supposons un attribut A (qui dépend nécessairement de la clé X) qui n appartient pas à la clé, et un ensemble Y d attributs qui dépendent de A. En ce cas on décompose la relation selon les ensembles XA et AY. 4.4.5 Forme normale de Boyce-Codd Soient R une relation de schéma R(A 1,..., A n ) et F l ensemble des dépendances fonctionnelles satisfaites par la relation. La relation est sous forme normale de Boyce-Codd (BCNF : Boyce-Codd Normal Form) si toute dépendance X A vérifiée par la relation est telle que X est une clé (ou une sur-clé) de R. 23