Bases de données cours 2 Éléments d algèbre relationnelle. Catalin Dima



Documents pareils
Bases de données cours 1

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

Le langage SQL Rappels

1 Introduction et installation

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

Langage SQL : créer et interroger une base

Les bases de données

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

Bases de Données. Plan

Le Langage SQL version Oracle

Vincent Augusto

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

UML et les Bases de Données

Rappel sur les bases de données

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

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

TP Bases de données réparties

COURS de BASES de DONNEES

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

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Exercices Corrigés Premières notions sur les espaces vectoriels

I4 : Bases de Données

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

INTRODUCTION AU DATA MINING

Système binaire. Algèbre booléenne

Bases de données avancées Introduction

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. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

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

Programmation linéaire

Interpréteur d algèbre relationnelle

Systèmes de Gestion de Bases de Données

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

16H Cours / 18H TD / 20H TP

Évaluation et optimisation de requêtes

1 Introduction. 2 Le modèle relationnel. 3 Algèbre relationnelle 4 SQL. 5 Organisation physique des données 1/228

Bases de données. Chapitre 1. Introduction

Bases de données relationnelles & SQL

Bases de données - Modèle relationnel

Algèbre binaire et Circuits logiques ( )

Dossier I Découverte de Base d Open Office

UML. Diagrammes de classes (suite) Delphine Longuet.

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

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

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

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

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

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

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Modèle Entité/Association

INFORMATIQUECOMMUNE CPGE. Introduction aux Bases de Données Relationnelles

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

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

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

Intégration et probabilités TD1 Espaces mesurés Corrigé

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Cours de Probabilités et de Statistique

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

Le Langage De Description De Données(LDD)

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

INFO 364 : Bases de Données Projet Professeur : Esteban Zimányi Assistants : Pierre Stadnik et Mohammed Minout Année Académique :

MySQL / SQL EXEMPLES

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données réparties: Fragmentation et allocation

LE LANGAGE SQL2 1. INTRODUCTION

Le produit semi-direct

OpenPaaS Le réseau social d'entreprise

Bases de données documentaires et distribuées Cours NFE04

1. Base de données SQLite

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

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

Intégration et probabilités TD1 Espaces mesurés

Bases de données relationnelles

Informatique Générale

TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager

Image d un intervalle par une fonction continue

Chapitre 2 Le problème de l unicité des solutions

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Plan 1/9/2013. Génération et exploitation de données. CEP et applications. Flux de données et notifications. Traitement des flux Implémentation

TP 8: LES OPERATEURS ENSEMBLISTES

Bases de données élémentaires Maude Manouvrier

OCL - Object Constraint Language

Continuité en un point

données en connaissance et en actions?

Introduction à MATLAB R

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Conception d une base de données

Systèmes de Gestion de Bases de Données (SGBD) relationnels Maude Manouvrier

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

MODE OPERATOIRE OPENOFFICE BASE

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Cours d Analyse. Fonctions de plusieurs variables

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Un K-espace vectoriel est un ensemble non vide E muni : d une loi de composition interne, c est-à-dire d une application de E E dans E : E E E

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

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

Les Entrepôts de Données

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Transcription:

Bases de données cours 2 Éléments d algèbre relationnelle Catalin Dima

Qu est-ce qu une algèbre? Algèbre : ensemble de domaines et d opérations. Exemple : les nombres (naturels, réels, complexes). Leurs opérations : +,,,/, produit vectoriel, etc. Autre exemple : la logique et ses opérateurs. Chaque opération a une arité : Binaire pour +,,,/, unaire pour. Règles de construction des opérations,... ou axiomes définissant les opérations (lorsque celles-ci ne sont pas définissables à partir d autres opérations plus simples!). Axiomes pour +, (associativité, commutativité, distributivité, etc.). Axiomes pour,. Définition pour (loi de Morgan). Calcul dans l algèbre : Variables, fonctions, (systèmes de) équations, etc.

