Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Basis data.

Presentasi serupa


Presentasi berjudul: "Basis data."— Transcript presentasi:

1 Basis data

2 Basis data 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 Basis data internal 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 Basis data internal 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 Predikat standar 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 Contoh program 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(3) :- makewindow(1,13,1,"DATA LAMA",3,0,20,80), write(" 1
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), 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). 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). save("a:pribadi.dat"), removewindow. pilihan_awal(2) :- makewindow(1,13,1,"MENAMBAH DATA ",3,0,20,80), consult("a:pribadi.dat"), tambah_data.

8 pilihan(2) :- clearwindow, write(" Kota : "),readln(Kota), 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) :- write(" Pekerjaan : "),readln(Pekerjaan), write(" Data orang yang mempunyai pekerjaan ",Pekerjaan," :\n"), 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. save("a:pribadi.dat").

9 Basis data eksternal 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 Predikat standar basis data eksternal
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 Predikat standar untuk manipulasi rantai manipulasi term
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 Contoh program 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(4) :- db_close(dbase). pilihan_awal(5) :- exit
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(2) :- write(" Kota : "),readln(Kt), write(" Data orang yang tinggal di kota ",Kt," :\n"),nl, Kt = Kota, 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_chains(dbase,Rantai), chain_terms(dbase,Rantai,data,data(Nama,_,_,_),Ref), Nm = Nama,!, term_delete(dbase,Rantai,Ref), db_close(dbase).

14 pilihan(3) :- clearwindow, write(" Pekerjaan : "),readln(Pkj), 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. 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. db_close(dbase).

15 Predikat standar b+ tree
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 Contoh program 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). 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.

17 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_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. db_close(dbase). 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(_).

18 pilihan(2) :- clearwindow, write(" Nama : "),readln(Nama), 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) :- write(" Pekerjaan : "),readln(Pkj), write(" Data orang yang mempunyai pekerjaan ",Pkj," :\n"), 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),
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 "), cari_pekerjaan(Pekerjaan,SelPkj,Ref) :- trace(on), key_current(dbase,SelPkj,Pkj,_), Pekerjaan = Pkj, 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), cari_hapus(_,SelNama,SelPkj) :- write(" \n Nama tersebut tidak ada ! "), readchar(_), repeat. repeat :- repeat.


Download ppt "Basis data."

Presentasi serupa


Iklan oleh Google