T. D. Bases de données. ESIL. 2i`eme année Année universitaire
Transcription
T. D. Bases de données. ESIL. 2i`eme année Année universitaire
T. D. Bases de données. ESIL. 2ième année homme(paul). UNIVERSITÉ DE LA MÉDITERRANÉE Année universitaire 2006/2007 Enseignante : Odile Papini homme(luc). femme(claire). femme(lucie). Corection de la feuille de T. D. 5 : Premiers pas avec DATALOG femme(andree). femme(martine). Exercice 1 : 2) donner la représentation des liens de parenté avec des prédicats; 2 prédicats unaires: homme(x) et femme(x) et 2 prédicats binaires : pere(x,y) et mere(x,y). 3) écrire la base de faits représentant l’arbre généalogique ci-dessus. 4) écrire les règles DATALOG qui expriment : – enfant(x,y) : enfant( Child, Father ) ← pere( Father, Child). enfant( Child, Mother ) ← mere( Mother, Child ). – fils(x,y) : fils( Child, Parent ) ← homme(Child), enfant(Child, Parent). pere( leon, lucie ). pere( pierre, jean ). – fille(x,y) : fille( Child, Parent ) ← femme(Child), enfant(Child, Parent). pere( pierre, jacques ). pere( jean, alain ). – frere-ou-soeur(x,y) : frere ou soeur( X, Y ) ← pere(Z, X), pere(Z,Y), mere(T, X), mere(T,Y), X ∼=Y. pere( jean, paul ). pere( paul, luc ). mere( claire, lucie ). – frere(x,y) : frere( X, Y ) ← frere ou soeur( X, Y ), homme(X). mere( andree, jean ). – soeur(x,y) : soeur( X, Y ) ← frere ou soeur( X, Y ), femme(X). mere( andree, jacques ). mere( lucie, alain ). – grand-parent(x,y) : parent( X, Y ) ← pere( X, Y). parent( X, Y ) ← mere( X, Y ). grand parent( X, Y ) ← parent( X, Z), parent(Z, Y). mere( lucie, paul ). mere( martine, luc ). homme(leon). – grand-pere(x,y) : grand pere( X, Y ) ← grand parent( X, Y), homme(X). homme(pierre). homme(jean). – grand-mere(x,y) : grand mere( X, Y ) ← grand parent( X, Y), femme(X). homme(jacques). homme(alain). 1 2 Exercice 2 : Soit la carte d’un restaurant qui comporte pour les horsd’oeuvres : cèleri, pâté, melon; pour les viandes : rôti, steak; pour les poissons : sole; rouget; pour les desserts : flan, fruit. 1) écrire la base de faits représentant la carte du restaurant. export plat( Nom). export plat( $Nom). export repas( X, Y, Z, ). export repas( $X, Y, Z). hd( celeri). export repas( X, $Y, Z). hd( pate). export repas( X, Y, $Z). hd( melon). export repas( $X, $Y, $Z). viande( steak). – les règles DATALOG repas(x,y,z) et plat(y). plat(Y) ←viande(Y). plat(Y) ←poisson(Y). repas( X, Y, Z) ←hd(X), plat(Y), dessert(Z). viande( roti). poisson( sole). poisson( rouget). dessert( fruit). – Quels sont les repas qui comportent du cèleri en hors-d’oeuvre ? repas( celeri, Y, Z). dessert( flan). 2) un repas est constitué d’un hors-d’oeuvre, d’un plat et d’un dessert, par ailleurs, un plat peut être soit de la viande, soit du poisson. Ecrire le schéma de la base de données, les requêtes acceptables : database( { hd( Nom:string, Calorie:integer ), viande( Nom:string), poisson( Nom:string), dessert( Nom:string) } ). export hd( Nom). – Quels sont les repas qui ne comportent pas de fruit en dessert ? repas( X, Y, Z), Z ∼= fruit. 3) Reprendre la règle repas et ajouter une boisson qui peut être de l’eau, du vin ou de la bière. boisson(eau). boisson(vin). boisson(biere). repas( X, Y, Z, T) ←hd(X), plat(Y), dessert(Z), boisson(T). 5) Ecrire la règle repas-regime(x,y,z) qui exprime que la valeur calorique du repas est inférieure à 2000 calories. Pour cela, on attribue une valeur calorique à chacun des mets. export hd( $Nom). export viande( Nom). export viande( $Nom). hd( celeri, 100 ). export poisson( Nom). hd( pate , 500 ). export poisson( $Nom). hd( melon, 200 ). export dessert( Nom). viande( steak, 300 ). export dessert( $Nom). viande( roti, 400 ). 3 4 poisson( sole, 150 ). poisson( rouget, 250). dessert( fruit, 200 ). dessert( flan, 400 ). repas-regime( X, Y, Z) ←hd(X, A), plat(Y, B), dessert(Z, C), Cal = A + B + C, Cal < 2000. 5