Algèbre relationnelle Les objets sont des relations. Définies par leur arité : nombre et nom des colonnes/attributs. Chaque colonne étant définié aussi par son domaine. Les variables (relvars) sont des relations aussi. Les lignes d une table, qui sont les éléments d une relation, ne sont pas référencés par les relvars!... mais le plus souvent on définit les relations par les propriétés que leur tuples doivent satisfaire! D où une des difficultés du calcul relationnel... Les opérateurs sont de plusieurs types : Opérateurs d ensembles (eh oui! une relation est un ensemble!). Opérateurs sur les tuples (mais définis au niveau relation, et pas au niveau tuple!). Opérateurs d aggregation. Opérateurs dérivés, utilisant les contraintes.

Domaines (ou types de données) Chaque colonne dans un table est accompagnée par le domaine de valeurs auquel appartiennent les éléments de la colonne. Domaine = réservoir de valeurs légales. Exemple : INTEGER, CHAR (chaîne de caractères), BOOLEAN, FLOAT, DOUBLE, DATE, TIME, etc. Ces sont des domaines standard dans chaque LDD/LMD, même si souvent sous des noms différents. Souvent on parle aussi de type = domaine. Chaque domaine vient avec son propre ensemble d opérations : Opérations booléennes pour BOOLEAN, non-disponibles pour les autres types. Opérations arithmétiques pour INTEGER, FLOAT, DOUBLE (avec leurs restrictions). Opérations spécifiques sur les chaînes de caractères. Ces informations sont stockées dans le catalogue d un SGBD.

Arité et tuples (ou n-uplets) Une relation est définie par : L ensemble de ses colonnes (arité), chacune ayant son nom et domaine. L ensemble de ses éléments. Tuple = élément d une relation. Si les colonnes d une relation ont les domaines D 1, D 2, D 3, alors une relation est un sous-ensemble R D 1 D 2 D 3 Ses éléments sont des tuples de valeurs (v1, v 2, v 3 ) où v 1 D 1, v 2 D 2, v 3 D 3. Dans cette notation le nom des colonnes est l indice des domaines (ou l indice des éléments de chaque tuple). R est le plus souvent strictement inclue dans D1 D 2 D 3! Une table particulière ne contient que très rarement toutes les combinaisons de valeurs! Cardinalité d une relation = nombre de tuples. Clé primaire = attribut qui a une valeur différente pour chaque tuple dans la relation.

Représentation tabulaire Relation = tableau : En-tête donnant le nom de chaque colonne (ou attribut), plus son domaine. Une ligne par tuple dans la relation. Plusieurs colonnes peuvent avoir le même type! Certaines valeurs du domaine d une colonne peuvent ne pas être présentes dans la colonne respective. Arité = (grosso modo) l en-tête du tableau. Mais assez souvent, l arité ne désigne que le nombre de colonnes, pas leur nom et type. Quelques contraintes : Unicité des tuples (mais, à la suite d application de diverses opérations de mise à jour, on peut obtenir des duplicats... à revoir!). Pas d ordre dans la liste des tuples d une relation. Pas d ordre dans la liste des noms d attributs. Valeurs atomiques dans chaque colonne (aussi à revoir...).

Exemple de relation Id Nom Prénom Dept Salaire(kE) INT CHAR(20) CHAR(20) CHAR(5) INT 1 Dupont Jean D1 32 10 Ndiaye Cyril D3 40 4 Dupont Anne D2 27 67 Mahrzoug Amine D3 31 6 Bonnet Franck D2 27 Arité/schéma :... Attributs et leur domaines :... Clé primaire : Id.

Opérations ensemblistes sur les relations Supposons deux relations R 1, R 2 (ou deux tables). Hypothèse : R1, R 2 D 1... D n (même schéma de relation!). Ces sont des ensembles de tuples, donc les opérations ensemblistes peuvent s appliquer sur R 1 et R 2. R 1 R 2 = { t t R 1 ou t R 2 } Contraintes : R 1 R 2 = { t t R 1 et t R 2 } R 1 \ R 2 = { t t R 1 et t R 2 } Les deux relations doivent avoir la même arité/schéma et les mêmes attributs (noms et domaines). Avant de calculer les résultats d opérations, les attributs des deux relations doivent être placés dans le même ordre dans les deux opérations (en prenant une des deux comme patron ).

Opérations non-booléennes sur les relations Opérations dont le résultat n a pas la même structure (arité) que les opérandes : Opérations enlevant une partie de la relation : sélection (éliminer des tuples selon une règle spécifique), et projection (éliminer des colonnes). Opérations augmentant les relations : produit cartésien, jointures (divers types), etc. Opération de renommage d attributs.

