Calcul et SQL - 1 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query.

Slides:



Advertisements
Présentations similaires
1 Les bases de données Séance 7 Les fonctions avancées : Opérateurs ensemblistes, Sous-requêtes et transactions.
Advertisements

Enseigner l’arithmétique en série L Réflexions sur les contenus et les exigences.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Algèbre relationnelle - 1 / Djamel Berrabah Algèbre relationnelle Modèle relationnel : rappel Algèbre relationnelle.
SQL-MAJ, vues - 1 / Djamel Berrabah SQL : création et mises-à-jour de schémas et de données ● Commandes de définition de données (DDL) ● Commandes de mise-à-jour.
SQL-MAJ, vues - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-LI341) SQL : création et mises-à-jour de schémas et de données ● Commandes de.
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
Etat de l’art et recherche bibliographique L3EEA 3ème année – 2016.
Cours COMPOSANTES DES VECTEURS Dimitri Zuchowski et Marc-Élie Lapointe.
annuités, mensualités remboursements constants VPM pendant une période ininterrompue
La conditionnelle Formule
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Initiation aux bases de données et à la programmation événementielle
Langage de manipulation de données (LMD)
Algorithme et programmation
Algèbre relationnelle
Les Bases de données Définition Architecture d’un SGBD
9. Interrogation de la base de données
Structured Query Language
Lois fondamentales de l'algèbre de Boole
Algorithmique demander jeu du pendu.
Les opérations sur les nombres
L’Instruction de Test Alternatif
Généralité sur les bases de données
Plan du cours Introduction : création de circuits
Principes de programmation (suite)
Fonctions logiques et algèbre booléenne
Base de données relationnelles
Langage d’interrogation des Données LID
Semaine #4 INF130 par Frédérick Henri.
Implantation d’un îlot ou d’une Chaîne de Production
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Équations - Inéquations
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Manipulation D’Une Base De Données
Calcul Relationnel Chapitre 4, Section 4.3.
PROGRAMMATION ET ENSEIGNEMENT
Langage d’interrogation des Données LID
SQL Structured Query Language
2 Copyright © 2004, Oracle. Tous droits réservés. Restreindre et trier les données.
Diagrammes UML 420-KE2-LG.
Chapitre 3 : Caractéristiques de tendance centrale
Langage d’interrogation des Données Les fonctions de groupes
Notion de risque et mesures d’association
Algèbre relationnelle
L1 Technique informatique
L'algèbre relationnelle
Révision du format des données
SIO SI3 : Exploitation des données
NUMERATION et REPRESENTATION DES NOMBRES
B.Shishedjiev - Informatique
Lois de Probabilité Discrètes
5 Introduction au modèle relationnel 5.1 Concepts de base
Semaine #2 INF130 par Frédérick Henri.
Semaine 3 Retour sur la semaine 2 Plan de séance
Université de la méditerranée
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
La recherche avancée.
Présentation 9 : Calcul de précision des estimateurs complexes
Chapitre 3: Les scriptes
MATHÉMATIQUES FINANCIÈRES I
Algèbre Relationnelle
H. Wertz -- Exécution Symbolique
Présentation 6 : Sondage à plusieurs degrés
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Les Définition Les expressions Algebriques
SQL Structured Query Language
Python Nicolas THIBAULT
Transcription de la présentation:

Calcul et SQL - 1 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query By Example (QBE) Introduction SQL

