Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Basis data adalah kumpulan fakta-fakta tentang suatu pokok bahasan tertentu Di dalam prolog ada 2 macam basis data yaitu  Basis Data Internal  Basis.

Presentasi serupa


Presentasi berjudul: "Basis data adalah kumpulan fakta-fakta tentang suatu pokok bahasan tertentu Di dalam prolog ada 2 macam basis data yaitu  Basis Data Internal  Basis."— Transcript presentasi:

1

2 Basis data adalah kumpulan fakta-fakta tentang suatu pokok bahasan tertentu Di dalam prolog ada 2 macam basis data yaitu  Basis Data Internal  Basis Data Eksternal

3 Untuk menyatakan penggunaan basis data maka harus didefiniskan terlebih dahulu DOMAINS alamat = alamat(jalan,kota,kode_pos) tgl_lahir = tgl_lahir(tanggal,bulan,tahun) tanggal,tahun,nomor = integer nama,jalan,kota,kode_pos,bulan,pekerjaan = string lama = real DATABASE data_pribadi(nama,alamat,tgl_lahir,pekerjaan)

4 Syarat predikat yang dinyatakan dalam basis data  Hanya fakta yang boleh disimpan, aturan tidak diperbolehkan  Fakta tersebut tidak boleh mengandung variabel bebas Bagian DATABASE boleh lebih dari satu akan tetapi harus diberi nama yang berbeda DATABASE – DaftarPegawai pegawai(nama,alamat,pendidikan) DATABASE – Gaji gaji_pegawai(nama,gaji) Bila tidak diberi nama untuk suatu bagian DATABASE seperti hanya ada 1 bagian DATABASE maka nama otomatis dbasedom