Projection Projection d une relation R D 1 D 2... D n sur un sous-ensemble d attributs i 1,...,i k : π i1,...,i k (R) = { (t i1,...,t ik ) (t 1, t 2,...,t k ) R } Prenons notre table employés R INT Id CHAR(20) Nom CHAR(20) Pre CHAR(5) Dept INT Sal. La projection π Nom,Dept,Sal est la suivante : Nom Dept Salaire(kE) CHAR(20) CHAR(5) INT Dupont D1 32 Ndiaye D3 40 Dupont D2 27 Mahrzoug D3 31 Bonnet D2 27

Produit cartésien Étant donnés deux relations : R 1 D 1... D n R 2 E 1... E m Leur produit cartésien est une relation : définie comme suit : R 1 R 2 D 1... D n E 1... E m R 1 R 2 = { (t 1,...,t n, u 1,...,u m ) (t 1,...,t n ) R 1,(u 1,...,u m ) R 2 } Chaque tuple de R 1 crée, ensemble avec chaque tuple de R 2, un nouveau tuple de R 1 R 2. Le schéma de R 1 R 2 contient la liste d attributs de R 1, suivie (duplicats possibles!) de la liste d attributs de R 2. Désambiguation des attributs provenant des deux relations : préfixer par le nom de la relation comme pour les champs d un struct en C ou objet en Java! Exemple...

Sélection Supposons une relation R D 1... D n,... et une condition C, définie sur les domaines D 1,...,D n et qui utilise comme variables les noms d attributs de la relation R. Par exemple, définie par une combinaison booléenne de comparaisons d expressions arithmétiques... Exemple plus précis pour notre table employés : C = (Salaire < 35) (startswith(nom, Du)) La sélection de R contrainte par C est la nouvelle relation : σ ( R) = { t R les valeurs d attributs dans t satisfont C } Plus précisément, on élimine tout tuple dont les valeurs d attributs ne satisfont pas C. Exemple avec notre table employés et la condition C ci-dessus...

Jointure naturelle Étant donnés deux relations : R 1 D 1... D n R 2 E 1... E m Supposons qu une partie des attributs de R 1 est identique (nom+domaine) à une partie des attributs de R 2. Pour simplicité, supposons que cette partie est D1,...,D k pour R 1, attributs qui sont identiques (tant leur nom que leur domaine) respectivement avec les attributs E 1,...E k de R 2. La jointure naturelle de R 1 avec R 2 est : R 1 R 2 = { (t 1,...,t n, u k+1,...,u m ) (t 1,...,t n ) R 1, (t 1,...,t k, u k+1,...,u m ) R 2 } On fusionne chaque tuple t de R 1 avec un tuple u de R 2 si, dans la partie commune d attributs, t a les mêmes valeurs que u. On peut exprimer cette condition en utilisant la projection sur les tuples : π D1,...,D k (t) = π E1,...,E k (u).

Exemple de jointure naturelle (Tous les domaines ci-dessous sont le domaine des entiers) : R 1 = A B C 1 2 5 3 4 6 2 5 12 6 7 8 R 2 = B C D E 2 5 6 3 4 6 8 10 5 7 10 3 4 6 7 8 3 4 6 8 R 1 R 2 = A B C D E 1 2 5 6 3 3 4 6 8 10 3 4 6 7 8 Remarquer qu il y a, tant dans R 1 que dans R 2, des tuples défaillants qui ne participent pas dans les tuples résultats. Remarquer aussi qu il y a des tuples dans R 1 qui peuvent se combiner avec plusieurs tuples de R 2 pour produire des tuples résultat.

θ-jointure Prenons encore une fois deux relations : R 1 D 1... D n R 2 E 1... E m Et une condition C sur l ensemble des attributs (de R 1 et de R 2 ). La θ-jointure dirigée par C de R 1 avec R 2 est : R 1 C R 2 = { (t 1,...,t n, u 1,...,u m ) (t 1,...,t n ) R 1, (u 1,...,u m ) R 2 et (t 1,...,u m ) satisfait C } Il s agit en fait d une combinaison d un produit cartésien de R 1 et R 2, suivi par une sélection dirigée par C du résultat. Plus formellement, R 1 C R 2 = σ C (R 1 R 2 ) Exemple avec R 1 C R 2 ou C = R 1.C < R 2.B et nos deux relations entières ci-dessus.