Calcul et SQL - 2 / Djamel Berrabah Langage de requête formel : fondé sur la logique des prédicats (sans fonctions) déclaratif : on spécifie ce que doit être le résultat sans dire comment accéder aux données (  algèbre, pas d'opérations) On distingue entre deux types de calcul relationnel selon les types de variables utilisées : calcul n-uplets : les variables désignent des n-uplets calcul domaine : les variables désignent des valeurs dans les domaines d'attributs Calcul relationnel

Calcul et SQL - 3 / Djamel Berrabah Une requête dans le calcul n-uplet a la forme Q(x 1, x 2, …, x n ) = { x 1.A j,…,x 2.A k, …, x n.A m  F(x 1, x 2, …, x n ) } où F est une formule logique, x 1, …, x n sont des variables n-uplet, x i.A j désigne l’attribut A j d’une instance (n-uplet) de la variable x i. Calcul relationnel de n-uplets

Calcul et SQL - 4 / Djamel Berrabah Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Q(x)={ x.Ename  Emp(x) } Q(x)={ x.Pname, x.Budget  Project(x) } Q(x)={ x.Title  Emp(x) } Q(x)={ x.Ename  Emp(x)  x.City = ‘Paris’ } Q(x)={ x.City  Emp(x)  Project(x) } Q(x)={ x.City  Project(x)  ¬  y( Emp(y)  x.City = y.City ) } Exemples de requêtes

Calcul et SQL - 5 / Djamel Berrabah Formules logiques : syntaxe Une formule logique F est une expression composée de atomes opérateurs booléens :  conjonction)  (disjonction)  ¬ (négation) quantificateurs existentiels (  et universels  virgules et parenthèses  F = formule de la logique du premier ordre sans fonctions

Calcul et SQL - 6 / Djamel Berrabah Atomes du calcul n-uplet Les atomes du calcul sont : les prédicats d’appartenance x  R, notés R(x) où R est le nom d’une table ; x est une variable ou un n-uplet. les prédicats de filtrage : x.A  y.  ou x.A  c où x et y sont des variables ; c est une constante ; A et B sont des noms d'attributs ;  est un comparateur , ≠, ≤, 

Calcul et SQL - 7 / Djamel Berrabah Formules bien formées Tout atome est une formule. Si F et G sont des formules, alors F  G, F  G, et ¬ F, sont des formules. Si F(x) est une formule avec une variable x, alors  x ( F(x) ) et  x ( F(x) ) sont des formules bien formées. Remarque: on dit que la variable x est libre dans F(x) et elle est liée (par le quantificateur) dans  x ( F(x) ) et  x ( F(x) )

Calcul et SQL - 8 / Djamel Berrabah Sémantique : liaisons variables/n-uplets Soit F = F(x 1, x 2, …, x n ) une formule bien formée avec les variables libres x 1, x 2, …, x n. Soit  = [x 1 /t 1, x 2 / t 2, …, x n / t n ] une liaison qui lie chaque variable x i un n-uplet t i. On note F  = F(t 1, t 2, …, t n ) la formule bien formée qu’on obtient quand on remplace chaque variable libre x i dans F par son n-uplet t i dans .

Calcul et SQL - 9 / Djamel Berrabah Sémantique : valeurs de vérité Soit F une formule bien formée ou toutes les variables libres x i ont été remplacées par un n-uplet t i. F est vraie si F = R(t) et t est un n-uplet dans R (dans la base de données) F = t.A  t’.  et t.A est inférieur/égal/… à t’.B. F = t.A  c et t.A est inférieur/égal/… à c. F =  y ( G ) et  il existe un n-uplet t, tel que G(t) est vraie. F =  y ( G ) et  pour tous les n-uplets t, G(t) est vraie. F = G  et G et H sont vraies. F = G  et G ou H est vraie (« ou » inclusif). F = ¬ G et G est fausse. F est fausse sinon.

Calcul et SQL - 10 / Djamel Berrabah Requête du calcul relationnel : Q(x 1, x 2, …, x n )={x 1.A j,…,x 2.A k, …, x n.A m,…  F(x 1, x 2, …, x n )} F est une formule logique, x 1, …, x n sont des variables n-uplet libres dans F, Le résultat de la requête est l’ensemble de tous les n-uplets [t 1.A j,… t 2.A k, …t n.A m,…] obtenus par des liaisons  = [x 1 /t 1, x 2 / t 2, …, x n / t n ] telles que F  = F(t 1, t 2, …t n ) est vraie. Requêtes et résultats

Calcul et SQL - 11 / Djamel Berrabah Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Noms de tous les employés? Q(x)={ x.Ename  Emp(x) } la variable libre x est liée à tous les n-uplets de la table Emp Noms de tous les projets avec leurs budgets? Q(x)={ x.Pname, x.Budget  Project(x) } : la variable libre x est liée à tous les n-uplets de la table Project Titres (d'emploi) pour lequel il y a au moins un employé? Q(x)={ x.Title  Emp(x) } Exemples de requêtes

Calcul et SQL - 12 / Djamel Berrabah Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Employés qui travaillent à Paris? Q(x)={x.Ename  Emp(x)  x.City = ‘Paris’ } x est liée à tous les n-uplets t de Emp où t.City = ‘Paris’ Villes où il y a un employé ou un projet? Q(x)={ x.City  Emp(x)  Project(x) } x est liée à tous les n-uplets t de Emp et à tous les n-uplets t’ de Project Villes où il y a des projets mais pas d'employés? Q(x)={ x.City  Project(x)  ¬  y( Emp(y)  x.City = y.City ) } Exemples de requêtes

Calcul et SQL - 13 / Djamel Berrabah Emp (Eno, Ename, Title, City) Project(Pno, Pname, Budget, City) Pay(Title, Salary) Works(Eno, Pno, Resp, Dur) Noms des projets de budget > 225? Q(x)={x.Pname  Project(x)  x.Budget > 225} Noms et budgets des projets où travaille l'employé E1? Q(x)={x.Pname, x.Budget  Project(x)   y (Works(y)  x.Pno=y.Pno  y.Eno=‘E1’)} Exemple de requêtes

Calcul et SQL - 14 / Djamel Berrabah Sûreté des requêtes Problème: La taille de Q(x)={ x.A  F(x) } doit être finie Exemple: le résultat de Q(x)={ x.A | ¬R(x) } est infini : x est lié à tous les n-uplets qui ne sont pas dans la table R Sûreté: une requête est sûre si, pour toute BD conforme au schéma, le résultat de la requête peut être calculé en utilisant seulement les constantes apparaissant dans la BD et la requête puisque la BD est finie, l'ensemble de ses constantes est fini de même que les constantes de la requête; donc, le résultat de la requête est fini

Calcul et SQL - 15 / Djamel Berrabah Sûreté des requêtes (suite) La caractérisation syntaxique de requêtes sûres est compliquée. Quelques conseils : Toujours commencer une requête par {x.A | R(x) …} Une quantification  x doit toujours être suivi d’un atome R(x) : x est bornée aux n-uplets de la table R Éviter d’utiliser  et le remplacer par  grâce à l’équivalence (  x R(x))  ¬(  x(¬R(x))) (on revient sur le point d'avant)

Calcul et SQL - 16 / Djamel Berrabah Calcul de n-uplets et algèbre Théorème: Le calcul relationnel sûr et l'algèbre relationnelle ont une puissance d'expression équivalente (complétude relationnelle) Ou autrement : toutes les requêtes qu'on peut exprimer en utilisant l'algèbre relationnelle (sélection, projection, jointure,...) peuvent être exprimées dans le calcul relationnel (sûr) et vice-versa.

Calcul et SQL - 17 / Djamel Berrabah Traduction: sélection, projection, jointure Deux tables : R ,C) S(C,D)  A,B ( R ) ≡ { t.A, t.B | R(t) }     (R)) ≡ { t.B | R(t)  t.A = 3 } R S ≡ { t.A, t.B, t.C, u.D | R(t)  S(u)  t.C = u.C }  C ( R ) -  C ( S ) ≡ { t.C | R(t)  ¬  u (S(u)  t.C = u.C)

Calcul et SQL - 18 / Djamel Berrabah Traduction de la division R(A,B,C,D) ÷ S(C,D) s’exprime par la requête suivante : R÷S = { x.A, x.B | R(x)   u ( S(u)   v ( R(v)  v.A = x.A  v.B = x.B   v.C = u.C  v.D = u.D ) ) }

Calcul et SQL - 19 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query By Example (QBE) Introduction SQL

Calcul et SQL - 20 / Djamel Berrabah Les variables sont définies sur les domaines des attributs : variables de domaines Les atomes sont définis ainsi : appartenance : R(x 1, x 2, …x n ) où n est le degré de R (attention: l’ordre des attributs est important) comparaison: x  y ou x  c où x et y sont des variables domaines c est une constante , ≠, ≤,  est un comparateur Les formules du calcul de domaines sont définies comme pour le calcul de n-uplets, en remplaçant les variables n- uplets par les variables domaines Calcul relationnel de domaines

Calcul et SQL - 21 / Djamel Berrabah Les requêtes sont spécifiées ainsi : Q(x 1, x 2,..., x n )={x 1, x 2,..., x n | F(x 1, x 2,..., x n )} où F est une formule où x 1,..., x n sont des variables de domaine libres. Requêtes dans le calcul domaine

Calcul et SQL - 22 / Djamel Berrabah Emp (Eno, Ename, Title, City) Pay(Title, Salary) Project(Pno, Pname, Budget, City) Works(Eno, Pno, Resp, Dur) Noms et budgets des projets où travaille l'employé E1? Q(b,c)={ b,c  a  d (Project(a,b,c,d)   e,f,g,h (Works(e,f,g,h)  a=f  e = ‘E1’))} ou Q(b,c)={ b,c  a  d (Project(a,b,c,d)   e,g,h (Works(e,a,g,h)  e = ‘E1’)) } ou Q(b,c)={ b,c  a  d (Project(a,b,c,d)   g,h (Works( ‘E1’,a,g,h))) } Exemple de requête

Calcul et SQL - 23 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query By Example (QBE) Introduction SQL

Calcul et SQL - 24 / Djamel Berrabah EmpEname CityTitle Project Pno Pname BudgetCity EnoPay SalaryTitle Works Eno Pno RespDur Noms de tous les employés? Requêtes QBE (Query-by- Example) P.

Calcul et SQL - 25 / Djamel Berrabah Noms des projets de budget supérieur à 50? Requêtes QBE (suite) EmpEname CityTitle Project Pno Pname BudgetCity EnoPay SalaryTitle Works Eno Pno RespDur >50P.

Calcul et SQL - 26 / Djamel Berrabah Noms et villes des employés qui travaillent dans un projet pendant plus de 20 mois? Requêtes QBE (suite) EmpEname CityTitle Project Pno Pname BudgetCity EnoPay SalaryTitle Works Eno Pno RespDur P. _X>20 _X

Calcul et SQL - 27 / Djamel Berrabah Conclusion : calcul relationnel Le calcul des prédicats est le fondement théorique des langages de requêtes bases de données (SQL) : Une base de données définit une interprétation finie d’un ensemble de prédicats sans symboles de fonctions (relations). Une requête est une formule Q dont la réponse correspond à l’ensemble des liaisons  de variables libres dans Q, tel que BD,   = Q.

Calcul et SQL - 28 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query By Example (QBE) Introduction SQL

Calcul et SQL - 29 / Djamel Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes SQL et le calcul relationnel Agrégats et groupement Couplage SQL et langage de programmation

Calcul et SQL - 30 / Djamel Berrabah Requêtes d'interrogation SQL Structure de base d’une requête SQL simples : SELECTvar i.A ik, … attributs FROM R i1 var 1, R i2 var 2 … variables n-uplet WHEREP prédicat/condition où: La variable n-uplet var i « appartient » à la table R ij : R i1 (var 1 ) Les variables dans la projection (clause SELECT) et dans la condition (clause WHERE) doivent être liées dans la clause FROM. Simplifications : Si var j n’est pas spécifiée, alors la variable s’appelle par défaut R ij. Si une seule variable n-uplet possède l’attribut A, on peut écrire plus simplement A (non-ambiguïté).

Calcul et SQL - 31 / Djamel Berrabah Prédicats Prédicats simples : Expression1  Expression2 où Expression1 peut être un attribut ou une expression arithmétique impliquant des attributs,  = {, =, =, <>} et Expression2 une expression ou une valeur de domaine Exemples : R.Name = ‘J. Doe’ (S.Age + 30) >= 65 R.A = S.B Prédicats composés : prédicats simples combinés avec les connecteurs logiques AND, OR, NOT

Calcul et SQL - 32 /

Calcul et SQL - 33 /

Calcul et SQL - 34 /

Calcul et SQL - 35 /