Info 409 - Bases de données avancées Université Libanaise Faculté des Sciences – Section I Master 1 Informatique Info 409 - Bases de données avancées Semestre: 2 Année Universitaire: 2016/2017 Crédits: 5 Dr. Antoun Yaacoub
Plan Partie I Partie II Partie III Partie IV Pannes système Gestionnaire de transactions Contrôle concurrentiel Bases de données distribuées Partie II Implémentation des SGBDs: Enregistrements, blocs et adressage Structures d’index: Arbre binaire balancé et table de hachage Partie III Optimisation des requêtes Exécution des requêtes Partie IV Bases de données déductives Bases de données orientées objet
Bases de données déductives Partie IV
Référence Foundations of Databases 1st Edition Abiteboul, Hull, Vianu Addison-Wesley
Farouk Anahid Shakira Fouad Samar Fadi Jamila Ammar Leo Tatiana Marzouk Abir Antoun
Exemple Représentons cette arbre généalogique en une base de données relationnelles : create table parent(nom_parent varchar, nom_fils varchar) nom_parent nom_fils Shakira Fadi Jamila Farouk Anahid Ammar Leo Fouad nom_parent nom_fils Samar Marzouk Tatiana Fadi Jamila Antoun Abir Ammar
Exemple Ecrire une requête SQL permettant de trouver les parents d’Antoun SELECT nom_parent from parent where nom_fils=‘Antoun’ Ecrire une requête SQL permettant de trouver les grand parents d’Antoun SELECT p2.nom_parent from parent p2 where p2.nom_fils = any (select p1.nom_parent from parent p1 where p1.nom_fils=‘Antoun’) Ecrire une requête SQL permettant de trouver les arrières grand parents d’Antoun SELECT p3.nom_parent from parent p3 where p3.nom_fils = any ( SELECT p2.nom_parent from parent p2 where p2.nom_fils = any (select p1.nom_parent from parent p1 where p1.nom_fils=‘Antoun’))
Exemple Ecrire une requête SQL permettant de trouver tous les ancêtres (parents, grand parents, arrières grand parents, …) d’Antoun Il est impossible d’écrire cette requête !
Solution Utiliser les bases de données déductives
Introduction Une base de données déductive est une base d'information permettant d'extraire ou de déduire des informations. On a la possibilité de définir des règles qui peuvent déduire ou inférer des informations supplémentaires à partir des informations de la base. Dans un système de bases de données déductif, le langage déclaratif (à la PROLOG) est utilisé pour spécifier des règles. Un moteur d'inférence (ou mécanisme de déduction) dans le système peut déduire de nouveaux faits à partir de la base de données en interprétant les règles : nécessite une sémantique. Une base de données déductive utilise deux types de spécification: les faits et les règles.
Exemple parent(shakira,fadi). parent(shakira,jamila). parent(farouk,fadi). parent(farouk,jamila). parent(anahid,ammar). parent(anahid,leo). parent(fouad,ammar). parent(fouad,leo). parent(samar,marzouk). parent(samar,tatiana). parent(fadi,marzouk). parent(fadi,tatiana). parent(jamila,antoun). parent(jamila,abir). parent(ammar,antoun). parent(ammar,abir). sex(shakira,F). sex(farouk,M). sex(anahid,F). sex(fouad,M). sex(samar,F). sex(fadi,M). sex(jamila,F). sex(ammar,M). sex(leo,M). sex(marzouk,M). sex(tatiana,F). sex(antoun,M). sex(abir,F). Prédicats extensionnels
Exemple Ecrire une requête SQL permettant de trouver les parents d’Antoun parent(X,antoun). Ecrire une requête SQL permettant de trouver les grand parents d’Antoun parent(X,Y), parent(Y,antoun). Ecrire une requête SQL permettant de trouver les arrières grand parents d’Antoun parent(X,Y), parent(Y,Z), parent(Z,antoun).
Prédicats intensionnels Exemple Ecrire une requête permettant de trouver tous les ancêtres (parents, grand parents, arrières grand parents, …) d’Antoun ancetre(X,Y):-parent(X,Y). ancetre(X,Y):-parent(X,Z),ancetre(Z,Y). fils(X,Y):-parent(Y,X). soeur(X,Y) :-parent(Z,X), parent(Z,Y), sex(Y,f). frere(X,Y) :-parent(Z,X), parent(Z,Y), sex(Y,m). Prédicats intensionnels
Introduction Les faits : spécifiés de façon similaire à celle des relations en base de données, sauf qu'il n'est pas nécessaire d'inclure les noms d'attributs. Dans une base de données déductive, la signification d'une valeur d'attribut est déterminée par sa position dans le tuple. Les règles : quelque peu similaire aux vues relationnelles, elles spécifient des relations virtuelles qui ne sont pas stockées mais peuvent être construites à partir des faits en appliquant des mécanismes d'inférences sur la base des spécifications de règles. La différence principale avec les vues est que les règles peuvent comporter de la récursivité. Prolog : Évaluation top-down (chaînage arrière). L'ordre des règles est important, ainsi que l'ordre des littéraux dans une règle. Datalog : Évaluation bottom-up (chaînage de bas-en-haut).
Notation Constante : commence toujours avec une minuscule. Variable : commence toujours avec une majuscule. Exemple : PARENT(PARENT,ENFANT). parent(X,Y) signifie que X est le parent de Y
Notation Une règle se compose comme ceci : tête:-corps. Où tête est appelé la conclusion, et corps les prémisses (ou hypothèses ou conditions). ex : ancetre(X,Y):-parent(X,Y). ancetre(X,Y):-parent(X,Z),ancetre(Z,Y).
Notation Les faits : s'écrivent comme les règles, et comportent des constantes, et non des variables dans le corps. ex : parent(anahid,leo). parent(fouad,ammar). Les requêtes: permettent d’interroger la base de connaissances, en retournant des données ou des valeurs binaires. ex : parent(X,antoun). ancetre(X,antoun).
Définition INFORMATIONS QUESTIONS Prédicat extensionnel (Extensional predicate) Prédicat dont les instances sont stockées dans la base de données sous forme de tuples. Prédicat intentionnel (Intensional predicate) Prédicat calculé par un programme constitué de règles logiques dont les instances ne sont pas stockées dans la base de données. BD intentionnelle RÈGLES MISES À JOUR Méta-Données BD extensionnelle BD Données
Architecture type d’un SGBD déductif intégré SGBD permettant de dériver les tuples de prédicats intentionnels par utilisation de règles. Interrogation Mise à jour Définition de connaissances Inférence Recherche et Mise à jour Tables Règles
Exemple Soit le prédicat aimer(X,Y) qui signifie X aime Y. Ecrire la règle suivante polyamoureux(X) qui signifie que X aime 2 personnes. polyamoureux(X) :- aimer(X,Y), aimer(X,Z), Y≠Z.
Exemple X 1 Y 2 t( , ) :- g( , ). t( , ) :- g( , ), t( , ). X 1 2 Y X Z Z Y t___ | | | g___ 1|2 2|3 3|2 1 2 2 3 3 2 1|3 2|2 3|3
Datalog sûr Toute variable qui apparait dans la tête d’une clause apparait aussi dans le corps.
Sémantique de Datalog 3 approches équivalentes Théorie du modèle Théorie du point fixe Théorie de preuve
Négation Etant donné les prédicats oiseau(X): X est un oiseau vole(X): X peut voler Ecrire les prédicats penguin(X): un oiseau qui peut ne pas voler penguin(X) :- oiseau(X), ¬vole(X). penguin(X) :- oiseau(X), not(vole(X)).
Négation Pour définir l’ensemble des entiers positifs: entier(0). entier(X):- Y is X-1, entier(Y). Pour définir les nombres pairs et impairs impair(1). impair(X):- Y is X-2, impair(Y). pair(X):-entier(X), ¬impair(X).
L’approche du point fixe La sémantique du programme est définie comme une solution particulière d’une équation à point fixe. La requête est réitérée jusqu’à ce qu’un point fixe est atteint. Comment? Evaluation Bottom-up
Evaluation bottom-up Commencer par les faits qui sont dans la base de données Utiliser les règles pour inférer de nouveaux faits Répéter jusqu’à ce qu’aucun nouvel fait pourrait être inféré En d’autres termes, calculer TOUS les faits qui peuvent être prouvé