Jointure externe Parfois, perdre les tuples défaillants n est pas convenable... Opération de jointure permettant de retrouver aussi les tuples défaillants, en mettant des valeurs inconnu (ou ) pour les attributs qui ne sont définis pas dans les résultats. Deux variantes : jointure externe gauche et droite. Formellement, en partant du cadre des jointures naturelles : R 1 L R 2 = { (t 1,...,t n, u k+1,...,u m ) (t 1,...,t n ) R 1, si (u k+1,...,u m ) R 2 alors u k+1 =... = u m = } Définition similaire pour la jointure externe droite R 1 que pour celle bilaterale. R R 2, ainsi

Exemple de jointure externe gauche et bilaterale R 1 = A B C 1 2 5 3 4 6 2 5 12 6 7 8 R 2 = B C D E 2 5 6 3 4 6 8 10 5 7 10 3 4 6 7 8 3 4 6 8 R 1 L R 2 = A B C D E 1 2 5 6 3 3 4 6 8 10 3 4 6 7 8 2 5 12 6 7 8 R 1 R2 = A B C D E 1 2 5 6 3 3 4 6 8 10 3 4 6 7 8 2 5 12 6 7 8 5 7 10 3 3 4 6 8

Renommage Il s agit simplement de renommer la relation et/ou un (ou plusieurs) attribut(s) d une relation. Pour une relation dont les attributs sont nommés A 1,...,A n, C est à dire, dans notre notation, R DA1... D An, L opération de renommage de R en S et de tous les attributs en B 1,...,B n est notée : ρ S(B1,...,B n) Exemple pour notre table employé, le résultat du renommage ρ list-emp(idemp,nom,pre,ind,rev) est le suivant : IdEmp Nom Pre Ind Rev INT CHAR(20) CHAR(20) CHAR(5) INT 1 Dupont Jean D1 32 10 Ndiaye Cyril D3 40 4 Dupont Anne D2 27 67 Mahrzoug Amine D3 31 6 Bonnet Franck D2 27

Autres opérations Semi-jointure de deux relations R 1 et R 2, notée R 1 R 2 : le multi-ensemble de tuples t de R 1 pour lequel il existe au moins un tuple t dans R 2 qui possède les mêmes valeurs sur tous les attributs communs entre les deux relations. Quotient (ou division) : Supposons deux relations R1 = (A 1,...,A n, B 1,...B m), et R 2 = (B 1,...,B m) (donc attributs de R 2 attributs de R 1 ). R1 R 2 composé de tous les tuples t sur les attributs propres à R 1 tels que pour tout tuple s dans R 2, le tuple ts appartient à R 1. ts correspond au produit cartésien des deux tuples t et s.