5  asserta(fakta)  asserta(fakta,NamaDatabase)  assertz(fakta)  assertz(fakta,NamaDataBase)  retract(fakta) retract(fakta,NamaDatabase)  retractall(fakta) retractall(fakta,NamaDataBase)  save(NamaFile)  save(NamaFile,NamaDataBase)  consult(NamaFile) Syarat agar file dapat dibaca oleh predikat consult  Tidak boleh ada huruf besar, spasi, atau simbol kecuali berada di dalam tanda “” (Sebagai string)  Tidak boleh ada komentar (menggunakan tanda /*)  Tidak boleh ada baris yang kosong

6 DOMAINS alamat = alamat(jalan,kota,kode_pos) nama,jalan,kota,kode_pos,tgl_lahir,pekerjaan = string nomer = integer DATABASE data_pribadi(nama,alamat,tgl_lahir,pekerjaan) PREDICATES menu pilihan_awal(nomer) tambah_data pilihan(nomer) GOAL menu. CLAUSES menu :- makewindow(1,13,1,"PILIHAN",3,0,20,80), write(" 1. Memasukkan data baru \n"), write(" 2. Menambah data \n"), write(" 3. Menggunakan data lama \n"), write(" 4. Menghapus data \n"), write(" 5. Selesai \n"), write(" Masukkan pilihan anda (1,2,3,4,5) : "), readint(No_Awal), No_Awal<>5,!, pilihan_awal(No_Awal), menu.

7 pilihan_awal(1) :- makewindow(1,13,1,"DATA BARU",3,0,20,80), clearwindow,nl, write(" Nama : "),readln(Nama), Nama <> "x",!, write("\n Jalan : "),readln(Jalan), write("\n Kota : "),readln(Kota), write("\n Kode Pos : "),readln(KodePos), write("\n Tgl lahir : "),readln(TglLahir), write("\n pekerjaan : "),readln(Pekerjaan), assertz(data_pribadi(Nama,alamat,(Jalan,Kota,KodePos),TglLahir,Pekerjaa n)), pilihan_awal(1). pilihan_awal(1) :- save("a:pribadi.dat"), removewindow. pilihan_awal(2) :- makewindow(1,13,1,"MENAMBAH DATA ",3,0,20,80), consult("a:pribadi.dat"), tambah_data. pilihan_awal(3) :- makewindow(1,13,1,"DATA LAMA",3,0,20,80), write(" 1. Data pribadi semua orang \n"), write(" 2. Data orang yang tinggal di kota tertentu \n"), write(" 3. Data orang yang mempunyai pekerjaan tertentu \n"), write(" Masukkan pilihan anda (1,2,3) : "), readint(Pilihan), consult("a:pribadi.dat"), pilihan(Pilihan), read_char(_). pilihan_awal(4) :- makewindow(1,13,2,"MENGHAPUS DATA",3,10,20,60), consult("a:pribadi.dat"), write(" Nama : "),readln(Nama), retract(data_pribadi(Nama,_,_,_)), save("a:pribadi.dat"). pilihan(1) :- clearwindow, data_pribadi(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan), writef("\n %-12 %-18 %-8 %-8 %-15 %- 15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(1).

8 pilihan(2) :- clearwindow, write(" Kota : "),readln(Kota), clearwindow, write(" Data orang yang tinggal di kota ",Kota," :\n"), data_pribadi(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan), writef("\n %-12 %-18 %-8 %-8 %-15 %- 15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(2). pilihan(3) :- clearwindow, write(" Pekerjaan : "),readln(Pekerjaan), clearwindow, write(" Data orang yang mempunyai pekerjaan ",Pekerjaan," :\n"), data_pribadi(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan), writef("\n %-12 %-18 %-8 %-8 %-15 %- 15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(3). tambah_data :- clearwindow,nl, write(" Nama : "),readln(Nama), Nama <> "x",!, write("\n Jalan : "),readln(Jalan), write("\n Kota : "),readln(Kota), write("\n Kode Pos : "),readln(KodePos), write("\n Tgl lahir : "),readln(TglLahir), write("\n pekerjaan : "),readln(Pekerjaan), assertz(data_pribadi(Nama,alamat,(Jalan,Kota,KodePos),TglLah ir,Pekerjaan)), tambah_data. tambah_data :- save("a:pribadi.dat").

9 Dalam basis data eksternal data yang diolah dapat langsung diakses dari 3 macam tempat  File (di disket atau hardisk)  Memori (mirip dengan basis data internal)  EMS (Extended Memory System) Selektor basis data eksternal DOMAINS db_selector = pelanggan;barang PREDICATES hapus_data(ref)

10  db_create(DBase,Nama,Tempat) DBase = Nama simbolik harus dinyatakan di dalam DOMAINS Nama = Nama File Tempat = in_file,in_memory,in_ems  db_open(DBase, Nama,Tempat)  db_close(DBase)  db_delete(DBase)  db_chains(DBase,Chain)

11 Manipulasi rantai  chain_inserta(DBase, Rantai, Domain, Term,Ref) DBase = basis data yang dinyatakan di db_selector Rantai = bila belum ada maka rantai diciptakan Domain = Domain dari term Ref = nomor acuan untuk term  chain_insertz(DBase, Rantai, Domain, Term,Ref)  chain_insertafter(DBase, Domain,Ref,Term, RefBaru)  chain_terms(DBase, Rantai, Domain, Term,Ref)  chain_delete(DBase, Rantai)  chain_first(DBase, Rantai, RefAwal)  chain_last(DBase, Rantai, RefAkhir)  chain_next(DBase, Rantai, RefStl)  chain_prev(DBase, Rantai, RefSbl) manipulasi term  term_replace(DBase, Domain, Ref,Term)  term_delete(DBase, Rantai, Ref)  ref_term(DBase, Domain,,Ref,Term)

12 DOMAINS db_selector = dbase alamat = alamat(jalan,kota,kode_pos) nama,jalan,kota,kode_pos,tgl_lahir,pekerjaan = string data = data(nama,alamat,tgl_lahir,pekerjaan) nomer = integer PREDICATES menu pilihan_awal(nomer) masukkan_data pilihan(nomer) GOAL menu. CLAUSES menu :- makewindow(1,13,1,"PILIHAN",0,0,24,80), write(" 1. Memasukkan data baru \n"), write(" 2. Menambah data \n"), write(" 3. Menggunakan data lama \n"), write(" 4. Menghapus data \n"), write(" 5. Selesai \n"), write(" Masukkan pilihan anda (1,2,3,4,5) : "), readint(No_Awal), No_Awal<>5,!, pilihan_awal(No_Awal), menu. pilihan_awal(1) :- makewindow(1,13,1,"DATA BARU",0,0,24,80), db_create(dbase,"a:pribadi.dat",in_file), masukkan_data.

13 pilihan_awal(2) :- makewindow(1,13,1,"MENAMBAH DATA ",0,0,24,80), db_open(dbase,"a:pribadi.dat",in_file), masukkan_data. pilihan_awal(3) :- makewindow(1,13,1,"DATA LAMA",0,0,24,80), write(" 1. Data pribadi semua orang \n"), write(" 2. Data orang yang tinggal di kota tertentu \n"), write(" 3. Data orang yang mempunyai pekerjaan tertentu \n"), write(" Masukkan pilihan anda (1,2,3) : "), readint(Pilihan), pilihan(Pilihan), field_attr(20,2,42,29), field_str(20,2,42,"Tekan Keyboard untuk kembali ke menu utama"), readchar(_). pilihan_awal(4) :- makewindow(1,13,11,"MENGHAPUS DATA",10,20,4,40), write(" Nama : "),readln(Nm), db_open(dbase,"a:pribadi.dat",in_file), db_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,_,_,_),Ref), Nm = Nama,!, term_delete(dbase,Rantai,Ref), db_close(dbase). pilihan_awal(4) :- db_close(dbase). pilihan_awal(5) :- exit. pilihan(1) :- clearwindow, db_open(dbase,"a:pribadi.dat",in_file), db_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan),_), writef("\n %-12 %-18 %-8 %-6 %-17 %-15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(1) :- db_close(dbase). pilihan(2) :- clearwindow, write(" Kota : "),readln(Kt), clearwindow, write(" Data orang yang tinggal di kota ",Kt," :\n"),nl, db_open(dbase,"a:pribadi.dat",in_file), db_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan),_), Kt = Kota, writef("\n %-12 %-18 %-8 %-6 %-17 %-15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(2) :- db_close(dbase).

14 pilihan(3) :- clearwindow, write(" Pekerjaan : "),readln(Pkj), clearwindow, write(" Data orang yang mempunyai pekerjaan ",Pkj," :\n"), db_open(dbase,"a:pribadi.dat",in_file), db_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,alam at(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan),_), Pkj = pekerjaan, writef("\n %-8 %-18 %-8 %-8 %-15 %- 17",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaa n), fail. pilihan(3) :- db_close(dbase). masukkan_data :- clearwindow,nl, write(" Nama : "),readln(Nama), Nama <> "x",!, write("\n Jalan : "),readln(Jalan), write("\n Kota : "),readln(Kota), write("\n Kode Pos : "),readln(KodePos), write("\n Tgl lahir : "),readln(TglLahir), write("\n pekerjaan : "),readln(Pekerjaan), chain_insertz(dbase,"Pribadi",data,data(Na ma,alamat(Jalan,Kota,Kode_Pos),TglLahir, Pekerjaan),_), masukkan_data. masukkan_data :- db_close(dbase).

15  bt_create(Dbase,NamaBTree,BTree_Sel,KeyLen,Order) Dbase = Nama basis data yang menggunakan B+Tree NamaBTree = Nama BTree yang baru BTree_Sel= Selektor B+ tree digunakan pada pencarian KeyLen = Ukuran key Order = jumlah key yang disimpan tiap node  bt_open(Dbase,NamaBTree,BTree_Sel)  bt_close(Dbase, BTree_Sel)  bt_delete(Dbase,BTree_Sel)  key_insert(Dbase,BTree_Sel,Key,Ref)  key_delete(Dbase,BTree_Sel,Key,Ref)  key_first(Dbase,BTree_Sel,Ref)  key_last(Dbase,BTree_Sel,Ref)  key_search(Dbase, BTree_Sel,Key,Ref)  key_next(Dbase,BTree_Sel, RefBrk)  key_prev(Dbase, BTree_Sel,RefSbl)  key_current(DBase,BTree_Sel,Key,Ref)

16 DOMAINS db_selector = dbase alamat = alamat(jalan,kota,kode_pos) nama,jalan,kota,kode_pos,tgl_lahir,pekerjaan = string data = data(nama,alamat,tgl_lahir,pekerjaan) nomer = integer PREDICATES repeat menu pilihan_awal(nomer) masukkan_data(bt_selector,bt_selector) pilihan(nomer) cari_nama(nama,bt_selector) cari_pekerjaan(pekerjaan,bt_selector,ref) cari_hapus(nama,bt_selector,bt_selector) GOAL menu. CLAUSES menu :- makewindow(1,13,11,"PILIHAN",0,0,24,80), repeat, clearwindow, write(" 1. Memasukkan data baru \n"), write(" 2. Menambah data \n"), write(" 3. Menggunakan data lama \n"), write(" 4. Menghapus data \n"), write(" Masukkan pilihan anda (1,2,3,4,5) : "), read_int(No_Awal), pilihan_awal(No_Awal), fail. menu. pilihan_awal(1) :- !, makewindow(1,13,1,"DATA BARU",0,0,24,80), db_create(dbase,"a:pribadi.dat",in_file), bt_create(dbase,"nama",SelNama,20,4), bt_create(dbase,"pekerjaan",SelPkj,20,4), masukkan_data(SelNama,SelPkj).

17 pilihan_awal(2) :- !, makewindow(1,13,11,"MENAMBAH DATA ",0,0,24,80), db_open(dbase,"a:pribadi.dat",in_file), bt_open(dbase,"nama",SelNama), bt_open(dbase,"pekerjaan",SelPkj), masukkan_data(SelNama,SelPkj). pilihan_awal(3) :- !, makewindow(1,13,11,"DATA LAMA",0,0,24,80), write(" 1. Data pribadi semua orang \n"), write(" 2. Data pribadi seseorang \n"), write(" 3. Data orang yang mempunyai pekerjaan tertentu \n"), write(" Masukkan pilihan anda (1,2,3) : "), readint(Pilihan), pilihan(Pilihan), field_attr(20,2,42,29), field_str(20,2,42,"Tekan Keyboard untuk kembali ke menu utama"), readchar(_). pilihan_awal(4) :- !, makewindow(1,13,11,"MENGHAPUS DATA",10,20,4,40), write(" Nama : "),readln(Nm), db_open(dbase,"a:pribadi.dat",in_file), bt_open(dbase,"nama",SelNama), bt_open(dbase,"pekerjaan",SelPkj), cari_hapus(Nm,SelNama,SelPkj), removewindow. pilihan(1) :- clearwindow, db_open(dbase,"a:pribadi.dat",in_file), db_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,alamat(Jalan,Kot a,Kode_Pos),TglLahir,Pekerjaan),_), writef("\n %-12 %-18 %-8 %-6 %-17 %- 15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), fail. pilihan(1) :- db_close(dbase).

18 pilihan(2) :- clearwindow, write(" Nama : "),readln(Nama), clearwindow, write(" Data Pribadi ",Nama," :\n"),nl, db_open(dbase,"a:pribadi.dat",in_file), bt_open(dbase,"nama",SelNama), cari_nama(Nama,SelNama). pilihan(3) :- clearwindow, write(" Pekerjaan : "),readln(Pkj), clearwindow, write(" Data orang yang mempunyai pekerjaan ",Pkj," :\n"), db_open(dbase,"a:pribadi.dat",in_file), bt_open(dbase,"pekerjaan",SelPkj), key_first(dbase,SelPkj,Ref), cari_pekerjaan(Pkj,SelPkj,Ref). masukkan_data :- clearwindow,nl, write(" Nama : "),readln(Nama), Nama <> "x",!, write("\n Jalan : "),readln(Jalan), write("\n Kota : "),readln(Kota), write("\n Kode Pos : "),readln(KodePos), write("\n Tgl lahir : "),readln(TglLahir), write("\n pekerjaan : "),readln(Pekerjaan), chain_insertz(dbase,"Pribadi",data,data(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir, Pekerjaan),_), key_insert(dbase,SelNama,Nama,Ref), key_insert(dbase,SelPkj,Pekerjaan,Ref), masukkan_data(SelNama,SelPkj). masukkan_data(SelNama,SelPkj) :- bt_close(dbase,SelNama), bt_close(dbase,SelPkj), db_close(dbase).

19 cari_nama(Nama,SelNama) :- key_search(dbase,SelNama,Nama,Ref),!, ref_term(dbase,data,Ref,data(Nama,alamat(Jalan,Kota,Kode_ Pos),TglLahir,Pekerjaan)), writef("\n %-12 %-18 %-8 %-6 %-17 %- 15",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), bt_close(dbase,SelNama), db_close(dbase). cari_nama(_,SelNama) :- write(" \nNama tersebut tidak ada "), bt_close(dbase,SelNama), db_close(dbase). cari_pekerjaan(Pekerjaan,SelPkj,Ref) :- trace(on), key_current(dbase,SelPkj,Pkj,_), Pekerjaan = Pkj, ref_term(dbase,data,Ref,data(Nama,alamat(Jalan,Kota,Kode_ Pos),TglLahir,Pekerjaan)), writef("\n %-12 %-18 %-8 %-6 %-15 %- 17",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), key_next(dbase,SelPkj,RefBrk),!, cari_pekerjaan(Pekerjaan,SelPkj,RefBrk). cari_pekerjaan(Pekerjaan,SelPkj,_) :- key_next(dbase,SelPkj,RefBrk),!, cari_pekerjaan(Pekerjaan,SelPjk,Refbrk). cari_pekerjaan(_,SelPkj,_) :- bt_close(dbase,SelPkj), db_close(dbase). cari_hapus(Nama,SelNama,SelPkj) :- key_search(dbase,SelNama,Nama,Ref),!, key_delete(dbase,SelNama,Nama,Ref), ref_term(dbase,data,Ref,data(Nama,_,_,Pkj)), key_delete(dbase,SelPkj,Pkj,Ref), term_delete(dbase,"Pribadi",Ref), bt_close(dbase,SelNama), bt_close(dbase,SelPkj), db_close(dbase). cari_hapus(_,SelNama,SelPkj) :- write(" \n Nama tersebut tidak ada ! "), readchar(_), bt_close(dbase,SelNama), bt_close(dbase,SelPkj), db_close(dbase). repeat. repeat :- repeat.


Download ppt "Basis data adalah kumpulan fakta-fakta tentang suatu pokok bahasan tertentu Di dalam prolog ada 2 macam basis data yaitu  Basis Data Internal  Basis."

Presentasi serupa


Iklan oleh Google