1 / 19

Basis data

Basis data. 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. Basis data internal. Untuk menyatakan penggunaan basis data maka harus didefiniskan terlebih dahulu

lieu
Download Presentation

Basis data

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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) • 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. 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,Pekerjaan)), 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),TglLahir,Pekerjaan)), tambah_data. 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 (ExtendedMemory 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 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. 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. 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,alamat(Jalan,Kota,Kode_Pos),TglLahir,Pekerjaan),_), Pkj = pekerjaan, writef("\n %-8 %-18 %-8 %-8 %-15 %-17",Nama,Jalan,Kota,Kode_Pos,TglLahir,Pekerjaan), 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(Nama,alamat(Jalan,Kota,Kode_Pos),TglLahir, Pekerjaan),_), masukkan_data. 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 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,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).

  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.

More Related