Opérations combinées Toutes les opérations présentées peuvent être combinées entre elles. Les requêtes de BD sont des combinaisons de ces opérations. Exemple : Donner les noms des employés dont le salaire est inférieur à 40kE. ) Une solution possible : π Nom (σ Salaire<40 (Employés) Une activité essentielle tout au long de ce module : construire des combinaisons d opérations pour résoudre une requête. Une petite partie en algèbre relationnelle, puis la plupart du temps en SQL (qui est une implémentation de l algèbre relationnelle)!

Opérations dépendentes Est-ce qu on a défini toutes les opérations dont on va jamais s en servir pour écrire des requêtes? D autres variantes de jointure/auto-jointure, division, etc. etc... Heureusement, une petite partie de ces opérations suffira! Comme pour la logique : pas besoin de considérer tous les opérateurs booléens, il suffit d utiliser deux ( et et non ) et on peut tout exprimer! Opérateurs de base (ou indépendents) : Union, différence, projection, sélection, produit cartésien et renommage. Tous les autres opérateurs peuvent se définir à partir de ces six! Bien connu pour l intersection. Jointure naturelle :... Une autre possibilité d ensemble d opérations de base : sélection, projection, renommage, jointure naturelle, opérateurs booléens.

Multi-ensembles et relations sur les multi-ensembles Certaines opérations peuvent produire des relations ayant des duplicats. Cela sort de notre modèle de relations en tant qu ensembles. Modèle d ensemble avec duplicats : multi-ensemble. Formellement, un multi-ensemble sur un ensemble A est une fonction f : A N : f(a) = 0 indique que a n apparaît pas dans le multi-ensemble f. f(a) = 1 indique que a apparaît une seule fois dans f. f(a) = 2 indique que a apparaît deux fois dans f, etc. Opérations booléennes positives (union, intersection) : (f 1 f 2 )(a) = f 1 (a)+f 2 (a) (f 1 f 2 )(a) = min(f 1 (a), f 2 (a)) Le complément ne peut se définir que si A est fini.

Les autres opérations de l algèbre relationnelle sur les multi-ensembles (f 1 f 2 )(a 1,...,a m,b 1,...,b n ) = f 1 (a 1,...,a m ) f 2 (b 1,...,b n ) π i1,...,i k (f)(a 1,...,a n ) = {f(t) t D 1... D n, π i1,...,i k (t) = π i1,...,i k (a 1,...,a n ) { f(t) si t satisfait C σ C (f)(t) = 0 sinon. Les autres opérations se généralisent facilement aussi.

Opérations étendues Élimination des duplicats : pour convertir un multi-ensemble en ensemble. Notation : δ(r), où R est le multi-ensemble donné. Opération aggrégées : SUM, AVG (moyenne), MIN, MAX, COUNT. Ex. : SUM(R.Salaire) produit la somme des salaires des employés. Opérateurs de tri : Étant donnée une relation R et une liste d attributs L de R, τl (R) trie les tuples de R selon les valeurs des attributs dans L, considérés dans l ordre de leur apparition dans la liste. Projection étendue : certains attributs peuvent changer de nom, d autres nouveaux peuvent être construits.

Opérateurs de groupement L opérateur de groupement, premier cas : considérons une relation R et une liste d attributs L. γ L (R) représente l ensemble de tuples construits comme suit : Regrouper d abord les tuples de R en un ensemble de groupes, chaque groupe ayant une seule combinaison de valeurs pour les attributs dans L. Pour chaque élément de l ensemble de groupes, produire un seul tuple dans le résultat. Exemple : R = A B C 1 2 3 1 2 4 1 1 3 2 1 3 2 1 2 γ A,B (R) = A B 1 2 1 1 2 1

Opérateur de groupement (2) L opérateur de groupement, 2e cas : considérons une relation R, une liste d attributs L et un opérateur aggrégé op. γ L,op >NvAttr (R) se construit comme suit : Regrouper d abord les tuples de R en un ensemble de groupes, chaque groupe ayant une seule combinaison de valeurs pour les attributs dans L. À l intérieur de chaque groupe, appliquer l opérateur d aggrégation op, et produire, avec les résultats, une nouvelle colonne contenant le résultat. Enfin, produire un tuple pour chaque combinaison de valeurs présente pour les attributs dans la liste L plus NvAttr. Exemple pour γ SUM(B) (R) et la relation ci-dessus : γ A,SUM(B) >SB (R) = a SB 1 5 2 2 Noter que l élimination des duplicats est une opération dérivée de l opération de groupement.

Construction des requêtes Il est rare de trouver des expressions résolvant des requêtes sur une seule BD. Supposons une BD films, de schéma (Titre, Producteur, Réalisateur, Budget, ActeurPP, ActricePP)... et une autre BD programme (cinéma) de schéma (Titre, Réalisateur, Date, Salle, NbSpect). Quels sont les acteurs qui ont été vus (en rôle principal) par au moins 100 spectateurs? Solution : Faire une jointure naturelle entre films et programme pour croiser les informations. Puis appliquer un opérateur de groupement sur les attributs acteur et utilisant un opérateur d aggrégation de type SUM sur le NbSpect, pour construire une nouvelle BD ayant que les attributs acteur et la somme des spectateurs visionnant les films avec l acteur respectif. Enfin, appliquer une sélection pour ne garder que les tuples de cette nouvelle relation dont le 2e attribut est supérieur à 1000.