Dynamic Database
Dynamic Database
Type2: Other type of dynamic databases are those which are stored in files and called
database files.
− These are consulted in any program whenever required.
− These types of databases are not part of any particular program and are available for
use in future by different programs using system defined predicates called save and consult.
− While executing a Prolog program one can load database file(s) using 'consult' predicate.
− These files can be updated dynamically at run time and saved using 'save' predicate.
● retractall(X) deletes all the clauses from a database whose head match with X.
Example:-
retractall(father(X, Y)) deletes all the facts father( _ , _ ) and
retractall( _ ) deletes all the clauses from the working memory.
Using dynamic database in prolog Code:
Aim of program:-
● Store facts of student(name, branch, semester , percentage) dynamically.
● Use asserta predicate to enter new data in a dynamic database.
● Use retract predicate to delete a given data from dynamic db.
● Create appropriate predicates to search and display some specified students
details.
● Create appropriate predicate to list all the students having percentage greater
than some specified value.
domains
name,branch = symbol
sem, percentage = integer
database
student(name,sem,branch, percentage)
predicates
start
rule(integer)
continue(string)
clauses
start:-
clearwindow(),
write("!!!!!....Dynamic Database....!!!!!"),nl,
write("1. Enter new Student Details."),nl,
write("2. Delete the Student Data."),nl,
write("3. Display specific Student Details."),nl,
write("4. List of Students having percentage greater than specified percentage."),nl,
write("5. Exit from the program."),nl,
write("Enter the Choice: "),readint(X),
rule(X),nl,
write("Do you want to continue? "),
readln(C),
continue(C).
rule(1):-
nl,write("Enter Name:-"),
readln(Name),
write("Enter Sem:-"),
readint(Sem),
write("Enter Branch:-"),
readln(Branch),
write("Enter percentage:-"),
readint(Per),
asserta(student(Name,Sem,Branch,Per)),nl,
save("Exp10.txt"),
nl,write("Saved Successfully....!!!!"),nl.
rule(1).
rule(2):-
nl,write("Enter Name:-"),
readln(Name),
retract(student(Name,_,_,_)),nl,
save("Lab10.txt"),
nl,write("Deleted Successfully....!!!!"),nl.
rule(2).
rule(3):-
nl,write("Enter the name:- "),
readln(N),
student(N,B,S,P),
write("Name:- ",N," ,Branch:- ",B," ,Sem:- ",S,"
,Percentage:- ",P ,"%"),nl.
rule(3).
rule(4):-
nl,write("\nEnter Minimum Percentage:- "),
readint(X),
student(N,B,S,P),
X<P,
write("Name:- ",N," ,Branch:- ",B," ,Sem:- ",S,"
,Percentage:- ",P ,"%"),nl,fail.
rule(4).
rule(5):-
nl,write("Exit():w"),nl,
continue(n).
continue(y):-start.
Output :
After Performing above goals.