SlideServe
Menu
Préférences
© SlideServe · v2026

Basis data

lieu avatar
19 diapositives · 689 Views · Aug 23, 2014

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

Basis data - slide 1
01 / 19Basis data
1 / 17

Télécharger la présentation

Basis data
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  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.