1 MODUL 1 BASIS DATA SPASIAL KEMENRISTEK2 KATA PENGANTAR Modul ini dibuat dalam rangka Pelatihan Open Sources Software Geodatabase, Web Servis, dangis...
KATA PENGANTAR Modul ini dibuat dalam rangka Pelatihan Open Sources Software Geodatabase, Web Servis, danGIS (Model Spasial Open Platform) yang dilaksanakan oleh Kementrian RISET dan Teknologi(MENRISTEK) yang bertujuan untuk melatih daerah untuk menggunakan perangkat open sources untuk menyimpan dan mengelola data spasialnya dalam rangka mendukung pembangunan khususya program MP3EI. PostgreSQL/PostGISadalah Sistem Manajemen Basis Data Spasial (SMBDS atau SDBMS) yang merupakan merupakan salah satu perangkat lunak open source. Perangkat lunak DBMS ini menawarkan skalabilitas, keluwesan, dan kinerja yang tinggi khususnya dalam manajemen basis data spasial. PostgreSQL/PostGIS ini mendukung mendukung bahasa SQL secara luas yang utamanya berfungsi dalam suatu basis data relasional. Dalam panduan ini, akan dibahas mengenai konsep dasar basis data spasial dari definisi hingga perancangan basis data relasional dan juga pengimplementasian hasil rancangan basis data ke dalam SDBMS PostgreSQL/PostGIS. Kami mengucapkan terima kasih kepada berbagai pihak yang telah membantu dalam penyusunan modul ini dan semoga modul ini dapat memberi manfaat bagi pengguna.
Bandung, 9 April 2013 Penyusun
i
MODUL 1 BASIS DATA SPASIAL
DAFTAR ISI
KATA PENGANTAR .................................................................................................................................. i DAFTAR ISI ............................................................................................................................................. ii MATERI 1 -‐ BASIS DATA .......................................................................................................................... 1 1.1 Teori Dasar Basis Data ................................................................................................................. 1 1.1.1 Database Management System (DBMS) .............................................................................. 3 1.1.2 Normalisasi .......................................................................................................................... 5 1.1.3 Pemodelan Entity Relationship (ER-‐MODEL) ....................................................................... 9 1.1.4 Perancangan Basis Data ..................................................................................................... 15 1.2 Studi Kasus MP3EI ..................................................................................................................... 21 1.3 Latihan Basis Data ...................................................................................................................... 31 1.3.1 Melakukan Normalisasi Tabel ............................................................................................ 31 1.3.2 Membuat Model Entity Relationship (ER-‐Model) .............................................................. 32 1.4
Studi Kasus MP3EI : Merancang Basis Data ....................................................................... 33
MATERI 2 -‐ PostgreSQL ........................................................................................................................ 42 2.1 Pengantar PostgreSQL ............................................................................................................... 42 2.1.1 Pengenalan PostgreSQL ..................................................................................................... 42 2.1.2 Instalasi PostgreSQL ........................................................................................................... 45 2.1.3 Pengenalan PgAdmin pada PostgreSQL ............................................................................. 48 2.1.4 SQL (Structured Query Language) ...................................................................................... 52 2.1.5 Model Data Relasional ....................................................................................................... 53 2.2 Bahasa SQL ................................................................................................................................ 53 2.2.1 Tipe Data dalam SQL .......................................................................................................... 55 2.2.2 Implementasi DDL pada PostgreSQL .................................................................................. 57 Create ....................................................................................................................................... 57 Create Database ................................................................................................................... 57 Create Index ......................................................................................................................... 59 Create View .......................................................................................................................... 59 Drop ......................................................................................................................................... 60 Drop Table ............................................................................................................................ 60 Drop Index ........................................................................................................................... 60 Drop View ............................................................................................................................ 61 Alter ......................................................................................................................................... 61 ii
MODUL 1 BASIS DATA SPASIAL 2.2.3 Implementasi DML pada PostgreSQL ................................................................................. 61 Select ....................................................................................................................................... 61 Simple Select ........................................................................................................................ 61 Joins ..................................................................................................................................... 62 Aggregate Operators ............................................................................................................ 63 Aggregation by Groups ........................................................................................................ 63 Union, Intersect, Except ....................................................................................................... 64 Insert into ................................................................................................................................. 65 Update ..................................................................................................................................... 66 Delete ....................................................................................................................................... 67 2.3 Latihan Implementasi Bahasa SQL pada Model Data Relasional ............................................... 67 2.3.1 Mengimplementasikan Model Data ER pada PostgreSQL ................................................. 67 2.3.2 Menambahkan Data ke Model .......................................................................................... 74 2.3.3 Query ................................................................................................................................. 76 MATERI 3 -‐ PostGIS .............................................................................................................................. 77 3.1 Pengantar PostGIS ..................................................................................................................... 77 3.1.1. Pengenalan PostGIS ........................................................................................................... 77 3.1.2 Instalasi PostGIS ................................................................................................................. 79 3.2 Manajemen Data Spasial di PostGIS .......................................................................................... 82 3.2.1 Membuat Geodatabase ..................................................................................................... 82 Menggunakan createlang plpgsql ............................................................................................ 82 Menggunakan Template PostGIS ............................................................................................. 84 3.2.2 Pengelolaan Data Vektor ................................................................................................... 85 Objek Geometry, OGC Simple Feature for SQL ........................................................................ 85 Tipe Data Geography ............................................................................................................... 86 Membuat Table Spatial ............................................................................................................ 86 Memuat Data Vektor (Loading Spatial Data) ........................................................................... 88 Menggunakan SQL ............................................................................................................... 88 Menggunakan Loader .......................................................................................................... 89 Menampilkan Data Vektor (Retrieving Spatial Data) ............................................................... 89 Menggunakan SQL ............................................................................................................... 89 Menggunakan Dumper ........................................................................................................ 90 Membuat Indeks Data Vektor (Building Indexes) .................................................................... 91 Spatial Query (Spatial SQL) ...................................................................................................... 91 iii
MODUL 1 BASIS DATA SPASIAL 3.3 Aplikasi Desktop GIS (QuantumGIS) .......................................................................................... 93 3.4 Latihan Implementasi PostGIS pada Basis Data Spasial ............................................................. 95 3.4.1 Penyusunan Tabel Spasial .................................................................................................. 95 3.4.2 Preview Data Spasial dari Basis data Spasial ...................................................................... 97
iv
MODUL 1 BASIS DATA SPASIAL
MATERI 1 -‐ BASIS DATA 1.1 Teori Dasar Basis Data Menurut wikipedia Indonesia Basis data (database) adalah kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut. Perangkat lunak atau software yang digunakan untuk mengelola dan memanggil query basis data disebut sistem manajemen basis data (database management system, DBMS). Beberapa Definisi tentang basis data (database) : 1) Menurut Gordon C. Everest : Basis data adalah koleksi atau kumpulan data yang mekanis, terbagi / shared, terdefinisi secara formal dan dikontrol terpusat pada organisasi. 2) Menurut Toni Fabbri :Basis data adalah sebuah sistem file-‐file yang terintegrasi yang mempunyai minimal primary key untuk pengulangan data. 3) Menurut S. Attre :Basis data adalah koleksi data-‐data yang saling berhubungan mengenai suatu organisasi / enterprise dengan macam-‐macam pemakaiannya. Komponen penyusun utama dari sebuah basis data terdiri dari : • Hardware Biasanya berupa perangkat komputer standar, media penyimpan sekunder, dan media komunikasi untuk sistem jaringan. • Operating System Merupakan perangkat lunak yang memfungsikan, mengendalikan seluruh sumber daya dan melakukan operasi dasar dalam sistem komputer. Harus sesuai dengan DBMS yang digunakan. • Database Yakni basis data yang mewakili sistem tertentu untuk dikelola. Sebuah sistem basis data bias terdiri dari lebih dari satu basis data. • DBMS (Database Management System) Perangkat lunak yang digunakan untuk mengelola basis data. Contoh kelas sederhana: dBase, Foxbase, Rbase, MS. Access, MS. Foxpro, Borland Paradox. Contoh kelas kompleks: Borland-‐Interbase, MS. SQL Server, Oracle, Informix, Sybase. • User (pengguna sistem basis data) Orang-‐orang yang berinteraksi dengan sistem basis data, mulai dari yang merancang sampai yang menggunakan di tingkat akhir. • Optional Software Perangkat lunak pelengkap yang mendukung. Bersifat opsional. 1
MODUL 1 BASIS DATA SPASIAL
Abstraksi data pada sebuah basis data merupakan level dalam bagaimana melihat data dalam sebuah sistem basis data. Biasanya pengguna hanya tau bagaimana data itu terlihat tanpa tahu bagaimana data tersebut disimpan dan dipelihara. Abstraksi data pada basis data terdiri dari 3 level yaitu level eksternal, level konseptual, dan level internal.
Penjelasan dari gambar diatas adalah : ü Physical view merupakan bentuk implementasi dari conceptual view, yaitu pandangan tentang bagaimana data disimpan dalam media penyimpanan data. Yang merupakan level terendah untuk merepresentasikan basis data. Record disimpan dalam media penyimpanan seperti hardisk dalam format byte. ü Conceptual view merupakan pandangan yang berkaitan dengan permasalahan data-‐ data apa saja yang diperlukan untuk disimpan dalam basis data dan penjelasan mengenai hubungan antar data yang satu dengan lainnya. Keberadaannya tidak perlu memperhitungkan kekurangan perangkat keras maupun perangkat lunak pembangun aplikasi basis data. ü User view dalah level basis data yang berhubungan dengan representasi data dari sisi setiap pengguna dan merupakan level pengguna/programmer atau pandangan tentang bagaimana data ditampilkan. Manfaat dari pembentukan basis data ini sendiri adalah sebagai berikut: § Sebagai komponen utama atau penting dalam sistem informasi, karena merupakan dasar dalam menyediakan informasi. § Menentukan kualitas informasi yaitu cepat, akurat, dan relevan, sehingga infromasi yang disajikan tidak basi. Informasi dapat dikatakan bernilai bila manfaatnya lebih efektif dibandingkan dengan biaya mendapatkanya. § Mengatasi kerangkapan data (redundancy data). § Menghindari terjadinya inkonsistensi data. § Mengatasi kesulitan dalam mengakses data. § Menyusun format yang standar dari sebuah data. 2
MODUL 1 BASIS DATA SPASIAL
§ Penggunaan oleh banyak pemakai (multiple user). Sebuah basis data bisa dimanfaatkan sekaligus secara bersama oleh banyak pengguna (multiuser). § Melakukan perlindungan dan pengamanan data. Setiap data hanya bisa diakses atau dimanipulasi oleh pihak yang diberi otoritas dengan memberikan login dan password terhadap masing-‐masing data. § Agar pemakai mampu menyusun suatu pandangan (view) abstraksi dari data. Hal ini bertujuan menyederhanakan interaksi antara pengguna dengan sistemnya dan basis data dapat mempresentasikan pandangan yang berbeda kepada para pengguna, programmer dan administratornya. 1.1.1 Database Management System (DBMS) Menurut Wikipedia DBMS adalah suatu sistem atau perangkat lunak yang dirancang untuk mengelola suatu basis data dan menjalankan operasi terhadap data yang diminta banyak pengguna. DBMS merupakan perangkat lunak yang dirancang untuk dapat melakukan utilisasi dan mengelola koleksi data dalam jumah yang besar. DBMS juga dirancang untuk dapat melakukan masnipulasi data secara lebih mudah. Beberapa pengertian DBMS menurut para ahli adalah : 1) Menutut C.J. Date : DBMS adalah merupakan software yang menghandel seluruh akses pada basis data untuk melayani kebutuhan user. 2) Menurut S, Attre : DBMS adalah software, hardware, firmware dan prosedur-‐ prosedur yang memanage basis data. Firmware adalah software yang telah menjadi modul yang tertanam pada hardware (ROM). 3) Menurut Gordon C. Everest : DBMS adalah manajemen yang efektif untuk mengorganisasi sumber daya data. DBMS juga memiliki beberapa fungsi, diantaranya adalah : • Data Definition: DBMS harus dapat mengolah pendefinisian data. • Data Manipulation: DBMS harus dapat menangani permintaan-‐permintaan dari pemakai untuk mengakses data. • Data Security & Integrity: DBMS harus dapat memeriksa security dan integrity data yang didefinisikan oleh DBA. • Data Recovery & Concurency ∼ DBMS harus dapat menangani kegagalan-‐kegagalan pengaksesan basis data yang dapat disebabkan oleh kesalahan sistem, kerusakan disk, dsb. ∼ DBMS harus dapat mengontrol pengaksesan data yang konkuren yaitu bila satu data diakses secara bersama-‐sama oleh lebih dari satu pemakai pada saat yang bersamaan. • Data Dictionary: DBMS harus menyediakan data dictionary. • Performance: DBMS harus menangani unjuk kerja dari semua fungsi seefisien mungkin.
3
MODUL 1 BASIS DATA SPASIAL
DBMS merupakan perantara bagi pemakai dengan basis data. Untuk merinteraksi dengan DBMS (basis data) menggunakan bahasa basis data yang telah ditentukan oleh perusahaan DBMS. Bahasa basis data biasanya terdiri atas perintah-‐perintah yang di formulasikan sehingga perintah tersebut akan diproses olah DBMS. Perintah-‐ perintah biasanya ditentukan oleh user. Ada dua bahasa basis data yang sering digunakan : a) Data Definition Language (DDL) DDL digunakan untuk menggambarkan desain basis data secara keseluruhan. DDL digunakan untuk membuat tabel baru, menuat indeks, ataupun mengubah tabel. Hasil kompilasi DDL disimpan di kamus data. b) Data Manipulation Language (DML) DML digunakan untuk melakukan menipulasi dan pengambilan data pada suatu basis data seperti penambahan data baru ke dalam basis data, menghapus data dari suatu basis data dan pengubahan data di suatu basis data. Tiga komponen utama yang terdapat dalam DBMS adalah : v Kamus Data Atau biasa disebut repositori, adalah dokumen atau file yang menyimpan definisi data dan deskripsi struktur data yang digunakan dalam basis data. Kamus data tidak memuat data aktual basis data, namun hanya informasi untuk mengelolanya. Tanpa kamus data, DBMS tidak dapat mengakses data dari basis data. Kamus data menentukan pengaturan dasar basis data dan memuat daftar semua file ke dalam basis data, jumlah record setiap file, dan nama serta tipe masing-‐masing field. Kamus data juga membantu melindungi keamanan basis data dengan mengindikasikan siapa saja yang memiliki hak untuk mengaksesnya. v Utilitas Adalah program yang membantu Anda untuk dapat memperoleh basis data dengan cara menciptakan, mengedit, dan menghapus data, record dan file. Dengan utilitas ini Anda dapat memonitor jenis data yang dimasukkan dan memilah basis data Anda berdasarkan key field; melakukan pencarian serta mengatur informasi juga menjadi lebih mudah. v Penghasil Laporan Adalah program untuk menghasilkan dokumen yang terlihat pada layar atau yang dicetak dari semua atau sebagian basis data. Keuntungan dari Database Management System (DBMS)adalah: ü Pengulangan Data Berkurang Pengulangan data atau repetisi berarti bahwa field data yang sama (misal: alamat seseorang) muncul berkali-‐kali dalam file yang berbeda dan terkadang dalam format yang berbeda. Dalam sistem pemrosesan yang lama, file-‐file yang
4
MODUL 1 BASIS DATA SPASIAL
berbeda akan mengulang data yang sama sehingga memboroskan ruang penyimpanan. ü Integritas Data Meningkat Integritas data berarti data itu akurat, konsisten dan terbaru. Dalam sistem lama, ketika ada perubahan dalam sebuah file, perubahan ini tidak perlu dibuat dalam file lain. Akibatnya, beberapa laporan memiliki informasi yang tidak akurat. Dalam DBMS, berkurangnya pengulangan berarti meningkatkan kesempatan integritas data, karena semua perubahan hanya dilakukan di satu tempat. ü Keamanan Meningkat Meskipun berbagai departemen bisa berbagi pakai data, namun akses ke informasi bisa dibatasi hanya untuk pengguna tertentu. Hanya dengan menggunakan password maka informasi finansial, medis, dan nilai mahasiswa dalam basis data sebuah universitas tersedia hanya bagi mereka yang memiliki hak untuk mengetahuinya. ü Kemudahan Memelihara Data DBMS menawarkan prosedur standar untuk menambahkan, mengedit dan menghapus rekaman, juga untuk memvalidasi pemeriksaan untuk memastikan bahwa data yang tepat sudah dimasukkan dengan benar dan lengkap ke dalam masing-‐masing jenis field. Utilitas backup data membantu memastikan tersedianya data jika terjadi kegagalan sistem primer. 1.1.2 Normalisasi Proses normalisasi adalah proses pengelompokan data elemen menjadi tabel-‐tabel yang menunjukkan entity dan relasinya. Pada proses normalisasi dilakukan pengujian pada beberapa kondisi apakah ada kesulitan pada saat menambah/menyisipkan, menghapus, mengubah dan mengakses pada suatu basis data. Bila terdapat kesulitan pada pengujian tersebut maka perlu dipecahkan relasi pada beberapa tabel lagi atau dengan kata lain perancangan basis data belum optimal. Beberapa pengertian mengenai normalisasi : • Istilah Normalisasi berasal dari E. F.Codd, salah seorang perintis teknologi basis data. selain dipakai sebagai metodologi tersendiri untuk menciptakan struktur tabel 9 relasi) dalam basis data (dengan tujuan untuk mengurangi kemubaziran data) , normalisasi terkadang hanya diipakai sebagai perangkat verifikasi terhadap tabel-‐tabel yang dihasilkan oleh metodologi lain ( misalnya E-‐R). Normalisasi memberikan panduan yang sangat membantu bagi pengembang untuk mencegah penciptaan struktur tabel yang kurang fleksibel atau mengurangi keflekxibelan. • Kroenke mendefinisikan normalisasi sebagai proses untuk mengubah suatu relasi yang memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang
5
MODUL 1 BASIS DATA SPASIAL
•
•
tidak memiliki masalah tersebut. Masalah yang dimaksud oleh kroenke ini sering disebut dengan istilah anomali. Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data, teknik pengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi yang baik (tanpa redudansi). Normalisasi adalah suatu proses memperbaiki/membangun dengan model data relasional, dan secara umum lebih tepat dikoneksikan dengan model data logika.
Tujuan dari normalisasi itu sendiri adalah untuk menghilangkan kerangkapan data, mengurangi kompleksitas, dan untuk mempermudah pemodifikasian data. Proses normalisasi ini memiliki beberapa tahapan, yaitu :
Secara detail, tahapan-‐tahapan normalisasi diatas dimulai dari tahapan yang pertama hingga tahapan akhir adalah : 1) Bentuk Normal Kesatu (1 NF/First Normal Form) Bentuk normal kesatu mempunyai ciri yaitu setiap data dibentuk dalam file flat, data dibentuk dalam satu record demi satu record dan nilai dari field berupa “atomic value”. Tidak ada set atribut yang berulang ulang atau atribut bernilai ganda (multi value). Tiap field hanya satu pengertian, bukan merupakan kumpulan data yang mempunyai arti mendua. Hanya satu arti saja dan juga bukanlah pecahan kata kata sehingga artinya lain. Contoh tabel yang belum normal : 6
MODUL 1 BASIS DATA SPASIAL
NIM
Nama
Hobi
15113008
Nina
Memasak, berenang, membaca
15113009
Raditya
Membaca, melukis
15113010
Galuh
Membaca komik, menonton film
Tabel diatas menjadi Tabel Normal 1NF apabila untuk setiap baris dan kolom hanya memiliki satu nilai (value). Sehingga untuk membuat tabel diatas menjadi normal 1NF, maka untuk kolom hobi harus dibuat dalam beberapa baris baru.
NIM
Nama
Hobi
15113008
Nina
Memasak
15113008
Nina
Berenang
15113008
Nina
Membaca
15113009
Raditya
Membaca
15113009
Raditya
Melukis
15113010
Galuh
Membaca komik
15113010
Galuh
Menonton film
2) Bentuk Normal Kedua (2NF) Bentuk normal 2NF mempunyai syarat yaitu bentuk data telah memenuhi kriteria bentuk normal 1NF. Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama (primary key), sehingga untuk membentuk normal 2NF haruslah sudah ditentukan kunci-‐kunci field (primary key). Kunci field harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Contoh tabel yang sudah memenuhi normal 1NF, tetapi belum memenuhi normal kedua (2NF): mhs_nr mhs_na mhs_alam mk_kod mk_nama mk_sks nihuruf p ma at e Tabel diatas belum memenuhi normal 2NF karena kolom {mhs_nrp dan mk_kode} yang dianggap sebagai primary key, sedangkan untuk kolom-‐kolom lain {mhs_nama, mhs_alamat, mk_nama, mk_sks} tidak semuanya bergantung 7
MODUL 1 BASIS DATA SPASIAL
kepada kedua kolom primary key tersebut. Hanya kolom {nihuruf} yang bergantung kepada kedua kolom primary key tersebut. {mhs_nrp dan mk_kode} -‐-‐/-‐>{mhs_nama} {mhs_nrp dan mk_kode} -‐-‐/-‐>{mhs_alamat} {mhs_nrp dan mk_kode} -‐-‐/-‐>{mk_nama} {mhs_nrp dan mk_kode} -‐-‐/-‐>{mk_sks} {mhs_nrp dan mk_kode} -‐-‐-‐> {nihuruf} Sehingga tabel diatas harus didekomposisi menjadi beberapa tabel yang memenuhi syarat tabel normal 2NF, yang terdiri dari : Tabel Nilai à {mhs_nrp, mk_kode, nihuruf} Tabel Mahasiswa à {mhs_nrp, mhs_nama, mhs_alamat} Tabel Matakuliah à {mk_kode, mk_nama, mk_sks} 3) Bentuk Normal Ketiga (3NF) Untuk menjadi bentuk Normal Ketiga (3NF) maka relasi haruslah dalam bentuk Normal Kedua (2NF) dan semua atribut bukan primer (non primary key) tidak punya hubungan yang transitif. Artinya setiap atribut non primary key harus bergantung hanya pada atribut primary key secara menyeluruh. Contoh tabel yang memenuhi 2NF, tetapi tidak memenuhi 3NF: Tabel Mahasiswa : nrp nama alm_jalan alm_kota alm_provinsi alm_kodepos Karena masih terdapat atribut non primary key {alm_kota dan alm_provinsi} yang masih memiliki ketergantungan terhadap atribut non primary key {alm_kodepos}: alm_kodepos à {alm_provinsi, alm_kota} Sehingga tabel diatas harus didekomposisi menjadi : Tabel Mahasiswa à {nrp, nama, alm_jalan, alm_kodepos} Tabel kodepos à {alm_kodepos, alm_provinsi, alm_kota} 4) Boyce-‐Code Normal Form (BCNF) Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap ketergantungan fungsional (functional dependency) terhadap setiap atribut atau gabungan atribut dalam bentuk: X à Y maka X adalah super key . Tabel tersebut harus didekomposisi berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel-‐tabel hasil dekomposisi. Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF. Perbedaannya, untuk functional dependency X à A, BCNF tidak membolehkan A sebagai bagian dari primary key. Jika kriteria ketiga BCNF tidak 8
MODUL 1 BASIS DATA SPASIAL
dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar bentuk normal 3NF. 5) Bentuk Normal Keempat (4NF) Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribut. Untuk setiap multivalueddependencies (MVD) juga harus merupakan functional dependencies. Biasanya jika sebuah tabel sudah memenuhi normal 3NF maka bisa dikatan tabel tersebut sudah normal. Namun kadang masih ada tabel normal 3NF yang memiliki multivalued sehingga harus dilakukan normal 4NF. 6) Bentuk Normal Kelima (5NF) Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah lossless decomposition menjadi tabel-‐tabel yg lebih kecil. Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah didekomposisi menjadi tabel-‐tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula. Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi tiga kriteria sebagai berikut: ü Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless-‐Join Decomposition). Artinya, setelah tabel tersebut diuraikan/didekomposisi menjadi tabel-‐tabel baru, tabel-‐tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis. ü Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation). ü Tidak melanggar Boyce-‐Code Normal Form (BCNF) 1.1.3 Pemodelan Entity Relationship (ER-‐MODEL) Model data Entity-‐Relationship (E-‐R) terdiri dari sekumpulan objek-‐objek yang disebut dengan entitas dan hubungan yang terjadi diantara objek-‐objek tersebut. Model data E-‐R terbagi menjadi tiga konsep dasar, yaitu himpunan entitas, himpunan relasi, dan atribut. Entitas (Entity) dan Himpunan Entitas (Entity Set) Suatu entitas merupakan suatu objek dasar atau individu yang mewakili sesuatu yang nyata eksistensinya dan dapat dibedakan dari objek-‐objek lain. Suatu entitas mempunyai sekumpulan sifat, dan nilai beberapa sifat tersebut adalah unik yang dapat mengidentifikasi entitas tersebut. Contoh entitas adalah mahasiswa pada 9
MODUL 1 BASIS DATA SPASIAL
suatu perguruan tinggi dengan NIM secara unik dapat menjadi identitas dari setiap mahasiswa. Sekumpulan entitas yang mempunyai tipe yang sama (sejenis) dan berada dalam lingkup yang sama membentuk suatu himpunan entitas. Contohnya sekumpulan orang yang menjadi mahasiswa pada suatu perguruan tinggi dapat difenisikan sebagai sebagai himpunan entitas mahasiswa. Sehingga dapat dikatakan bahwa entitas merujuk ke suatu objek, sedangkan himpunan merujuk kepada rumpun atau kelompok dari objek tersebut. Setiap entitas memiliki atribut. Artibut merupakan sifat atau properti yang dimiliki oleh entitas. Atribut inilah yang membedakan antara satu entitas dengan entitas lainnya. Sebagai contoh entitas mahasiswa memiliki atribut berupa NIM, nama mahasiswa, alamat mahasiswa, dan tanggal lahir dari mahasiswa tersebut. Tabel entitas mahasiswa : NIM Nama_mhs Alamat_mhs Tgl_lahir 15107001 Arini Cisitu Lama 12/04/1989 15107012 Dianrina Tubagus Ismail 15/08/1989 15107032 Fandrio Plesiran 25/01/1990 Untuk setiap atribut, terdapat sekumpulan nilai yang disebut dengan domain, atau himpunan dari nilai dari suatu atribut tersebut. Misalnya domain dari atribut NIM dapat berupa himpunan integer dengan panjang yang telah ditentukan. Dengan demikian suatu basis data terdiri dari sekumpulan himpunan entitas yang masing-‐ masing terdiri dari sejumlah entitas dengan tipe yang sama. Sehingga suatu atribut dari suatu himpunan entitas merupakan fungsi pemetaan dari entitas ke domain. Dibawah ini merupakan beberapa tipe atau karekteristik dari atribut antara lain : ü Atribut sederhana yaitu atribut yang tidak dapat diuraikan lagi menjadi sub atribut atau atribut yang lainnya. Pada contoh tabel entitas mahasiswa diatas, atribut nama_mhs merupakan atribut sederhana karena tidak bisa diuraikan lagi menjadi sub atribut. ü Atribut komposit yaitu atribut yang dapat diuraikan menjadi beberapa sub atribut. Pada contoh tabel entitas mahasiswa diatas, yang merupakan atribut komposit adalah atribut alamat_mhs karena masih dapat diuraikan lagi menjadi beberapa sub atribut misalnya nama_kota, kodepos, dll. ü Atribut bernilai tunggal (single-‐valued attribute) yaitu atribut yang mempunyai paling banyak satu nilai untuk setiap baris data. Pada contoh entitas mahasiswa diatas semua atribut merupakan atribut bernilai tunggal. ü Atribut bernilai banyak (multivalued attribute) yaitu atribut yang berisi lebih dari satu nilai, tetapi mepunyai jenis yang sama. Contohnya atribut hobi yang isinya lebih dari satu hobi.
10
MODUL 1 BASIS DATA SPASIAL
ü Atribut null adalah ketika suatu entitas tidak mempunyai suatu nilai untuk suatu atribut. Null juga menandakan bahwa suatu niali atribut tidak ada atau tidak diketahui. ü Atribut turunan adalah atribut yang nilainya diperoleh dari pengolahan atau turunan dari atribut atau tabel yang lain yang berhubungan. Misalnya untuk mengetahui angkatan dari seorang mahasiswa kita bisa mengetahui dari NIM mahasiswa tersebut. Relasi (Relationship) dan Himpunan Relasi (Relationship Set) Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari sejumlah himpunan entitas yang berbeda. Penguhubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan himpunan entitas, pada diagram Entity Relationship Diagram (ERD) dinyatakan dalam bentuk garis. Untuk lebih jelas lihat contoh diagram ER di bawah ini.
Kardinalitas Relasi (Mapping Cardinalities) Kardinalitas merupakan jumlah maksimum entitas dimana entitas tersebut dapat berelasi dengan entitas pada himpunan entitas yang lain. Adapun kardinalitas relasi yang bisa terjadi antara suatu himpunan ‘A’ dengan suatu himpunan ‘B’ adalah : ü Satu ke satu (One to one) Satu entitas dalam himpunan entitas A dihubungkan paling banyak terhdap satu entitas pula pada himpunan entitas B, dan entitas dalam himpunan entitas B dihubungkan dengan paling banyak satu entitas dalam himpunan entitas A. Untuk lebih jelasnya lihat gambar di bawah.
11
MODUL 1 BASIS DATA SPASIAL
ü Satu ke banyak (One to many) Suatu entitas dalam himpunan entitas A dihubungkan dengan lebih dari satu entitas dalam himpunan entitas B, dan entitas dalam himpunan entitas B hanya dapat dihubungkan dengan paling banyak satu entitas dalam himpunan entitas himpunan B. Untuk lebih jelasnya, lihat gambar di bawah ini.
ü Banyak ke satu (Many to one) Suatu entitas dalam himpunan entitas A dihubungkan dengan paling banyak satu entitas dalam himpunan entitas B, dan entitas dalam himpunan entitas B dapat dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A. Untuk lebih jelasnya, lihat gambar di bawah ini.
ü Banyak ke banyak (Many to many) Semua entitas dalam himpunan entitas A dapat dihubungkan dengan lebih dari satu entitas dalam himpunan entitas B, dan entitas dalam himpunan entitas himpunan B dapat dihubungkan dengan lebih dari satu entitas dalam himpunan entitas A. Untuk lebih jelasnya, lihat gambar di bawah ini.
12
MODUL 1 BASIS DATA SPASIAL
Kelas Keanggotaan Kelas keanggotaan menunjukkan apakah semua anggota entitas memiliki hubungan dengan anggota entitas lagi secara pasti atau tidak. Kelas keanggotaan terdiri dari dua jenis, yaitu obligatori dan non obligatori. • Obligatory adalah jika semua anggota entitas secara pasti berhubungan dengan anggota entitas lainnya. • Non-‐obligatory adalah jika semua anggota entitas secara pasti berhubungan dengan anggota entitas lainnya. Berikut beberapa contoh penggunaan kelas keanggotaan. 1. Obligatori dan Obligatori ⇒ Enterprise rules : • Seorang guru pasti mengajar mata pelajaran • Satu mata pelajaran pasti diajar oleh guru 2. Obligatori dan Non Obligatori ⇒ Enterprise rules : • Seorang guru pasti mengajar mata pelajaran • Satu mata pelajaran belum tentu diajar oleh guru
3. Non Obligatori dan Non Obligatori ⇒ Enterprise rules : • Seorang guru belum tentu mengajar mata pelajaran • Satu mata pelajaran belum tentu diajar oleh guru
Kunci (Key) Kunci (key) adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data dengan unik. Jika suatu atribut menjadi kunci, maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama. Adapun macam-‐ macam kunci tersebut adalah : 13
MODUL 1 BASIS DATA SPASIAL
1) Superkey Adalah suatu himpunan yang terdiri dari satu atau lebih atribut yang dapat membedakan setiap baris data dalam sebuah tabel secara unik. Contohnya kumpulan atribut (NIM, nama_mhs, alamat_mhs, tgl_lahir) dan (NIM, nama_mhs, alamat_mhs). 2) Candidate key Adalah himpunan atribut minimal yang dapat membedakan setiap baris data dalam sebuah tabel secara unik. Misalnya atribut (NIM) dan (nama_mhs). 3) Primary key Adalah kunci yang paling unik diantara semua atribut yang ada. Biasanya juga yang paling ringkas dan dijadikan sebagai acuan. Contohnya atribut yang paling sering digunakan sebagai primary keyadalah (NIM). Diagram Entity Relationship (Diagram E-‐R) Sebuah basis data bisa digambarkan secara grafik dengan menggunakan diagram E-‐R. Adapun komponen-‐komponen dari suatu diagram E-‐R adalah sebagai berikut : o Persegi panjang, menggambarkan himpunan entitas.
o Belah ketupat, menggambarkan himpunan relasi.
o Elips, menggambarkan atribut-‐atribut.
o Garis, menggambarkan hubungan atribut ke entitas dan himpunan entitas ke himpunan relasi. o Kardinalitas relasi dapat digambarkan dengan banyaknya garis atau cabang atau dengan memaki angka, 1 untuk relasi satu dan n untuk relasi banyak.
14
MODUL 1 BASIS DATA SPASIAL
1.1.4 Perancangan Basis Data Dalam melakukan perancangan basis data, terdapat beberapa tujuan yaitu : § Untuk memenuhi kebutuhan akan informasi dari pengguna dan aplikasi yang digunakan. § Menyediakan struktur informasi yang natural dan mudah dimengerti oleh pengguna. § Mendukung kebutuhan pemrosesan dan objektifitas kinerja (waktu respon, waktu pemrosesan, dan ruang penyimpanan) Pada kegiatan perancangan basis data, terdapat beberapa tahapan yang harus dilakukan untuk memperoleh basis data yang sesuai dengan yang diinginkan. Adapun tahapannya adalah sebagai berikut : 1) Perencanaan basis data. Untuk melakukan perencanaan basis data ini hal yang harus dilakukan adalah : ∼ Evaluasi sistem yang ada, ∼ Pengembangan standardisasi dari pengumpulan data, format data, proses perancangan dan implementasi, ∼ Mempertimbangkan kelayakan secara teknologi, operasional, dan secara ekonomi. 2) Pendefinisian sistem. Ada beberapa hal yang harus didefinisikan sebelum merancang basis data, diantaranya : ∼ Pendefinisian ruang lingkup sistem basis data yang akan dibuat, para pengguna, dan aplikasi yang digunakan, ∼ Pendefinisian pengguna dan aplikasi untuk masa yang akan datang (jangka panjang), ∼ Pendefinisian batasan dari sistem basis data dan hubungan dengan bagian dari sistem informasi secara organisasi. 3) Pengumpulan dan analisis data ∼ Menentukan kelompok pengguna dan bidang-‐bidang aplikasinya, ∼ Peninjauan dokumentasi yang berhubungan dengan aplikasi, ∼ Analisis lingkungan operasi dan pemrosesan data.
15
MODUL 1 BASIS DATA SPASIAL
Perancangan basis datamerupakan proses menciptakan perancangan untuk basis data yang akan mendukung operasi dan tujuan perusahaan (Connolly, 2002:p279). Dalam merancang suatu basis data, digunakan metodologi-‐metodologi yang membantu dalam tahap perancangan basis data. Metodologi perancangan adalah pendekatan struktur dengan menggunakan prosedur, teknik, alat, serta bantuan dokumen untuk membantu dan memudahkan dalam proses perancangan. Dengan menggunakan teknik metode disain ini dapat membantu dalam merencanakan, mengatur, mengontrol, dan mengevaluasi database development project. (Connolly, 2002:p418). Proses dalam metodologi perncangan dibagi menjadi tiga tahap : ü Conseptual Database Design ü Logical Database Design ü Physical Database Design Conseptual Database Design Conceptual database design adalah proses membangun suatu model berdasarkan informasi yang digunakan oleh perusahaan atau organisasi, tanpa pertimbangan perencanaan fisik (Connolly, 2002:p419). Pada tahap conceptual model, langkah-‐langkah yang dilakukan adalah sebagai berikut : a) Mengidentifikasi entity types. Bertujuan untuk menentukan entity types utama yang dibutuhkan. Menentukan entitas dapat dilakukan dengan memeriksa user’s requirement specification. Setelah terdefinisi, entitas diberikan nama yang tepat dan jelas seperti mahasiswa, dosen, mata_kuliah. b) Mengidentifikasikan relationship types. 16
MODUL 1 BASIS DATA SPASIAL
c)
d)
e)
f)
g)
h)
Bertujuan untuk mengidentifikasi suatu relasi yang penting yang ada antar entitas yang telah diidentifikasi. Nama dari suatu relasi menggunakan kata kerja seperti mempelajari, memiliki mempunyai dan lain-‐lain. Mengidentifikasi dan menghubungkan atribut dengan entitas atau relationship types. Bertujuan untuk menghubungkan atribut dengan entitas atau relasi yang tepat. Atribut yang dimiliki setiap entitas atau relasi memiliki identitas atau karakteristik yang sesuai dengan memperhatikan atribut berikut: simple/composite attribute, single/multi-‐valued attribute dan derived attribute. Menentukan attribute domain. Bertujuan untuk menentukan attribute domain pada model data konseptual. Contohnya yaitu menentukan nilai atribut jenis_kelamin pada entitas mahasiswa dangan ‘M’ atau ‘F’ atau nilai atribut sks pada entitas mata_kuliah dengan ‘1’, ’2’, ‘3’ dan ‘4’. Menentukan atribut yang merupakan candidate key dan primary key. Bertujuan untuk mengidentifikasi candidate key pada setiap entitas dan memilih primary key jika ada lebih dari satu candidate key. Pemilihan primary key didasari pada panjang dari atribut dan keunikan kunci di masa datang. Mempertimbangkan penggunaan enhance modeling concepts (pilihan). Pada langkah ini bertujuan untuk menentukan specialization, generalization, aggregation, composition. Dimana masing-‐masing pendekatan dapat dilakukan sesuai dengan kebutuhan yang ada. Specialization dan generalization adalah proses dalam mengelompokan beberapa entitas dan menghasilkan entitas yang baru. Beda dari keduanya adalah cara prosesnya, dimana spesialisasi menggunakan proses top-‐down dan generalisasi menggunakan proses bottom-‐up. Aggregation menggambarkan sebuah entity types dengan sebuah relationship types dimana suatu relasi hanya akan ada jika telah ada relasi lainnya. Mengecek redundansi. Bertujuan untuk memeriksa conceptual model untuk menghindari dari adanya informasi yang redundan. Yang dilakukan pada langkah ini adalah : ∼ Memeriksa kembali one-‐to-‐one relationship. Setelah entitas diidentifikasikan maka kemungkinan ada dua entitas yang mewakili satu objek. Untuk itu dua entitas tersebut harus di-‐merger bersama. Dan jika primary key-‐nya berbeda maka harus dipilih salah satu dan lainnya dijadikan alternate key. ∼ Menghilangkan relasi yang redundansi. Untuk menekan jumlah model data, maka relasi data yang redundan harus dihilangkan. Memvalidasi conceptual model dengan transaksi user.
17
MODUL 1 BASIS DATA SPASIAL
Bertujuan untuk menjamin bahwa conceptual data model mendukung kebutuhan transaksi. Dengan menggunakan model yang telah divalidasi tersebut, dapat digunakan untuk melaksanakan operasi secara manual. Ada dua pendekatan yang mungkin untuk menjamin bahwa local conceptual data model mendukung kebutuhan transaksi yaitu : ∼ Mendeskripsikan transaksi. Memeriksa seluruh informasi (entitas, relasi, dan atribut) yang diperlukan pada setiap transaksi yang disediakan oleh model dengan mendokumentasikan penggambaran dari tiap kebutuhan transaksi. ∼ Mengunakan transaksi pathways. Pendekatan kedua, untuk memvalidasi data model dengan keperluan transaksi yang melibatkan diagram yang mewakili pathways diambil dari tiap transaksi secara langsung yang terdapat pada diagram E-‐R menggambarkan komponen-‐komponen dari entitas dan relasi yang masing-‐ masing dilengkapi dengan atribut yang merepresentasikan seluruh fakta dari real-‐world yang kita tinjau (Fathansyah,1999:p79). Sedangkan menurut Silberschartz (2002:p42), diagram E-‐R dapat menyatakan keseluruhan struktur logika dari basis data dengan menggunakan bagan. i) Melihat kembali conceptual data model dengan pengguna. Bertujuan untuk melihat kembali model konseptual dan memastikan bahwa data model tersebut sudah benar. Logical Database Design Logical database design adalah proses pembuatan suatu model informasi yang digunakan pada perusahan berdasarkan pada model data yang spesifik, tetapi tidak tergantung dari Database Management System (DBMS) yang khusus dan pertimbangan fisik yang lain (Connolly, 2002L:p441). Logical design merupakan proses pembuatan model data dengan menggunakan informasi yang diperoleh dari perusahaan serta berdasarkan pada model data spesifik. Model data yang telah diperoleh dalam conceptual database design diubah dalam bentuk model logikal dimana data yang ada dipengaruhi oleh model data yang menjadi tujuan basis data. Hal ini dilakukan untuk menerjemahkan representasi konseptual ke dalam bentuk struktur logic dalam basis data yang akan dijadikan sumber informasi dalam merancang physical database design serta memberikan sarana yang membantu para perancang basis datadalam merancang physical database. Hasil akhir dari logical database design ini berupa sebuah kamus data yang berisi atribut-‐atribut beserta key-‐nya (primary key, alternate key, dan foreign key) dan ERD keseluruhan dengan atribut key-‐nya. Langkah-‐langkah untuk membuat logical database design dapat digambarkan sebagai berikut : 18
MODUL 1 BASIS DATA SPASIAL
a) Membuat dan memvalidasikan data model lokal yang logikal untuk setiap view. Aktivitas pada logical database design langkah pertama adalah membangun pandangan (view) tertentu dari perusahaan dan kemudian mengesahkan model ini untuk memastikan strukturnya telah benar atau menggunakan teknik normalisasi. ∼ Pindahkan fitur-‐fitur yang tidak kompatibel dengan model relational (langkah optional) ∼ Ambil hubungan untuk data model lokal yang logikal ∼ Validasikan hubungan menggunakan normalisasi ∼ Validasikan hubungan terhadap transaksi user ∼ Tentukan batasan integrity ∼ Tinjau kembali model data logikal lokal dengan user b) Membuat dan memvalidasikan model data logikal global Aktivitas pada logical database design langkah kedua adalah untuk mengkombinasikan model data logikal lokal individual ke dalam sebuah model data logikal global tunggal yang menggambarkan perusahaan. ∼ Gabungkan model data logikal lokal menjadi model global ∼ Validasikan model data logikal global ∼ Periksa untuk pengembangan mendatang ∼ Tinjau kembali model data logikal global dengan user Physical Database Design Physical design merupakan proses pembuatan deskripsi dari suatu impelmentasi basis data pada secondary storge. Hal ini mendeskripsikan base relation, organisasi file, dan indeks yang digunakan untuk mencapai efisiensi akses kedalam data, dan associated integrity constraints yang lainnya dan security measures. Physical database design merupakan fase ketiga dan terakhir dalam desain basis data. Tujuan utama dari physical database design adalah untuk mendeskripsikan bagaimana desainer bermaksud untuk mengimplementasikan secara fisik dari logical database design. Langkah-‐langkah dalam pembuatan physical databse design adalah sebagai berikut : a) Terjemahkan model data logikal global target DBMS ∼ Desain hubungan dasar ∼ Desain representasi dari data yang dihasilkan ∼ Desain batasan-‐batasan perusahaan b) Desain reprensentasi fisikal ∼ Analisa transaksi-‐transaksi ∼ Pilih organisasi file ∼ Pilih indeks-‐indeks 19
MODUL 1 BASIS DATA SPASIAL
c) d) e) f)
∼ Perkirakan kebutuhan tempat penyimpanan Desain user view Desain mekanisme keamanan Pertimbangkan pengenalan dari redundansi terkontrol Awasi dan atur sistem operasional
Gambar di atas merupakan metodologi Perancangan Basis Data menurut Connoly dan Begg. Keterangan gambar : 1) Database planning Yakni kegiatan perencanaan, agar kegiatan di tiap-‐tiap stage pada siklus hidup dapat direalisasikan seefektif dan seefisien mungkin. 2) System Definition Yakni kegiatan menentukan ruang lingkup dan batasan pada aplikasi basis data, pengguna, dan area aplikasi. 3) Requirements collection and analysis Yakni kegiatan pengumpulan dan analisis informasi mengenai bagian dari perusahaan yang akan didukung oleh aplikasi basis data. 4) Database design 20
MODUL 1 BASIS DATA SPASIAL
Yakni kegiatan perancangan konseptual, logikal, dan fisikal pada basis data. 5) DBMS selection (optional) Yakni kegiatan menyeleksi DBMS yang cocok untuk diterapkan pada aplikasi basis data. 6) Application design Yakni kegiatan perancangan user interface dan program aplikasi yang akan digunakan dan akan memproses basis data. 7) Prototyping (optional) Yakni kegiatan membangun model pekerjaan atau kegiatan pada aplikasi basis data, yang memungkinkan perancang atau pengguna untuk memvisualisasikan dan mengevaluasi bagaimana tampilan dan kegunaan dari sistem yang dihasilkan. 8) Implementation Membuat bagian luar (external), konseptual, dan mendefinisikan basis data internal, serta program aplikasi. 9) Data conversion and loading Yaitu peralihan dengan pemuatan sistem lama ke sistem yang baru. 10) Testing Dengan menguji coba kesalahan atau error pada aplikasi basis data dan memvalidasikan penentuan kebutuhan pengguna. 11) Operational maintenance Pada stage ini aplikasi basis data secara penuh diterapkan, dimana sistem secara terus menerus diawasi dan dipelihara. Akan sangat penting apabila kebutuhan yang baru tergabung pada aplikasi basis data melalui stage sebelumnya pada siklus hidup. 1.2 Studi Kasus MP3EI Pembangunan Indonesia tidak lepas dari posisi Indonesia dalam dinamika regional dan global. Secara geografis Indonesia terletak di jantung pertumbuhan ekonomi dunia. Selaras dengan visi pembangunan nasional sebagaimana tertuang dalam Undang-‐ Undang no. 17 tahun 2007 Tentang Rencana Pembangunan Jangka Panjang Nasional 2005 – 2025, maka visi Percepatan dan Perluasan Pembangunan Ekonomi Indonesia adalah : “Mewujudkan Masyarakat Indonesia yang Mandiri, Maju, Adil, dan Makmur”. Percepatan dan perluasan pembangunan ekonomi Indonesia menetapkan sejumlah program utama dan kegiatan ekonomi utama yang menjadi fokus pengembangan strategi dan kebijakan. Fokus dari pengembangan MP3EI ini diletakkan pada 8 program utama, yaitu pertanian, pertambangan, energi, industri, kelautan, pariwisata, dan telematika, serta pengembangan kawasan strategis. 1.2.1 Latar Belakang Masalah
21
MODUL 1 BASIS DATA SPASIAL
Sektor pariwisata memiliki peranan yang sangat penting dalam perekonomian Indonesia, baik sebagai salah satu penerimaan devisa maupun membuka kesempatan kerja dan kesempatan berusaha. Selain itu berkembangnya sektor pariwisata di suatu daerah dapat memicu perkembangan di sektor lainnya seperti bidang pertanian, peternakan, perkebunan, kerajinan dan lainnya. Hal ini tidaklah berlebihan mengingat potensi kepariwisataan yang dimiliki Indonesia cukup besar, bahkan banyak diantaranya yang belum dimanfaatkan secara optimal terutama menyangkut wisata alam. Provinsi Jawa Barat merupakan salah satu daerah tujuan wisata alam nasional yang ditetapkan oleh pemerintah pusat. Penetapan ini tidak terlepas dari pertimbangan kekayaan potensi alam sebagai daya tarik wisata di Propinsi Jawa Barat. Keadaan ini ditunjang oleh beberapa faktor geografis seperti keadaan topografi, iklim, flora, fauna, dan kekayaan alam. Hal ini mendorong meningkatnya jumlah wisatawan mancanegara datang ke daerah-‐daerah tujuan wisata di Indonesia termasuk di Jawa Barat dengan karakteristik wisata alam yang berbeda-‐beda. Tujuan daerah wisata alam yang ada di Jawa Barat diantaranya adalah Gunung Tangkuban Perahu, Kawah Putih, Pemandian Air Panas Ciater, Puncak, Lembang, Maribaya, dll. Objek wisata alam yang menarik diharapkan dapat menambah minat wisatawan berkunjung ke Jawa Barat. Strategi menarik wisatawan berkunjung ialah dengan meningkatkan keamanan, kenyamanan, dan kemudahan akses objek wisata alam. Aspek-‐aspek penilaian dilihat dari sisi stakeholder seperti wisatawan, pengelola objek wisata setempat, dan pemerintahan setempat. Untuk meningkatkan kenyamanan dan kemudahan akses, maka dilakukan beberapa analisis spasial dengan menilai beberapa aspek seperti lokasi-‐lokasi fasilitas umum dan fasilitas sosial yang tersedia, yaitu apakah fasilitas umum dan fasilitas sosial ini telah cukup memadai? Analisis spasial informasi akomodasi seperti hotel dan penginapan dan transportasi seperti jalan umum, angkutan umum, bandara dan stasiun. Analisis studi kasus ini juga mengambil aspek feedback dari wisatawan dan pengelola objek wisata. Hal ini bertujuan untuk mendapatkan sudut pandang wisatawan dan pengelola objek wisata. Karena disadari bahwa wisatawan pengelola wisata merupakan hilir dari implementasi kebijakan. Analisis ini diharapkan dapat menjadi dasar-‐dasar menentukan pengambilan keputusan pengembangan objek wisata alam. Sehingga pembangunan infrastruktur, strategi promosi dan marketing dapat tepat sasartan dan efisien. 22
MODUL 1 BASIS DATA SPASIAL
1.2.2 Tujuan dan Batasan Masalah Studi kasus industri pariwisata di Jawa Barat ini bertujuan melakukan analisis spasial untuk memberikan informasi spasial dan membantu dalam pengambilan keputusan program-‐program yang akan dilakukan dalam rangka peningkatan jumlah wisatawan objek wisata alam Jawa Barat. Batasan masalah dalam studi kasus industri objek wisata alam Jawa Barat adalah: Data premier yang digunakan adalah Peta Jawa Barat 1 : 250.000. Data-‐data sekunder yang digunakan merupakan data dummy atau bukan data yang sebenarnya, studi kasus ini hanya sebagai contoh. Studi kasus ini menampilkan informasi hasil analisis dalam bentuk informasi spasial. Analisis statistik disajikan dengan bentuk informasi spasial. Dan data statistik yang digunakan merupakan data dummy atau data rekayasa. 1.2.3 Wisata Alam di Jawa Barat Jawa Barat memiliki banyak objek wisata antara lain wisata pegunungan, pantai, hutan sungai danau, gua, mata air, dll. Beberapa keindahan alam wisata di Jawa Barat antara lain dijabarakan sebagai berikut: Wisata Pegunungan Gunung Riung Terletak pada ketinggian 1500 m, Riung Gunung menawarkan panorama alam daerah puncak yang indah dengan hamparan perkebunan teh yang luas. Tambahkan suasana nyaman dengan udara segar khas pegunungan. Selain panoramaalam, juga dapat berkunjung ke salah satu vila di daerah ini tempat Soekarno pernah menginap dan memohon kepada Tuhan demi kemajuan dan kesejahteraan Bangsa dan Negara Republik Indonesia. Kegiatan lain yang dapat dilakukan di sini juga adalah paralayang. Lokasi: tepi jalur Puncak (40 km dari Kota Bogor) Koordinat : 6 42' 6" S, 106 59' 34" E Arah: 17 km dari pintu tol Ciawi Fasilitas: tempat parkir, kios, toilet 23
MODUL 1 BASIS DATA SPASIAL
Gunung Tangkuban Perahu Duduk dengan anggunnya mendominasi panorama Bandung utara, Gunung Tangkuban Perahu adalah salah satu gunung berapi yang masih aktif di Jawa Barat. Berada di ketinggian 2084 m dpl, gunung berbentuk unik ini telah menarik banyak pengunjung selama puluhan tahun yang datang untuk melihat lebih dekat kawahnya, menikmati panorama lembah sekelilingnya, serta lebih akrab dengan cerita rakyatnya yang terkenal, Sangkuriang. Berdasarkan legendanya, gunung ini terbentuk akibat kemarahan Sangkuriang yang merasa gagal dalam mengabulkan permintaan pembuatan danau dan perahu besar dari Dayang Sumbi (merupakan kisah cinta terlarang antara seorang anak dengan ibu kandungnya sendiri). Maka ditendangnya perahu yang telah dibuat dan jatuh tertelengkup (dalam Basa Sunda nangkub) di lokasinya sekarang – yang menjadi asal mula nama Gunung Tangkuban Perahu. Menurut sejarah geologinya, Gunung Tangkuban Parahu terbentuk dari aktifitas letusan berulang Gunung Api Sunda di jaman prasejarah. Catatan letusan dalam 2 abad terakhir adalah tahun 1829, 1846, 1862, 1887, 1896, 1910, dan 1929. Dari puncak menara Gedung Sate di Kota Bandung, Anda dapat melihat dengan sangat jelas bentuk fisik Gunung Tangkuban Parahu yang benar-‐benar menyerupai perahu terbalik. Koordinat : 6° 46' 12" S, 107° 36' 0" E Arah: 30 km arah utara Kota Bandung, atau 31 km arah selatan Kota Subang Fasilitas: kios makanan & cinderamata, toilet Gunung Papandayan Luas kawasan objek ini secara keseluruhan 7132 Ha, yang terdiri dari Cagar Alam dengan luas 6807 Ha dan Taman Wisata Alam 225 Ha. Adapun pengelola objek tersebut adalah BKSDA Jabar II. Sedangkan status kepemilikan tanahnya dikuasai oleh Departemen Kehutanan. Adapun jenis gunung ini adalah jenis gunung berapi yang memiliki ketinggian 2622 m dari permukaan laut. Di gunung Papandayan ini terdapat banyak kawah yang aktif, 24
MODUL 1 BASIS DATA SPASIAL
yang diantaranya ada 4 kawah yang meletus pada tahun 2002. Topografi Gunung Papandayan berada di ketinggian 2170 m di atas permukaan laut dengan konfigurasi umum lahannya bergunung, berbukit, dataran dan lembah. Daya tarik Gunung Papandayan yang utama berupa kawah, panorama, pegunungan dan perkemahan, semuanya ini ada di dalam kawasan Taman Wisata Alam. Daya tarik yang potensial berupa hutan terdapat di Cagar Alam (CA) yang sifatnya khusus untuk penelitian dan pendidikan. Selain itu terdapat perkebunan di luar kawasan berupa kebun teh milik PTPNVIII Sedep, Bandung. Aktivitas utama yang dapat dilakukan yaitu trekking, hiking, fotografi dan rekreasi hutan yang semua ini dapat dilakukan di TWA. Sedangkan aktivitas penunjangnya ialah penelitian fauna dan flora di CA serta untuk piknik dan berkemah dapat di lakukan di TWA. TWA memiliki flora yang dominan yaitu Hiur, Puspa, Pasang Hura, Saninten, Jamaju, Sega, Suwagi dan Kiteke sedangkan fauna yang dominan yaitu babi hutan, macan kumbang, macan tutul dan burung. Flora yang dominan ialah sedangkan untuk fauna dominan adalah babi hutan, jenis burung, macan kumbang dan tutul. Flora langka di Cagar Alam yaitu Saninten dan untuk faunanya rusa, elang Jawa, Lutung dan Surili. Kegiatan konservasi hewan dan tumbuhan dilakukan di Cagar Alam. Lokasi: Desa Sirna Jaya dan Desa Keramat Wangi, Kecamatan Cisurupan, Kabupaten Garut Koordinat : 7 18' 25" S, 107 42' 51" E Kawah Putih Di ketinggian Gunung Patuha, tersembunyi keindahan bekas kawah tua yang unik. Bau belerang akan menyambut Anda begitu tiba di tebing kawah, menjadi sajian yang tidak terpisahan ketika mengagumi kawah berwarna hijau muda yang dikelilingi oleh pasir putih serta riak air dalam kawah yang bertabur asap tipis serta sesekali letupan lumpur hidup, menjadikannya sebuah atraksi alam yang tiada duanya. Sebagai tambahan, warna air Kawah Putih selalu berubah-‐ubah bila terkena sinar matahari. Pertama kali terungkap pada tahun 1837 oleh seorang ilmuwan asal Belanda yang bernama Dr. Franz Wilhelm Junghun, danau di ketinggian 2194 m dpl dengan suhu sekitar 15-‐22 derajat Celcius ini sangat memesona. Karena keunikannya itu, Kawah Putih menjadi objek wisata bagi wisatawan nusantara dan mancanegara, serta latar belakang favorit bagi para fotografer dan sineas film.
25
MODUL 1 BASIS DATA SPASIAL
Secara geologis, Kawah Putih terbentuk dari aktifitas letusan Gunung Patuha yang terjadi di abad ke-‐XII. Nama Patuha sendiri berasal dari nama awal gunung ini, Gunung Sepuh (Bahasa Sunda untuk ‘tua’). Koordinat : 07º 10.021ʹ′ S, 107º 24.279ʹ′ E Arah: 44 km arah selatan Kota Bandung melalui Soreang, Ciwidey dan Cimanggu Gunung Galunggung Salah satu keajaiban Gunung Galunggung, yaitu danau yang terdapat di dalam kawahnya. Uniknya, dari danau berair dingin itu tidak tercium bau belerang dan hal ini berbeda dengan gunung-‐gunung berapi lainnya di Indonesia. Pada saat cuaca yang cerah, keajaiban alam lainnya berupa sungai-‐sungai yang turun dari bukit Gunung Galunggung yang terlihat seolah-‐olah dari langit. Di kaki gunung ini terdapat pemandian air panas yang mengandung mineral berkhasiat untuk penyembuhan penyakit kulit maupun kesehatan dan kesegaran jasmani. Di samping itu, Anda juga dapat mendaki kawah Gunung Galunggung melalui “tangga 1000” dan “tangga biru” dan langsung turun ke bawah kawah untuk dapat melihat dari dekat danau dengan pulau kecil di tengah-‐tengannya. Wisata Air Terjun Curug Caweni Terletak di Kampung Cilutung, Desa Cidolog, Kecamatan Cidolog, Kabupaten Sukabumi, Propinsi Jawa Barat Curug Caweni memiliki ketinggian terjunan air sekitar 15 m. Salah satu ciri khas Curug Caweni adalah adanya sebuah batu setinggi 7 m yang terdapat di tengah-‐tengah air terjun. Konon batu tersebut adalah Arca Caweni, putri yang pernah berkuasa di Cidolog. Nama Caweni atau cawene dalam bahasa sunda berarti 'randa bengsrat', janda yang masih suci karena berpisah sebelum melakukan hubungan intim dengan suaminya. Fasilitas yang tersedia sudah ada seperti, lokasi parkir dan WC serta tempat ganti pakaian, tetapi sayangnya pemeliharaannya tidak ada bahkan dibiarkan tak terurus.
26
MODUL 1 BASIS DATA SPASIAL
Selain itu ketiadaan, warung atau toko penjual makanan dan minuman pun sulit ditemui. Satu-‐satunya penjual makanan dan minuman berada di jalan raya Cidolog, sekitar 200 meter sebelum ke Curug Caweni. Oleh karena itu disarankan membawa bekal jika ingin berwisata ke tempat ini. Curug Muarajaya Seperti namanya, curug merupakan air terjun yang tumpahan airnya mengalir deras membelah di puncak bukit. Tumpahan air itu menyajikan panorama indah pada birunya langit, sejuknya udara, dan hijaunya pepohonan yang menyelimuti suasana wisata yang berada di Kecamatan Argapura. Selain itu terdapat pula lapangan sebagai areal untuk camping bagi para pengunjung, tempat ini dapat dijadikan alternatif bagi pengunjung yang memiliki hobi berpetualang. Selain menjanjikan ketenangan dan ketenteraman, juga kedamaian menjadi perpaduan yang kompak untuk menunjang daya tarik tersendiri, tetapi pada saat ini area camping tersebut belum begitu berkembang. Curug Muara Jaya berada di Desa Argamukti, Kecamatan Argapura yang dikelola pada tahun 1999. Dimana jarak yang harus ditempuh untuk menuju curug ini yaitu +20.1 km dari pusat kota Majalengka. Luas Curug Muara Jaya sebesar +2 Ha. Jarak dari tempat parkir menuju curug tersebut yaitu +300 m berupa jalan setapak yang telah menggunakan paping blok. Objek Wisata Curug Muara Jaya menawarkan keindahan alam dengan panorama air terjun setinggi 73 m yang terdiri dari tiga umpak. Udara yang sejuk dengan hamparan sayur mayur dan pohon kesemek menjadi daya tarik bagi peminat wisata alam. Kawasan ini merupakan jalur alternatif pendakian ke puncak Gunung Ciremai, disamping itu dilokasi ini pada setiap tahunnya digelar upacara pareresan yang dilakukan setelah panen raya. Objek wisata ini banyak diminati oleh pengunjung, dengan rata-‐rata jumlah pengunjung pada hari libur sebanyak +200 pengunjung, dan pada hari biasa +20 pengunjung dengan harga tiket masuk sebesar Rp. 4.000/orang. Sedangkan Jumlah pengunjung pada tahun 2007 berjumlah 15.782 pengunjung dan pada tahun 2005 berjumlah 32.300 pengunjung, dari tahun 2005 – tahun 2007 mengalami penurunan tingkat kunjungan. Fasilitas yang terdapat di Curug Muara Jaya yaitu tempat parkir, tempat bermain anak-‐anak, bale pertemuan, toilet, warung, shelter, mushola, camping ground, dan loket (karcis). Jalan menuju objek wisata, dari pasar Maja sudah cukup baik dengan konstruksi aspal, kondisinya sudah lebar sehingga dapat dilewati oleh kendaraan mobil dua arah dengan lancar tetapi disebagian wilayah terdapat jalan yang masih rusak tidak adanya sarana transportasi berupa angkutan umum yang menuju ke curug tersebut, melainkan hanya mobil bak terbuka dan ojek. 27
MODUL 1 BASIS DATA SPASIAL
Lokasi: Gunung Ceremai, Desa Argamukti, Kecamatan Argapura Koordinat : 6° 55' 1.39" S 108° 21' 1.24" E Wisata Pantai Pantai Tanjung Baru Pantai Tanjung Baru berada di ujung Utara sebelah Timur, pantai ini hampir tidak jauh berbeda dengan pantai lainnya yang ada di Kabupaten Karawang, Pantai Tanjung Baru terletak pada teluk di semenanjung antara Kabupaten Subang dan Kabupaten Karawang. Di pantai ini telah tersedia Warung Makan Tradisional dengan Menu Ikan Bakar terhampar disepanjang pantai ini, tersedia pula Panggung Hiburan, Pasar Tradisional dan Penginapan dengan fasilitas sederhana, tersedia pula penyewaan perahu tradisional dan sarana bilas air bersih setelah puas berenang di laut. Lokasi Pantai Tanjung Baru terletak di Kecamatan Cilamaya 45 km dari Ibu Kota Kabupaten Karawang. Pantai Samudera Baru Pantai Samudera Baru merupakan pantai wisata andalan Kabupaten Karawang setelah Tanjung Pakis, di pantai ini telah tersedia sarana -‐ sarana Wisata Pantai, pantai dengan pasir putih dan ombak mengalun tenang, indah dan asri. Di pantai ini telah tersedia Warung Makan Tradisional dengan Manu Ikan Bakar terhampar di sepanjang pantai ini, tersedia pula Panggung Hiburan dengan Live Show Dangdut pada hari libur besar, penyewaan perahu tradisional dan sarana bilas air bersih setelah puas berenang di laut. Lokasi Pantai Samudera Baru terletak di Kecamatan Pedes 30 km dari Ibu Kota Kabupaten Karawang. Wisata Danau Situ Patenggang Terletak di ketinggian 1600 m dpl di kaki Gunung Patuha, Situ Patenggang adalah danau alami dengan panorama alam memukau serta dapat digunakan untuk rekreasi. Dapat berperahu sambil menikmati hamparan danau seluas 150 ha dengan sebuah pulau di tengahnya serta latar belakang perbukitan. Tambahkan hawa sejuk 28
MODUL 1 BASIS DATA SPASIAL
setempat (17-‐23° C). Keunikan lain Situ Patengang yang dibuka sebagai taman wisata sejak 1981 ini adalah legenda klasik dari kerajaan masa lampau. Adalah seorang pangeran keponakan Prabu Siliwangi, Ki Santang, dan seorang putri gunung cantik jelita, Dewi Rengganis, yang saling jatuh cinta. Namun perjalanan cinta mereka tidak semulus dan seindah yang dibayangkan oleh keduanya karena dipisahkan oleh keadaan. Konon, air mata yang mengalir dari keduanyalah yang membentuk danau ini, sehingga dinamai ‘patenggang’ yang diambil dari kata pateangan-‐teangan (Bahasa Sunda untuk saling mencari). Pada akhirnya, mereka dapat berkumpul kembali di sebuah batu setempat yang diberi nama Batu Cinta. Konon siapapun yang pernah berkunjung dengan pasangannya ke batu ini, maka cinta mereka akan abadi. Yang tidak kalah menarik adalah kondisi jalan menuju Situ Patenggang yang menawarkan hamparan hutan dan perkebunan teh yang hijau, serta kebun-‐kebun sayuran dan strawberry khas setempat yang dapat Anda petik sendiri. Alamat: Desa Patengan, Kecamatan Rancabali, Kabupaten Bandung Koordinat : 07º 09.815ʹ′ S, 107º 21.476ʹ′ E Telaga Warna Taman Wisata menawarkan panorama alam yang khas dan unik, serta fenomena alam yang penuh dengan misteri dan nuansa mistik. Alam pegunungan Puncak yang sejuk dan berkabut, dengan panorama bukit dan tebing serta perkebunan teh yang menghampar di sepanjang jalan masuk ke lokasi telaga, menciptakan pesona alam yang jarang dapat Anda temukan di tempat lain. Selain itu, nuansa mistiknya tersendiri terbentuk menurut masyarakat sekitar, tentang dua ekor ikan purba yang tinggal di danau dan apabila ada orang yang mampu melihat ikan tersebut berenang dan meloncat ke atas permukaan telaga, maka segala cita-‐citanya akan tercapai dan terkabul. Banyak kegiatan yang bisa dilakukan di area ini seperti photo hunting, bird watching, tracking, dan camping. Koordinat : 6 42' 2" S, 106 59' 41" E
29
MODUL 1 BASIS DATA SPASIAL
Wisata Gua Gua Jepang Goa yang terletak di Bandung utara yang dapat ditelusuri adalah Goa Jepang. Dibangun di kawasan Taman Hutan Raya (TAHURA) Ir. H. Juanda, goa ini dibangun pada tahun 1942 dengan panjang lorong keseluruhan sekitar 350 meter. Pembangunan Goaa Jepang dilakukan oleh orang-‐orang pribumi melalui kerja paksa atau dikenal dengan ”Romusha”, dengan tujuan sebagai benteng pertahanan tentara jepang. Lokasi: Taman Hutan Raya Ir. H. Djuanda Koordinat : 6°51,379'S 107°37,943'E Goa Lalay Siapa yang tidak kenal sebuah goa wisata di Sukabumi dengan jutaan kelelawar yang hidup di dalamnya? Lokasi Goa Lalay yang dekat dengan pantai wisata Palabuhanratu ini menyimpan berbagai keunikan tersendiri. Sebuah kunjungan ilmiah pernah dilakukan di lokasi gua ini, tepatnya 7 November 1937, oleh seorang ilmuwan Belanda. Sedangkan foto Goa Lalay pertama kali dipublikasikan tahun 1938 dalam sebuah jurnal de Tropische Natuur. Ketika itu, Palabuhanratu lebih dikenal dengan Wijnkoopsbaai dan dalam kunjungan ilmiah waktu itu lebih banyak mengupas tentang vegetasi di sekitar kawasan tersebut. Barisan ratusan ribu kelelawar yang meliuk-‐liuk, menyerupai “awan hidup” yang keluar dari Goa Lalai, merupakan atraksi yang sangat menarik di waktu sore hari untuk Anda saksikan dan hanya dapat dilihat sekitar pukul 17.00. Lokasi: Kecamatan Palabuhanratu Koordinat : 7°1,128'S 106°32,599'E
30
MODUL 1 BASIS DATA SPASIAL
1.3 Latihan Basis Data 1.3.1 Melakukan Normalisasi Tabel Latihan 1 NIM Nm_mahasiswa Almt_mhs email hobi Kd_matkul Nm_matkul sks 151 13 001 Dullie Cisitu Baru [email protected] Membaca, menonton, menulis Kul111 Kalkulus 4 151 13 001 Dullie Cisitu Baru [email protected] Membaca, menonton, menulis Kul112 Fisika 4 151 13 060 Asep Cisitu Lama [email protected] Panjat tebing, membaca, menyanyi Kul111 Kalkulus 4 Bagaimana bentuk normalisasi dari tabel di atas ? Latihan 2 NI Nam Alam Email No_Te Id_Jabat P a at lp an A1 Inez Cima [email protected] 26513 J1 1 hi m B6 Gunt Cisitu guntur@kantor. 78964 J2 7 ur com C1 Nila Dago [email protected] 65423 J1 3 m Bagaimana bentuk normalisasi dari tabel di atas ?
Jenis_jaba tan Manager
Id_departe men D1
Supervisor
D1
Manager
D5
Nm_departe men Teknologi Energi Teknologi Energi HRD
Latihan 3 No_Faktur Kode_Supp Nm_Suppl Kode_Barang Nm_barang Tgl Jatuh_Tempo 111 A151 A-‐Comp DR128 DRAM 05/01/2013 05/02/2013 222 B123 C-‐Comp GF52 Gforce 13/01/2013 13/02/2013 222 Ath25 Ath25 Bagaimana bentuk normalisasi dari tabel di atas ?
Id_caba Nm_caba ng ng C1 Dago
Qty 10 10 10
Id_pe nd P2
Tk_Pe nd S2
C1
Dago
P1
S1
C4
Antapani
P2
S2
Harga 200 500 700
Jumlah 2000 5000 7000
Total 2000 5000 7000
31
MODUL 1 BASIS DATA SPASIAL
1.3.2 Membuat Model Entity Relationship (ER-‐Model) Latihan 1 • Basis data Kepegawaian sebuah Perusahaan. Tentukan entitas dari kasus di atas. Latihan 2 • Perusahaan memiliki beberapa Departemen, dan Departemen dapat berlokasi di beberapa tempat • Perusahaan memiliki banyak Pegawai yang tersebar di beberapa Departemen • Pegawai dapat terlibat dalam beberapa Project yang dikontrol oleh Departemen dimana dia bekerja • Supervisor merupakan Pegawai yang bertugas mengontrol Pegawai • Pegawai memiliki Pekerjaan. Tentukan entitas, atribut, dan relasi dari deskripsi di atas dengan menggambarkan ERD-‐nya. Latihan 3 Seperti Latihan 2 namun ada beberapa tambahan informasi : • Perusahaan memiliki banyak Departemen • Departemen memiliki banyak Pegawai, namun 1 Pegawai bekerja di 1 Departemen • Departemen mengontrol banyak Project • Pegawai dapat terlibat dalam beberapa Project • Supervisor dapat mengontrol Banyak Pegawai, namun 1 Pegawai hanya memiliki 1 Supervisor • Pegawai hanya memiliki 1 Pekerjaan Gambarkan ERD-‐nya. Latihan 4 Seperti Latihan 3 namun ada beberapa tambahan informasi : • Perusahaan pasti memiliki banyak Departemen • Departemen pasti memiliki banyak Pegawai, dan setiap Pegawai pasti hanya boleh bekerja di 1 Departemen. • Setiap Departemen belum tentu mengontrol banyak Project • Tidak semua Pegawai terlibat dalam beberapa Project • Setiap Supervisor pasti mengontrol banyak Pegawai • Semua Pegawai pasti memiliki Pekerjaan. Gambarkan ERD-‐nya. 32
MODUL 1 BASIS DATA SPASIAL
1.4 Studi Kasus MP3EI : Merancang Basis Data Seperti yang telah dipaparkan pada Sub bab di atas Propinsi Jawa Barat merupakan salah satu propinsi yang memiliki aset berupa objek-‐objek pariwisata yang perlu dikembangkan potensinya. Dalam rangka mensosialisasikan seputar keindahan dan kekayaan Propinsi Jawa Barat, baik itu kekayaan alam, budaya dan lainnya maka akan dibuat Sistem Informasi Geografis Pariwisata Jawa Barat. Dengan deskripsi : Objek Wisata; Objek wisata pada daerah Jawa Barat memiliki macam yang sangat beragam, seperti danau, air panas, pantai, flora&fauna, pegunungan, dll. Data spasial ini memberikan informasi objek wisata apa saja yang berada di lokasi propinsi Jawa Barat. Lokasi akomodasi: Akomodasi merupakan tempat tinggal sementara di tempat atau di daerah tujuan yang akan dikunjungi, yaitu penginapan, hotel, losmen, dan lain-‐lain. Dibeberapa daerah, perkembangan pariwisata diawali dengan tumbuhnya hotel dan penginapan untuk melayani pelaku perjalanan. Ada yang didirikan disepanjang pantai untuk akomodasi wisatawan yang akan menikmati keindahan alam dan rekreasi pantai. Ada pula hotel yang dibangun di lokasi strategis untuk akomodasi wisatawan yang perlu transit (singgah) sebelum sampai ke tujuannya. Lokasi transportasi umum; Transportasi umum dalam hal industri pariwisata merupakan lokasi transportasi yang akan membawa wisatawan dari dan kearah tujuan yang ingin diketahui. Transportasi umum dapat dibedakan menjadi 3 yakni transportasi darat (misal: kereta api, mobil, bus pariwisata) , laut (kapal, kapal pesiar) dan udara (pesawat terbang). Jalur transportasi; Jalur transportasi memberikan informasi jalur akses yang dapat dilewati untuk mencapai tempat tujuan wisata. Informasi yang diberikan dari jalur transportasi ini adalah informasi dengan melalui transportasi darat dan laut. Lokasi rumah makan Fasilitas makan dan minum (restauran, cafe) memberikan daya tarik tersendiri untuk wisatawan mengunjungi lokasi wisata. Lokasi tempat wisata ini dapat memberikan informasi bagi wisatawan untuk singgah di rumah makan yang sebagian besar menyediakan jenis makanan khas daerah. 33
MODUL 1 BASIS DATA SPASIAL
Lokasi fasilitas sosial dan fasilitas umum Fasilitas sosial dan fasilitas umum yang terdapat pada daerah wisata sebagian besar terdiri dari tempat peribadatan, SPBU, Rumah sakit, rest area, toilet umum, dll. Informasi lokasi ini akan sangat membantu para wisatawan untuk memenuhi kebutuhan yang mendesak.
Batas administrasi Lingkup kajian pada studi kasus industri pariwisata adalah pada daerah Provinsi Jawa Barat, sehingga dalam hal ini batas administrasi hanya disekitar Jawa Barat. Batas administrasi ini merupakan informasi mengenai lokasi dimana tempat wisata berada. Lokasi bank/ATM Bank/ATM merupakan kebutuhan yang vital bagi para wisatawan. Informasi lokasi bank/ATM yang tersebar di daerah wisata akan sangat membantu para wisatawan untuk mengetahui bank/ATM apa yang memiliki jarak terdekat sehingga mudah untuk diakses. Lokasi pusat perbelanjaan Daerah wisata pada umumnya memiliki pusat perbelanjaan dimana selain pemandangan alamnya, wisatawan banyak yang mengunjungi pusat perbelanjaan untuk berbelanja barang-‐barang yang khas pada daerah wisata. Informasi lokasi pusat perbelanjaan akan sangat membantu para wisatawan untuk mengakses pusat perbelanjaan dengan mudah. Lokasi pusat kerajinan Selain lokasi pusat perbelanjaan, ada pula lokasi pusat kerajinan, yakni dimana sebagian besar masyarakat dalam suatu daerah memiliki industri kerajinan tertentu. Industri ini dapat berupa industri rumah tangga, atau industri kecil. Untuk membangun Sistem Informasi Geografis Pariwisata Jawa Barat, memerlukan beberapa tahapan, diantaranya : a. Identifikasi kebutuhan. d. Implementasi antarmuka b. Perancangan basis data berbasis web c. Pembangunan basis data e. Uji coba aplikasi web 34
MODUL 1 BASIS DATA SPASIAL
Peta dan Informasi
Pencarian Data Wisata
Sistem Informasi Geografis Pariwisata Jawa Barat
⇒ Data Wisata ⇒ Data Wisatawan ⇒ Data Rumah Makan ⇒ Data Lokasi ATM / Bank ⇒ Data Lokasi Pusat Perbelanjaan ⇒ Data Lokasi Pusat Kerajinan ⇒ Data Akomodasi ⇒ Data Transportasi
Dimana data yang dibutuhkan dari hasil identifikasi kebutuhan yaitu sebagai berikut : ü Data Wisata ü Data lokasi Pusat Perbelanjaan ü Data Wisatawan ü Data lokasi Pusat Kerajinan ü Data Rumah Makan ü Data Akomodasi ü Data Lokasi ATM/Bank ü Data Transportasi Dengan data spasial pendukung berupa : ü Data spasial lokasi wisata di Jawa Barat ü Data Spasial Batas Administrasi Kabupaten/Kota – Jawa Barat sebagai peta dasar Sedangkan, kebutuhan transaksi yang diperoleh dari hasil identifikasi kebutuhan, yaitu sebagai berikut : ü Pencarian data wisata ü Informasi lokasi wisata berupa peta ü Informasi fasilitas pendukung seperti rumah makan, transportasi, akomodasi. Berdasarkan analisis kebutuhan yang telah dilakukan untuk pembangunan Sistem Informasi Geografis Pariwisata Jawa Barat di atas, bagaimanakah rancangan basis data-‐nya ? Jawab : Berikut merupakan alur kerja (workflow) dari perancangan basis data untuk Sistem Informasi Geografis Pariwisata Jawa Barat. 1. Pertama, anda perlu membuat Desain Konseptual untuk Sistem Informasi Geografis Pariwisata Jawa Barat, yaitu membangun representasi konseptual dari basis data, dimana terdiri atas identifikasi entitas. Jadi, tentukan entitas apa saja yang dibutuhkan berdasarkan informasi analisis kebutuhan. 35
MODUL 1 BASIS DATA SPASIAL
Entitas Wisata
Deskripsi Entitas Wisata merupakan lokasi berbagai objek wisata yang terdapat di Jawa Barat Kabupaten Entitas Kabupaten merupakan batas administrasi kabupaten di Jawa Barat. Rumah Makan Entitas Rumah Makan merupakan merupakan fasilitas pendukung pariwisata berupa tempat makan terdekat dari lokasi objek wisata Akomodasi Entitas Akomodasi merupakan fasilitas pendukung pariwisata berupa tempat beristirahat yang dekat dari lokasi objek wisata Pusat Entitas Pusat Perbelanjaan Perbelanjaan merupakan fasilitas pendukung pariwisata berupa tempat perbelanjaan yang dekat dengan objek pariwisata Pusat Entitas Pusat Kerajinan merupakan Kerajinan fasilitas pendukung pariwisata berupa tempat produksi dan penjualan kerajinan khas daerah terkait Atm/Bank Entitas Atm/Bank merupakan fasilitas pendukung pariwisata berupa atm/Bank Transportasi Entitas Transportasi merupakan fasilitas pendukung pariwisata berupa stasiun kereta, travel, dll Fasum Fasos Entitas Fasum Fasos merupakan lokasi fasilitas sosial dan fasilitas umum Jalur Entitas Jalur Transportasi Transportasi merupakan fasilitas pendukung pariwisata berupa stasiun kereta, travel, dll
Objek Spasial Point
Polygon
Point
Point
Point
Point
Point
Point
Point
Line
2. Kedua, anda perlu membuat Desain Logikal, yaitu menerjemahkan representasi konseptual (desain konseptual) ke dalam struktur logikal dari basis data, dimana terdiri dari desain antar hubungan. Model penyimpanan basis data yang digunakan, yaitu model relasional, dimana basis data yang dibagi ke dalam beberapa tabel yang saling berhubungan (relationship). Tahapan ini perlu dilakukan untuk keperluan transaksi atau updating. 36
MODUL 1 BASIS DATA SPASIAL
Jadi, pada tahapan ini anda akan mencoba membuat Model Entity Relationship (ER-‐Model), berupa derajat hubungan/relasi, kelas keanggotaan, dan Diagram ER. Model Entity Relationship (ER-‐Model) : 1. Hubungan entitas Kabupaten dan Wisata : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa objek Wisata (n). § Satu objek Wisata (1) berada di sebuah kabupaten wilayah Jawa Barat (m). Kelas Keanggotaan : § Tidak setiap kabupaten di wilayah Jawa Barat memiliki objek Wisata, tetapi Objek Wisata pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : m n Kabupaten
memiliki
Wisata
2. Hubungan entitas Kabupaten dan Pusat Perbelanjaan : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Pusat Perbelanjaan (n). § Satu Pusat Perbelanjaan (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan : § Setiap kabupaten di wilayah Jawa Barat belum tentu memiliki Pusat Perbelanjaan, dan sebuah Pusat Perbelanjaan pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : 1 n Pusat Kabupaten memiliki Perbelanjaan 3. Hubungan entitas Kabupaten dan Pusat Kerajinan : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Pusat Kerajinan (n). § Satu Pusat Kerajinan (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan :
37
MODUL 1 BASIS DATA SPASIAL
Setiap kabupaten di wilayah Jawa Barat belum tentu memiliki Pusat Kerajinan, dan sebuah Pusat Kerajinan pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : 1 n §
Kabupaten
Pusat Kerajinan
memiliki
4. Hubungan entitas Kabupaten dan Bank_ATM : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Bank/ATM (n). § Satu Bank/ATM (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan : § Setiap kabupaten di wilayah Jawa Barat memiliki Bank/ATM, dan sebuah Bank/ATM pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah obligatory -‐ obligatory. Diagram ER : 1 n Kabupaten Bank_ATM memiliki 5. Hubungan entitas Kabupaten dan Fasilitas Umum Fasilitas Sosial (Fasum Fasos): Derajat hubungan/relasi : § Sebuah Kabupaten (1) memiliki banyak Fasum Fasos (n). § Seorang Fasum Fasos (1) terletak pada satu kabupaten (1). Kelas Keanggotaan : § Setiap Kabupaten pasti memiliki Fasum Fasos, dan setiap Fasum Fasos pasti terletak pada satu Kabupaten. § Hubungan kedua entitas ini adalah obligatory -‐ obligatory. Diagram ER : n m Kabupaten Fasum Fasos memiliki 6. Hubungan entitas Kabupaten dan Akomodasi : Derajat hubungan/relasi : § Sebuah Kabupaten (1) memiliki beberapa Akomodasi (n). § Satu Akomodasi (1) dimiliki satu Kabupaten (1). Kelas Keanggotaan : § Setiap Kabupaten pasti memiliki Akomodasi, dan sebuah Akomodasi belum tentu terdapat di Kabupaten. § Hubungan kedua entitas ini adalah obligatory – non obligatory. Diagram ER : 1
n 38
MODUL 1 BASIS DATA SPASIAL
Kabupaten Akomodasi memiliki 7. Hubungan entitas Wisata dan Rumah Makan : Derajat hubungan/relasi : § Sebuah objek Wisata (1) memiliki beberapa Rumah Makan (n). § Satu Rumah Makan (1) dimiliki satu objek Wisata (1). Kelas Keanggotaan : § Setiap objek Wisata belum tentu dimiliki Rumah Makan, dan sebuah Rumah Makan belum tentu terdapat di objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : 1 n Rumah_Ma Wisata memiliki kan 8. Hubungan entitas Wisata dan Transportasi : Derajat hubungan/relasi : § Sebuah objek Wisata (1) memiliki beberapa Transportasi (n). § Satu Transportasi (1) dimiliki satu objek Wisata (1). Kelas Keanggotaan : § Setiap objek Wisata belum tentu memiliki Transportasi, dan sebuah Transportasi belum tentu terdapat di objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : 1 n Wisata Transportas memiliki i 9. Hubungan entitas Wisata dan Jalur Transportasi : Derajat hubungan/relasi : § Sebuah objek Wisata (1) dapat diakses oleh beberapa Jalur Transportasi (n). § Satu Jalur Transportasi (1) dapat mengakses banyak objek Wisata (n). Kelas Keanggotaan : § Setiap objek Wisata belum tentu diakses oleh Jalur Transportasi, dan sebuah Jalur Transportasi belum tentu mengakses objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : n m Jalur Wisata memiliki Transportas i
39
MODUL 1 BASIS DATA SPASIAL
10. Hubungan entitas Transportasi Umum dan Jalur Transportasi : Derajat hubungan/relasi : § Sebuah Transportasi Umum (1) dapat melewati beberapa Jalur Transportasi (n). § Satu Jalur Transportasi (1) dapat dilewati banyak Transportasi Umum (n). Kelas Keanggotaan : § Setiap Transportasi Umum pasti melewati Jalur Transportasi, dan sebuah Jalur Transportasi belum tentu dilewati oleh Transportasi Umum. § Hubungan kedua entitas ini adalah obligatory – non obligatory. Diagram ER : n m Transportasi Jalur melewat Umum Transportas i i 11. Hubungan entitas Wisata dan Fasilitas Umum Fasilitas Sosial (Fasum Fasos): Derajat hubungan/relasi : § Sebuah Objek Wisata (1) memiliki banyak Fasum Fasos (n). § Seorang Fasum Fasos (1) terletak pada satu objek wisata (1). Kelas Keanggotaan : § Setiap Objek Wisata belum tentu memiliki Fasum Fasos, dan setiap Fasum Fasos belum tentu terletak pada satu Objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : n m Wisata Fasum Fasos memiliki 3. Ketiga, yang juga merupakan langkah terakhir dalam perancangan basis data, anda perlu membuat Desain Fisikal, yaitu menampilkan bagaimana struktur logikal menjadi implementasi fisik dalam bentuk tabel di DBMS. Tahapan ini memperlihatkan tabel skeleton dengan atribut yang sesuai. Jadi, pada tahapan ini Anda akan mencoba membuat tabel skeleton beserta atribut-‐nya. Dimana tabel-‐tabel beserta atribut akan dimasukkan ke dalam DBMS. (Dalam pelatihan ini digunakan DBMS PostgreSQL/PostGIS) Berdasarkan tahapan hubungan antar entitas yang telah ditentukan, maka dihasilkan tabel skeleton sebagai berikut : a. Kabupaten (#id_kab, nm_kab, luas, geom) b. Wisata (#kd_wisata, nm_objek, jenis, dy_tarik, fasility, skala, kondisi, geom) c. Pusat_Belanja (#id_pusblj, kategori, nm_obyk, #id_kab, geom) 40
MODUL 1 BASIS DATA SPASIAL
d. e. f. g. h. i. j.
Pusat_Kerajinan (#id_puskrjn, kategori, nm_obyk, #id_kab, geom) Bank_ATM (#id_bankatm, kategori, nm_bank, #id_kab, geom) Fasum_Fasos (#id_fasumsos, kategori, nm_obyk, #id_kab) Kabupaten_wisata (#kd_wisat, #id_kab) Rumah_Makan (#id_rmh_mkn, nm_rmh_mkn, jenis_mkn, #kd_wisat, geom) Akomodasi (#id_hotel, nm_hotel, kelas, fas, id_kab, geom) Transportasi (#id_trans, nm_pool, jenis_trans, dy_penumpa, fas_trans #kd_wisata, geom) k. Jalur Transportasi (#id_jal, nm_jal, geom) l. Jalur Transportasi_Wisata (#kd_wisat, #id_jal) m. Jalur Transportasi_Transportasi Umum (#id_jal, #id_trans) n. Fasum Fasos_Wisata (#id_fasumfasos, #kd_wisat)
41
MODUL 1 BASIS DATA SPASIAL
MATERI 2 -‐ PostgreSQL 2.1 Pengantar PostgreSQL 2.1.1 Pengenalan PostgreSQL PostgreSQL merupakan sebuah Object-‐Relational Database Management System (ORDBMS) berdasarkan pada PostgreSQL Versi 4.2 yang dikembangkan di Universitas California pada Berkeley Computer Science Department. PostgreSQL sebagi pelopor bagi banyak software DBMS lain yang kemudian menjadi komersial. PostgreSQL memiliki lisensi GPL (General Public License) dan oleh karena itu PostgreSQL dapat digunakan, dimodifikasi dan didistribusikan oleh setiap orang tanpa perlu membayar lisensi (free of charge) baik untuk keperluan pribadi, pendidikan maupun komersil. PostgreSQL merupakan DBMS yang open-‐source yang mendukung bahasa SQL secara luas dan menawarkan beberapa fitur-‐fitur modern seperti : ü Complex Queries ü Foreign Keys ü Triggers ü Views ü Transactional Integrity ü Multiversion Concurrency Control Selain itu, PostgreSQL telah mendukung teknologi lama dengan menambahkan fitur-‐ fiturbaru pada : ü Data Types ü Functions ü Operators ü Aggregate Functions ü Index Methods ü Procedural Languages Adapun sejarah singkat perkembangan PostgreSQL adalah sebagai berikut : ⇒ 1986 : Dikembangkan pertama kali oleh Professor Michael Stonebraker, yang disponsori oleh the Defense Advanced Research Projects Agency (DARPA). Tahun ini merupakan inisialisasi konsep untuk pengembangan sistem. ⇒ 1987 : Dikembangkan definisi dari model data, pembuatan aturan main, konvensi rasional dan arsitektur dari media penyimpanan. ⇒ 1989 : Postgre versi 1 dilaunching dengan banyak kelemahan pada konsep aturan main. ⇒ 1990 : Postgre versi 2 dilaunching dengan perbaikan pada aturan main. ⇒ 1991 : Postgre versi 3 dilaunching dengan dukungan multiple storage managers, peningkatan pada pengeksekusi query , dan ditulis ulangnya aturan main sistem.
42
MODUL 1 BASIS DATA SPASIAL
⇒ 1993 : Postgre versi 4.2 dilaunching yang merupakan cikal bakal DBMS masa depan dengan fitur yang lengkap. ⇒ 1994 : Postgre berubah nama menjadi Postgres95. Andrew Yu dan Jolly Chen, menambahkan sebuah interpreter untuk bahasa SQL. ⇒ 1996 : Postgres95 berubah nama menjadi PostgreSQL. Dan versi ini telah mencapai PostgreSQL versi 6.0 dengan kemampuan yang lebih baik dan ditandai dengan dimulainya proyek Postgres pada Berkeley Research. ⇒ 1997 – Sekarang : PostgresSQL telah berkembang dan terus dikembangkan sebagai basis data relasional dengan lisensi GPL. Hingga saat ini April 2013 versi terakhir dari PostgreSQL adalah 9.2.4. PostgreSQL atau sering disebut Postgres merupakan salah satu dari sejumlah basis data besar yang menawarkan skalabilitas, keluwesan, dan kinerja yang tinggi. Penggunaannya begitu meluas di berbagai platform dan didukung oleh banyak bahasa pemrograman. Bagi masyarakat TI (teknologi informasi) di Indonesia, Postgres sudah digunakan untuk berbagai aplikasi seperti web, billing system, dan sistem informasi besar lainnya. SQL di Postgres tidaklah seperti yang kita temui pada RDBMS umumnya. Perbedaan penting antara Postgres dengan sistem relasional standar adalah arsitektur Postgres yang memungkinkan user untuk mendefinisikan sendiri SQL-‐nya, terutama pada pembuatan function atau biasa disebut sebagai stored procedure. Hal ini dimungkinkan karena informasi yang disimpan oleh Postgres bukan hanya tabel dan kolom, melainkan tipe, fungsi, metode akses, dan banyak lagi yang terkait dengan tabel dan kolom tersebut. Semuanya terhimpun dalam bentuk class yang bisa diubah user. Arsitektur yang menggunakan class ini lazim disebut sebagai object oriented. Karena Postgres bekerja dengan class1, berarti Postgres lebih mudah dikembangkan di tingkat user, dan Anda bisa mendefinisikan sebuah tabel sebagai turunan dari tabel lain. Sebagai perbandingan bahwa sistem basis data konvensional hanya dapat diperluas dengan mengubah source codenya, atau menggunakan modul tambahan yang ditulis khusus oleh vendor, maka dengan Postgres memungkinkan user untuk membuat sendiri object file atau shared library yang dapat diterapkan untuk mendefinisikan tipe data, fungsi, bahkan bahasa yang baru. Dengan demikian Postgres memiliki dua kekuatan besar: source code dan arsitektur yang luwes, tentunya di samping feature penting lainnya seperti dokumentasi yang lengkap, dsb. Disamping itu Postgres juga didukung oleh banyak antarmuka ke berbagai bahasa pemrograman seperti C++, Java, Perl, PHP, Python, dan Tcl. ODBC dan JDBC juga tersedia yang membuat Postgres lebih terbuka dan dapat diterapkan secara meluas. Arsitektur Pada PostgreSQL PostgreSQL merupakan RDBMS yang berbasis client/server. Setiap sesi pada PostgreSQL terdiri dari beberapa proses, yaitu : 43
MODUL 1 BASIS DATA SPASIAL
Proses pada server. Adapun proses ini meliputi mengatur file basis data, menerima koneksi dari client ke basis data, serta melakukan kegiatan yang diminta oleh client. Program pada sisi server ini disebut postgres. § Aplikasi user/client yang ingin melakukan operasi-‐operasi basis data. Aplikasi client terdiri dari beragam aplikasi, diantaranya: aplikasi yang berisi text, aplikasi grafik, webserver yang mengakses basis data untuk menampilkan halaman web, atau perangkat khusus untuk basis data. Beberapa alplikasi client didukung oleh distribusi PostgreSQL, tetapi sebagian besar dikembangkan oleh pengguna sendiri. Karena berbasis client/server, maka klien dan server terdapat pada host yang berbeda pada saat komunikasi jaringan TCP/IP. Server PostgreSQL dapat menjalankan beberapa koneksi klien sekaligus pada waktu yang bersamaan. Pada saat hal tersebut terjadi, maka PostgreSQL menjalankan proses baru pada setiap koneksi yang diminta oleh klien. Sehingga klien dan proses server yang baru jalan akan berkomunikasi tanpa intervensi proses postgres yang sebenarnya. §
Kelebihan PostgreSQL Adapun beberapa kelebihan dalam menggunakan PostgreSQL adalah sebagai berikut : 1) PostgreSQL memiliki arsitektur multiproses (forking) yang berarti memiliki stabilitas yang lebih tinggi, sebab satu proses anak yang mati tidak akan menyebabkan seluruh daemon mati—meskipun pada kenyataannya, dulu ini sering terjadi. 2) Dalam kondisi load tinggi (jumlah koneksi simultan besar), kecepatan PostgreSQL sering mengalahkan MySQL untuk query dengan klausa JOIN yang kompleks, hal ini dikarenakan PostgreSQL mendukung locking di level yang lebih rendah, yaitu row. 3) PostgreSQL memiliki fitur OO seperti pewarisan tabel dan tipe data, atau tipe data array yang kadang praktis untuk menyimpan banyak item data di dalam satu record. Dengan adanya kemampuan OO ini maka di PostgreSQL, kita dapat mendefinisikan sebuah tabel yang mewarisi definisi tabel lain. 4) PostgreSQL menyediakan hampir seluruh fitur-‐fitur basis data seperti yang terdapat dalam produk basis data komersial pada umumnya. 5) PostgreSQL pun memiliki tipe data geometri (seperti titik, garis, lingkaran, poligon) yang mungkin berguna bagi aplikasi ilmiah tertentu. 6) PostgreSQL memberikan kita kemampuan mendefinisikan sebuah field sebagai array. 7) PostgreSQL memiliki hampir semua fasilitas standar yang biasanya diinginkan: view (tabel virtual), trigger, subselect, stored procedure (dalam beberapa bahasa), dan foreign key constraint. 8) PostgreSQL juga memiliki apa yang disebut rule, yaitu tindakan custom yang bisa kita definisikan dieksekusi saat sebuah tabel di-‐INSERT, UPDATE, atau DELETE. 44
MODUL 1 BASIS DATA SPASIAL
9) PostgresSQL juga mempunyai kemampuan untuk membuat konektifitas dengan basis data lain seperti pgdump, Interbase, pgaccess dan hampir semua basis data pada Linux. 10) Kemampuannya menampung data spasial, sehingga ia bisa digunakan dalam pembuatan situs yang berbasis Web GIS untuk pemetaan dan sebagainya. 11) PostgreSQL memiliki lisensi GPL (General Public License) dan oleh karena itu postgreSQL dapat digunakan, dimodifikasi dan didistribusikan oleh setiap orang tanpa perlu membayar lisensi (free of charge) baik untuk keperluan pribadi, pendidikan maupun komersil. 12) PostgreSQL mendukung banyak jenis bahasa pemrograman, antara lain: SQL, C, C++, Java, PHP, dll. 13) PostgreSQL juga merupakan alternatif untuk sistem basis data. 2.1.2 Instalasi PostgreSQL Setelah mengunduh file installer PostgreSQL, ekstrak file tersebut hingga berubah kedalam bentuk .exe kemudian double klik file tersebut. Kemudian akan tampil halaman awal instalasi postgresql. Lanjutkan proses hingga selesai menginstalasi. 1. Tampilan awal proses instalasi PostgreSQL. Kemudian klik tombol Next.
2. Pilih direktori tempat penginstalan, biarkan saja defaultnya atau ganti sesuai keinginan. Kemudian klik tombol Next.
45
MODUL 1 BASIS DATA SPASIAL
3. Pilih direktori tempat penyimpanan data, disarankan untuk menggunakan default saja. Kemudian klik tombol Next.
4. Kemudian isikan password yang akan digunakan untuk koneksi ke basis data PostgreSQL setelah proses instalasi selesai. Disarankan untuk menggunakan password yang mudah untuk diingat. Misalnya “1234”.
46
MODUL 1 BASIS DATA SPASIAL
5. Pada jendela setup port biarkan saja menggunakan default yaitu “5432”. Kemudian klik tombol Next.
6. Dijendela setup advance option biarkan saja secara default seperti yang terlihat pada gambar. Kemudian klik tombol Next.
7. Pada jendela setup ready to install klik tombol Next. Kemudian akan muncul jendela yang menunjukkan proses instalasi sedang berlangsung, tunggu beberapa saat hingga proses instalasi selesai.
47
MODUL 1 BASIS DATA SPASIAL
8. Proses instalasi selesai. Uncheck kotak Launch Stack Builder, sebab jika diberi tanda check maka proses instalasi akan dilanjutkan dengan mengunduh beberapa program pendukung lainnya. Klik tombol Finish.
9. Untuk menjalankan PostgreSQL, pada menu Start klik all program, lalu pilih PostgreSQL 9.x.x. Lalu klik pgAdmin III. Kemudian akan muncul jendela kerja PostgreSQL.
10. Untuk memulai klik database pada bagian kiri, kemudian klik kanan pada database tersebut pilih conect, kemudian masukkan password yang pada bagian sebelumnya telah dibuat. Setelah itu PostgreSQL siap untuk digunakan. 2.1.3 Pengenalan PgAdmin pada PostgreSQL PgAdmin merupakan merupakan tool yang disediakan PostgreSQL dan terinstal otomatis ketika kita meng-‐instal PostgreSQL. PgAdmin ini mempermudah user dalam manajemen basis data dengan tampilan visualnya. Sehingga tanpa harus menguasai bahasa SQL, user dapat membuat basis data dan tabel-‐tabel juga memanipulasinya dengan hanya menggunakan menu dan tools yang tersedia di PgAdmin. Berikut merupakan tampilan awal PgAdmin yang dapat kita buka melalui Start > Program Files > PostgreSQL 9.1 > pgAdmin III.
48
MODUL 1 BASIS DATA SPASIAL
Anatomi PostgreSQL – Database Object Pada database di PgAdmin, terdapat beberapa fitur objek yang memiliki fungsinya masing-‐masing. Di bawah ini merupakan gambar tampilan fitur objek yang terdapat di semua database yang dibuat di PostgreSQL.
Berikut penjelasan untuk masing-‐masing fitur objek. ⇒ Catalogs merupakan tempat dimana sebuah sistem manajemen basis data relasional menyimpan metadata skema, seperti informasi tentang tabel dan informasi basis data internal. ⇒ Extensions merupakan ekstensi yang mendukung kompabilitas penuh terhadap standar bahasa SQL maupun bahasa pemrograman C untuk menciptakan beberapa fungsi atau prosedur untuk beberapa kebutuhan. ⇒ Schemas merupakan tempat menyimpan tabel, dan objek lainnya seperti tipe data, function, dan operator.Dengan adanya schemas ini, banyak pengguna dapat mengakses basis data yang sama tanpa mengganggu satu sama lain. Selain itu juga digunakan untuk mengorganisir objek basis data ke dalam 49
MODUL 1 BASIS DATA SPASIAL
logical groups sehingga lebih teratur. Di dalam schemas ini terdapat Tables sebagai tempat menyimpan tabel relasi. ⇒ Slony Replication merupakan master untuk sistem replikasi beberapa perintah dengan kemampuan cascading dan failover. Dengan adanya Slony Replication ini, user dapat melakukan pengamanan data, kemampuan standby / failover basis data, mengoptimalkan proses transaksi online, permintaan BI, melakukan backup dan restore basis data, dan migrasi sistem. Membuat basis data baru di PgAdmin Kita dapat membuat basis data pada server yang telah tersedia di PgAdmin, yaitu Server PostgreSQL 9.1. Untuk membuat basis data baru dengan nama Latihan, lakukan langkah berikut. 1. Klik 2 kali pada PostgreSQL 9.1 (localhost : 5432). 2. Kemudian klik kanan pada Databases lalu pilih New Database. Dan kemudian akan muncul window New Database, dimana disini Anda akan melakukan pengaturan awal pada basis data yang akan dibuat. 3. Selanjutnya lakukan pengaturan pada tab Properties dengan ketentuan pada Name isi dengan Latihan, dan pada Owner tekan drop-‐down arrow dan pilih postgres sebagai user dari basis data. 4. Kemudian pilih tab Definition dan lakukan pengaturan dengan ketentuan : -‐ Encoding diisi dengan UTF8. Maksudnya adalah kodifikasi penyimpanan data dalam basis data Pelatihan akan menggunakan UTF-‐8 yang merupakan sistem penyimpanan yang paling umum. -‐ Template diisi dengan postgres. Maksudnya adalah template basis data yang digunakan yaitu template postgres dimana dengan template ini kita hanya bisa menyimpan tabel non spasial. (Untuk spasial gunakan template_postgis_20, namun harus menginstal PostGIS terlebih dahulu) -‐ Tablespace diisi dengan pg_default. Tablespace ini merupakan sebuah tempat penyimpanan tabel di dalam basis data yang memiliki proteksi karena adanya konfigurasi priviledge / hak akses dan juga memungkinkan admin untuk menentukan lokasi dimana data yang mewakili objek basis data dapat disimpan. Dengan mengisi bagian Tablespace ini dengan pg_default, maka tabel akan disimpan di lokasi default yang disediakan PostgreSQL. -‐ Collation dikosongkan. Collation ini merupakan seperangkat aturan untuk menyimpan, menyortir, dan membandingkan data teks. Biasanya collation ini berpengaruh pada saat menggunakan sintaks ORDER BY dan pada kasus ini kita gunakan yang default, jadi dikosongkan. -‐ Character type juga dikosongkan. Character type ini merupakan pilihan pengaturan karakter untukmenyimpan nilai atribut. Misalkan penulisan huruf e dapat berbeda-‐beda tergantung dengan bahasa yang digunakan, seperti bahasa latin. Disini kita isi dengan default jadi dikosongkan. 50
MODUL 1 BASIS DATA SPASIAL
5. Klik OK. Membuat tabel baru pada basis data Latihan Setelah membuat basis data baru, kita dapat memasukkan tabel ke dalam basis data yang telah dibuat. Caranya dengan masuk ke fitur objek Schemas kemudian pilih privileges public dan pada Tables kita dapat menyimpan tabel. Untuk membuat tabel dengan nama Peserta, lakukan langkah-‐langkah berikut. 1. Lakukan klik kanan pada Tables, kemudian pilih New Table... Dan kemudian akan muncul window New Table, dimana disini Anda akan melakukan pengaturan awal pada basis data yang akan dibuat. 2. Selanjutnya lakukan pengaturan pada tab Properties dengan ketentuan pada Name isi dengan Peserta, dan pada Owner tekan drop-‐down arrow dan pilih postgres sebagai user dari tabel. Lalu pada tab Definition untuk Tablespace pilih pg_default. 3. Lalu pada tab Columns, kita dapat memasukkan beberapa kolom baru ke dalam tabel Peserta. Caranya dengan meng-‐klik tombol Add, kemudian ikuti langkah berikut. -‐ Pada tab Properties, isi Namedengan id_peserta. Pada Data type pilih character varying dan Length untuk panjang karakter isi dengan 10. -‐ Kemudian pada tab Definition, lakukan checklist pada Not NULL yang artinya atribut id_peserta tidak boleh kosong. -‐ Klik OK. Buat juga kolom baru dengan nama Nama_Peserta (Text) dan Nilai (Integer). 4. Setelah memasukkan semua kolom / field baru, selanjutnya ke tab Constraints. Disini kita mengatur field yang mana yang akan dijadikan primary key dan key lainnya. -‐ Pilih drop-‐down arrow kemudian pilih Primary Key, lalu klik tombol Add. -‐ Kemudian pada window New Primary Key, kita akan menentukan kolom yang mana yang akan dijadikan primary key. Pilih tab Columns, kemudian pada Column pilih kolom id_peserta lalu klik tombol Add. Klik OK. 5. Klik OK. Maka tabel Peserta telah dibuat dan disimpan dalam basis data Latihan. Jika Anda ingin mengeceknya, silahkan lakukan expand atau klik tanda + pada Tables, maka Anda dapat melihat tabel yang baru Anda buat. Untuk melihat bentuk tabel, klik pada tabel Peserta, kemudian pilih Selanjutnya lakukan pengaturan pada tab Properties dengan ketentuan pada Name isi dengan Latihan, dan pada Owner tekan drop-‐down arrow dan pilih postgres sebagai user dari View Data > View All Rows.
51
MODUL 1 BASIS DATA SPASIAL
2.1.4 SQL (Structured Query Language) SQL merupakan sebuah bahasa komputer yang mengikuti standar ANSI (American National Standard Institute), yaitu bahasa standar yang digunakan untuk mengakses dan melakukan manipulasi data pada sebuah DBMS. Statemen dalam SQL dapat digunakan untuk mengakses data atau meng-‐update data pada suatu database. SQL utamanya berfungsi dalam suatu relational database seperti misalnya PostgreSQL/PostGIS, Oracle, SQL Server, MS Acces, MySQL, Firebird dan masih banyak lagi yang lainnya. SQL terdiri dari Data Definition Language (DDL) dan Data Manipulation Language (DML). Mengenal DDL pada SQL DDL atau Data Definition Language merupakan sintaks-‐sintaks yang berfungsi untuk melakukan manipulasi struktur dari basis data. Definisi lain dari DDL yaitu bahasa dalam DBMS yang digunakan untuk membuat atau mendefinisikan objek-‐objek dalam basis data. Secara umum, DDL digunakan untuk membuat tabel dan view. Dan secara khusus dalam DBMS tertentu, DDL digunakan untuk membuat trigger, membuat stored procedure, juga membuat database, index, rule, schema, dan lain-‐ lain tergantung DBMS. Berikut penjelasan singkat beberapa sintaks yang sering dijumpai dalam DDL. ü CREATE DATABASE, yang digunakan untuk membuat basis data. ü CREATE TABLE, yang digunakan untuk membuat tabel. ü ALTER TABLE, yang digunakan untuk merubah struktur suatu tabel. ü DROP TABLE, yang digunakan untuk menghapus suatu tabel. ü CREATE INDEX, yang digunakan untuk membuat suatu index dalam tabel. ü DROP INDEX, yang digunakan untuk menghapus suatu index dalam tabel. Mengenal DML pada SQL DML atau Data Manipulation Language merupakan sintaks-‐sintaks yang berfungsi untuk melakukan manipulasi data ataupun objek-‐objek yang ada di dalam tabel. Definisi lain dari DML yaitu sintaks-‐sintaks untuk memanipulasi data pada basis data, misalnya sintaks untuk memilih data, menyisipkan, mengubah, dan menghapus data dalam basis data. Berikut merupakan penjelasan singkat dari sintaks-‐sintaks DML. ü SELECT, yang digunakan untuk mengakses data dari suatu tabel dalam basis data. ü UPDATE, yang digunakan untuk melakukan update data dalam suatu tabel pada basis data. ü DELETE, yang digunakan untuk menghapus data dari suatu tabel dalam basis data. ü INSERT, yang digunakan untuk menambahkan data ke dalam suatu tabel dalam basis data. 52
MODUL 1 BASIS DATA SPASIAL
2.1.5 Model Data Relasional Seperti yang disebutkan sebelumnya, SQL merupakan bahasa relasional. Artinya, SQL berbasis pada model data relasional yang pertama dikembangkan oleh E.F.Codd pada tahun 1970. Model data relasional adalah suatu model basis data yang menggunakan tabel dua dimensi, yang terdiri dari baris dan kolom untuk menggambarkan sebuah berkas data. Model data relasional merupakan model data yang saat ini paling banyak digunakan oleh DBMS komersial. Keuntungan dari penggunaan model data relasional yaitu bentuknya yang sederhana dan mudah untuk melakukan manipulasi data (query, update, dan lain-‐lain). Model data relasional mendefinisikan kumpulan baris dari setiap tabel, namun tidak mendefinisikan urutan baris secara khusus. Setiap baris yang disebut record menentukan nilai dari setiap kolom atau field pada tabel. Setiap nilai dalam suatu record merupakan satu nilai yang utuh dan tidak dapat dipecah menjadi komponen-‐ komponen yang lebih kecil. Tabel-‐tabel yang dibentuk dari model data relasional tentunya harus memiliki relasi antar tabel, sehingga dapat dilakukan query. Karakteristik relasi yaitu sebagai berikut. 1. Semua elemen data pada suatu record dan atribut tertentu harus memiliki nilai tunggal. 2. Semua elemen data pada suatu atribut tertentu dalam sebuah relasi harus memiliki tipe dan ukuran yang sama. 3. Masing-‐masing atribut dalam relasi memiliki nama yang unik. 4. Pada sebuah relasi tidak ada dua atau lebih record yang sama persis. Pada SQL terdapat dua aspek yaitu pendefinisian data untuk mendeklarasikan skema basis data dan manipulasi data untuk melakukan query dan modifikasi basis data. Aspek-‐aspek inilah yang digunakan untuk mengimplementasikan model data relasional dalam DBMS. 2.2 Bahasa SQL SQL di PostgreSQL tidaklah seperti yang kita temui pada RDBMS umumnya. Perbedaan penting antara PostgreSQL dengan sistem relasional standar adalah arsitektur PostgreSQL yang memungkinkan user untuk mendefinisikan sendiri SQL-‐nya, terutama pada pembuatan function atau biasa disebut sebagai stored procedure. Hal ini dimungkinkan karena informasi yang disimpan oleh PostgreSQL bukan hanya tabel dan kolom, tetapi juga tipe, fungsi, metode akses, dan banyak lagi yang terkait dengan tabel dan kolom tersebut yang terhimpun dalam bentuk class yang dapat diubah olehuser. Arsitektur yang menggunakan class disebut denganobject oriented. Karena Postgres bekerja dengan class, berarti PostgreSQL lebih mudah dikembangkan di tingkat user, dan Anda bisa mendefinisikan sebuah tabel sebagai turunan dari tabel lain. Memulai penggunaan bahasa SQL di PostgreSQL 53
MODUL 1 BASIS DATA SPASIAL
Penggunaan bahasa SQL di PostgreSQL dilakukan di Command Prompt. Jadi sebelum memulai, kita perlu membuka command prompt dengan cara pilih tombol Start kemudian ketik cmd kemudian tekan Enter, kemudian muncul windowCommand Prompt seperti gambar di bawah ini.
Selanjutnya Anda perlu memindahkan directory default di command prompt ke direktori dimana psql berada. Psql merupakan tool yang disediakan PostgreSQL untuk mendefinisikan dan memanipulasi data dengan menggunakan bahasa SQL. Caranya adalah dengan mengetikkan cd , yang umumnya berada diC:\Program Files\PostgreSQL\9.1\bin. Jadi, Anda ketik di command prompt dengan perintah cd C:\Program Files\PostgreSQL\9.1\bin. Lalu ketika psql –h localhost –U postgres untuk masuk ke dalam user postgres. Untuk lebih jelasnya lihat gambar di bawah ini.
Perintah yang berhubungan dengan SQL dan PSQLCommand Berikut ini merupakan daftar sintaks yang tersedia di PostgreSQL 9.1 jika kita menggunakan command prompt. Jika kita perlu menggunakan salah satu sintaks namun kita lupa bagaimana aturan penulisan sintaks-‐nya, maka kita dapat menggunakan sintaks \h dan kemudian PostgreSQL melalui command prompt akan menampilkan daftar sintaks. 54
MODUL 1 BASIS DATA SPASIAL
Berikut ini merupakan daftar perintah yang berhubungan dengan penggunaan PSQL (Procedural SQL) pada PostgreSQL 9.1. Sintaks-‐sintaks yang ditampilkan bertujuan untuk memudahkan database administrator dalam mengelola basis data dengan PostgreSQL. Caranya dengan mengetikkan \?.
2.2.1 Tipe Data dalam SQL Untuk melihat tipe data apa saja yang didukung oleh PostgreSQL, maka Anda dapat mengetikkan perintah berikut ini pada console PostgreSQL. List of data types -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ 55
MODUL 1 BASIS DATA SPASIAL
Schema|Name|Description -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐+-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ pg_catalog | "any"| pg_catalog | "char"| single character pg_catalog | "trigger"| pg_catalog | "unknown"| pg_catalog | abstime| absolute, limited-‐range date and time pg_catalog | aclitem| access control list pg_catalog | anyarray| pg_catalog | anyelement| pg_catalog | bigint| ~18 digit integer, 8-‐byte storage pg_catalog | bit| fixed-‐length bit string pg_catalog | bit varying| variable-‐length bit string pg_catalog | boolean| boolean, 'true'/'false' pg_catalog | box| geometric box '(lower left,upper right)' pg_catalog | bytea| variable-‐length string, binary values pg_catalog | character| char(length), blank-‐padded string,fixed storage length pg_catalog| character varying| varchar(length), non-‐blank-‐paddedstring, variable storage length pg_catalog | cid| command identifier type, sequence in transaction id pg_catalog | cidr| networkIP address/netmask,networkaddress pg_catalog | circle| geometric circle '(center,radius)' pg_catalog | cstring| pg_catalog | date| ANSI SQL date pg_catalog | double precision | double-‐precision floating pointnumber, 8-‐byte storage pg_catalog | inet| IP address/netmask, host address,netmask optional pg_catalog | int2vector| array of int2, used in system tables pg_catalog | integer| -‐2 billion to 2 billion integer, 4-‐byte pg_catalog | interval| @ , time interval pg_catalog | language_handler | pg_catalog | line| geometric line (not implemented)' pg_catalog | lseg| geometric line segment '(pt1,pt2)' pg_catalog | macaddr| XX:XX:XX:XX:XX:XX, MAC address pg_catalog | money| monetary amounts, $d,ddd.cc pg_catalog | name| 63-‐character type for storing system id pg_catalog | numeric| numeric(precision, decimal), arbitrary pg_catalog | oid| object identifier(oid), maximum 4billion pg_catalog | oidvector| array of oids, used in system tables pg_catalog | path| geometric path '(pt1,...)' pg_catalog | point| geometric point '(x, y)' 56
MODUL 1 BASIS DATA SPASIAL
pg_catalog | polygon| geometric polygon '(pt1,...)' pg_catalog | real| single-‐precision floating pointnumber, 4-‐byte storage pg_catalog | record| pg_catalog | refcursor| reference cursor (portal name) pg_catalog | regclass| registered class pg_catalog | regoper| registered operator pg_catalog | regoperator| registered operator (with args) pg_catalog | regproc| registered procedure pg_catalog | regprocedure| registered procedure (with args) pg_catalog | regtype| registered type pg_catalog | reltime| relative, limited-‐range time interval pg_catalog | smallint| -‐32 thousand to 32 thousand, 2-‐byte pg_catalog | smgr| storage manager pg_catalog | text| variable-‐length string, nolimitspecified pg_catalog | tid| (Block,offset),physical location oftuple pg_catalog | time with time zone| hh:mm:ss, ANSI SQL time pg_catalog | time without time zone| hh:mm:ss, ANSI SQL time pg_catalog | timestamp with time zone| date and time with time zone pg_catalog | timestamp without time zone | date and time pg_catalog | tinterval| (abstime,abstime), time interval pg_catalog | void| pg_catalog | xid| transaction id (61 rows) Terlihat bahwa tipe data yang didukung oleh PostgreSQL berjumlah 61 buah. Tipe data di atas merupakan tipe data tambahan dari tipe data default yang didukung PostgreSQL berdasarkan standar ANSI 92. Jadi tidak terlihat tipe data seperti VARCHAR, VARCHAR[], atau INT. Karena secara default, PostgreSQL telah menyediakan hampir seluruh tipe data yang umum digunakan pada DBMS. 2.2.2 Implementasi DDL pada PostgreSQL Create Create Database Sintaks ini digunakan untuk membuat basis data dalam PostgreSQL. Dimana langkah membuat basis data dengan menggunakan sintaks create yaitu sebagai berikut : • Buka command prompt. • Pindahkan direktori ke tempat dimana terdapat tools psql, yaitu di C:\Program Files\PostgreSQL\9.1\bin. Caranya yaitu dengan mengetikkan cd C:\Program Files\PostgreSQL\9.1\bin di command prompt.
57
MODUL 1 BASIS DATA SPASIAL
• Sekarang kita sudah bisa membuat basis data baru di PostgreSQL. Caranya dengan mengetikkan sintaks createdb –h localhost –U postgres .Jadi jika anda ingin membuat basis data dengan nama pelatihan, maka sintaks yang harus anda ketikkan yaitu createdb –h localhost –U postgres pelatihan. Maka basis data pelatihan pun telah dibuat. Anda dapat mengeceknya di PgAdmin. Selanjutnya Anda perlu masuk ke dalam basis data pelatihan jika ingin membuat tabel ataupun manipulasi data, dengan cara mengetikkan : psql –h localhost –U postgres pelatihan
Create Table Tabel merupakan wadah dimana data tersimpan. Setiap tabel memiliki field atau kolom dan record atau baris. Terdapat beberapa ketentuan dalam membuat tabel, yaitu : 1. Harus memiliki field yang dapat dijadikan identitas bagi field lainnya. Jadi isi field yang menjadi identitas harus unik atau tidak ada yang sama, field identitas ini disebut dengan primary key. 2. Primary key tidak boleh bernilai null (kosong), maka Anda harus mendeklarasikan field yang menjadi primary key sebagai not null. Jika Anda tidak mendeklarasikan sebagai not null, maka PostgreSQL secara default akan menganggapnya nullable (boleh kosong). Sintaks untuk membuat tabel yaitu : create table(<modifikasi1>, <modifikasi2>, ........dst); Disini Anda akan mencoba membuat tabel di dalam basis data pelatihan dengan ketentuan sebagai berikut. ü Nama Tabel : Peserta ü Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi id integer Primary key Not null nama Varchar(50) -‐ -‐ Maka untuk membuat tabel dengan ketentuan di atas, yaitu dengan mengetikkan sintaks berikut. Create table peserta(id integer not null primary key, nama varchar(50)); Selanjutnya untuk melihat tabel yang telah dibuat , ketik \dt Jika anda ingin melihat definisi dari tabel peserta, ketik \d peserta Untuk lebih jelasnya, lihat gambar di bawah ini.
58
MODUL 1 BASIS DATA SPASIAL
Buat juga tabel dengan nama daftar_pelatihan, yang berisi kolom sebagai berikut. Nama Field Kd_pelatihan Nm_pelatihan Id_peserta
Tipe Data Varchar(5) Varchar(50) integer
Contraint Primary key -‐ Foreign key
Modifikasi Not null Not null Not null
Jadi, ketikkan sintaks berikut : create table daftar_pelatihan(kd_pelatihan varchar(5) not null primary key, nm_pelatihan varchar(50) not null, id_peserta integer not null, constraint daftar_pelatihan foreign key (id_peserta) references peserta (id)); Sekarang coba buat tabel jadwal yang berisi kolom sebagai berikut. Nama Field Tipe Data Contraint Modifikasi Kd_pelatihan Varchar(5) Primary key Not null jadwal Varchar(50) -‐ -‐ setelah membuat ketiga tabel di atas, selanjutnya coba anda isi tabel-‐tabel tersebut melalui PgAdmin. Create Index Indeks digunakan untuk mempercepat akses pencarian nilai atau data dalam basis data. Dalam suatu kasus ketika mengakses sebuah tabel, biasanya DBMS akan membaca seluruh tabel baris perbaris hingga selesai. Ketika baris sangat banyak dan hasil query hanya sedikit, maka hal ini sangat tidak efisien. Dengan adanya indeks ini, maka kita tinggal membuka indeks, kita dapat segera menemuka nilai atau data yang kita butuhkan. Cara penulisan sintaks untuk membuat index adalah sebagai berikut. create index on (); Jika kita ingin mencari nama-‐nama peserta secara cepat, kita dapat membuat sebuah indeks (index) pada kolom nama pada tabel peserta. Maka sintaks yang harus dimasukkan, yaitu : create index indeks_peserta on peserta (nama); Create View View dapat dianggap sebagai tabel virtual/maya, dengan kata lain tabel view tidak benar-‐benar ada secara fisik di basis data, tetapi dapat dilihat oleh user sebagai 59
MODUL 1 BASIS DATA SPASIAL
tabel pada umumnya. Cara penulisan sintaks untuk membuat view adalah sebagai berikut. create view as select from ; View ini biasanya berupa tabel yang terdiri dari beberapa atribut, dimana atribut-‐ atribut pembentuknya berasal dari beberapa tabel yang memiliki relasi. Sebagai contoh Anda akan membuat tabel view dimana terdapat atribut nama dari tabel peserta dan atribut nm_pelatihan pada tabel daftar_pelatihan. Jadi sintaks yang harus anda ketik, yaitu : create view view_pelatihan as select nama, nm_pelatihan from peserta, daftar_pelatihan; Kemudian untuk melihat struktur tabel view view_pelatihan, ketik \d view_pelatihan. Dan untuk melihat isi tabel view_pelatihan, ketik sintaks berikut : select* from view_pelatihan where nama=’’; Untuk lebih jelasnya, lihat gambar di bawah ini.
Drop Drop Table Sintaks ini digunakan untuk menghapus tabel yang telah kita buat dalam basis data. Aturan penulisan sintaks ini yaitu : drop table ; Sekarang coba Anda hapus tabel jadwal, maka sintaks yang harus Anda ketik, yaitu : drop table jadwal; Drop Index Sintaks ini digunakan untuk menghapus indeks tabel yang telah kita buat dalam basis data. Aturan penulisan sintaks ini yaitu : drop index ; Sekarang coba Anda hapus indeks tabel indeks_peserta, maka sintaks yang harus Anda ketik, yaitu : drop index indeks_peserta; 60
MODUL 1 BASIS DATA SPASIAL
Drop View Sintaks ini digunakan untuk menghapus tabel view yang telah kita buat dalam basis data. Aturan penulisan sintaks ini yaitu : drop view ; Sekarang coba Anda hapus tabel view view_pelatihan, maka sintaks yang harus Anda ketik, yaitu : drop view view_pelatihan; Alter Alter merupakan sintaks yang digunakan untuk merubah struktur tabel, baik itu menambah field/kolom ataupun menghapus field/kolom. Aturan penulisan sintaks untuk menambah kolom pada tabel, yaitu : alter table add ; Jadi, jika Anda ingin menambahkan field tgl_lahir dengan tipe data DATE ke dalam tabel peserta, maka sintaks yang harus Anda masukkan, yaitu : alter table peserta add tgl_lahir date; Sedangkan aturan penulisan sintaks untuk menghapus kolom pada tabel, yaitu : alter table drop ; Jadi, jika Anda ingin menghapus field tgl_lahir, maka sintaks yang harus Anda masukkan : alter table peserta drop tgl_lahir; sekarang coba Anda tambahkan field nilai dengan tipe data integer pada tabel peserta !
2.2.3 Implementasi DML pada PostgreSQL Select Simple Select Simple select merupakan sintaks yang digunakan secara umum untuk memilih data. Berikut beberapa contoh penggunaan sintaks select yang umum. 1. Memilih data dari tabel daftar_pelatihan, dimana yang akan ditampilkan yaitu kode pelatihan dan pelatihan apa saja yang diikuti oleh peserta dengan id=1. Select* from daftar_pelatihan where id_peserta=1; 61
MODUL 1 BASIS DATA SPASIAL
2. Memilih data dari tabel peserta, dimana yang akan ditampilkan yaitu nama peserta dengan id = 2. Select nama from peserta where id=2;
Penggunaan sintaks kondisi WHERE juga dapat dihubungkan secara logis dengan menggunakan kata kunci OR, AND, dan NOT seperti contoh 3. 3. Memilih data tabel daftar_pelatihan, dimana yang akan ditampilkan yaitu nm_pelatihan yang tidak diikuti oleh peserta dengan id_peserta=2. Berarti dalam kasus ini digunakan kata kunci NOT. Select nm_pelatihan from daftar_pelatihan where not id_peserta=2;
Joins Penggunaan joins pada sintaks select dimaksudkan untuk memilih data atribut dari dua atau lebih tabel yang kemudian ditampilkan dalam sebuah tabel view. Dengan catatan tabel-‐tabel yang digunakan harus memiliki relasi yang jelas. Untuk lebih jelasnya, lihat contoh di bawah ini. 1. Memilih data dari tabel peserta dan daftar_pelatihan, dimana yang akan ditampilkan yaitu atribut id dan nama dari tabel peserta dan nm_pelatihan dari tabel daftar_pelatihan untuk peserta dengan id=2. Select id, nama, nm_pelatihan from peserta, daftar_pelatihan where id=id_peserta and id=2; 62
MODUL 1 BASIS DATA SPASIAL
2.
Memilih data dari tabel peserta dan daftar_pelatihan, dimana yang akan ditampilkan yaitu atribut id dan nama dari tabel peserta dan kd_pelatihan dan nm_pelatihan dari tabel daftar_pelatihan untuk peserta dengan id=1 atau id=2. Select id, nama, kd_pelatihan, nm_pelatihan from peserta, daftar_pelatihan where id=id_peserta and (id=1 or id=2);
Aggregate Operators SQL menyediakan aggregate operators (seperti AVG, COUNT, SUM, MIN, MAX) yang menggunakan nama atribut sebagai sebuah argumen. Nilai aggregate operator dihitung dari keseluruhan nilai dari atribut yang ditentukan dari seluruh tabel. Jika kelompok yang dispesifikasikan dalam query perhitungan dilakukan hanya pada seluruh nilai pada kelompok tertentu lihat contoh aggregation by groups. Contoh : Menghitung nilai rata-‐rata dari nilai para peserta, dilihat dari atribut nilai di tabel peserta. Select avg(nilai) as avg_nilai from peserta;
Aggregation by Groups SQL memungkinkan pembagian record dari sebuah tabel ke dalam kelompok-‐ kelompok yang disebut dengan aggregation by groups. Dengan cara ini kita dapat melakukan perhitungan berdasarkan pengelompokkan atribut. 63
MODUL 1 BASIS DATA SPASIAL
Pembagian record ke dalam beberapa kelompok dilakukan dengan menggunakan kata kunci GROUP BY diikuti dengan daftar atribut yang mendefinisikan pengelompokkan. Contoh : Anda akan mencoba menampilkan jumlah pelatihan yang diikuti oleh masing-‐masing peserta yang dikelompokkan berdasarkan id dan nama. select id, nama, count(id_peserta) from peserta, daftar_pelatihan where id=id_peserta group by id,nama;
Union, Intersect, Except Operasi ini menghitung union, intersect, dan menetapkan perbedaan teoritis record diturunkan dari dua subqueri. Berikut merupakan contoh query untuk UNION : Select nama, nilai from peserta where id=1 UNION select nama, nilai from peserta where id=2;
Perintah di atas memiliki arti bahwa kita ingin menampilkan nilai atribut nama dan nilai dari tabel peserta untuk id=1 dan digabung dengan nilai atribut nama dan nilai dari tabel peserta untuk id=2. Selanjutnya, berikut contoh query untuk INTERSECT : Select id, nama, nilai from peserta where nilai > 75 INTERSECT select id, nama, nilai from peserta where nilai > 85;
64
MODUL 1 BASIS DATA SPASIAL
Perintah di atas memiliki arti bahwa kita ingin menampilkan nilai atribut id, namadan nilai dari tabel peserta untuk nilai lebih besar dari 75 dan di-‐intersect dengan yang nilai lebih besar dari 85. Dan terakhir, berikut contoh query untuk EXCEPT : Select id, nama, nilai from peserta where nilai > 75 EXCEPT select id, nama, nilai from peserta where nilai > 85;
Perintah di atas memiliki arti bahwa kita ingin menampilkan nilai atribut id, namadan nilai dari tabel peserta untuk nilai lebih besar dari 75, KECUALI yang nilai-‐nyalebih besar dari 85. Insert into Perintah insert into digunakan untuk memasukkan nilai record atau baris ke dalam field atau kolom atribut. Kita dapat melakukan pengisian record untuk semua field ataupun sebagian field pada sebuah tabel. Aturan penulisan sintaks untuk memasukkan nilai record dengan insert into yaitu : INSERT INTO (,< nama_atribut2>, ....dst) VALUES (, , ....dst); Berikut merupakan contoh penggunaan sintaks insert into. 1. Memasukkan nilai atribut untuk atribut id, nama, dan nilai pada tabel peserta. Dimana nilai yang ingin dimasukkan id = 10, nama = ‘denaz’, nilai = 78. Maka sintaks yang harus dimasukkan, yaitu : Insert into peserta (id, nama, nilai) values (10, ‘denaz’, 78);
Kemudian untuk mengecek hasil record yang dimasukkan, ketik sintaks select* from peserta where id=10; (id=10 merupakan id dari record yang baru dimasukkan).
65
MODUL 1 BASIS DATA SPASIAL
2. Memasukkan nilai atribut untuk atribut id dan nama pada tabel peserta.Dimana nilai yang ingin dimasukkan id = 12 dan nama = ‘citra’. Maka sintaks yang harus dimasukkan, yaitu : Insert into peserta (id, nama) values (12, ‘citra’);
Kemudian untuk mengecek hasil record yang dimasukkan, ketik sintaks select* from peserta where id=12; (id=12 merupakan id dari record yang baru dimasukkan). Update Perintah UPDATE ini digunakan untuk merubah satu atau beberapa atribut ataupun record. Perubahan yang dilakukan tidak hanya bisa dilakukan pada nilai atribut, tetapi juga bisa digunakan untuk merubah cara penulisan nilai atribut. Aturan penulisan sintaks untuk memasukkan nilai record dengan update yaitu : UPDATE SET = [, = ] WHERE ; Berikut merupakan contoh penggunaan sintaks update : 1. Melakukan update pada tabel peserta dimana nilai atribut nilai untuk peserta dengan nama = ‘citra’, dari nilai yang masih kosong menjadi 88. Maka sintaks yang harus dimasukkan, yaitu : Update peserta set nilai=88 where nama=’citra’;
Kemudian untuk mengecek hasil record yang sudah di-‐update, ketik sintaks select* from peserta where nama=’citra’; . 2. Melakukan update pada tabel peserta dimana seluruh nilai field nama akan diubah penulisannya menjadi huruf besar atau huruf kapital. Maka sintaks yang harus dimasukkan, yaitu : Update peserta set nama = UPPER (nama);
66
MODUL 1 BASIS DATA SPASIAL
Kemudian untuk mengecek tabel setelah seluruh nilai atribut untuk atribut nama diubah menjadi huruf kapital, maka ketik sintaks select* from peserta; Delete Kita dapat menggunakan perintah DELETE untuk menghapus record atau baris. Aturan penulisan sintaks untuk menghapus record dengan delete yaitu : DELETE FROM WHERE ; Untuk menggunakan sintaks ini, kita tidak boleh lupa menuliskan kondisi, jika tidak maka seluruh record akan terhapus. Sebagai contoh, jika kita ingin menghapus record pada tabel peserta untuk peserta dengan id = 10. Maka sintaks yang harus dimasukkan, yaitu : Delete from peserta where id=10;
Kemudian untuk mengecek tabel setelah record untuk peserta dengan id = 10 dihapus, maka ketik sintaks select* from peserta; 2.3 Latihan Implementasi Bahasa SQL pada Model Data Relasional 2.3.1 Mengimplementasikan Model Data ER pada PostgreSQL Pada Materi I, kita telah membahas teori dasar Basis Data, mulai dari definisi basis data, DBMS, normalisasi, Model ER, hingga perancangan basis data. Disini kita akan mencoba mengimplementasikan model data ER yang telah kita buat pada latihan perancangan basis data Sistem Informasi Geografis Pariwisata Jawa Barat. Dimana didalamnya terdapat pembuatan model ER yang akan kita implementasikan dalam basis data PostgreSQL.
67
MODUL 1 BASIS DATA SPASIAL
Berikut merupakan Model Entity Relationship (ER-‐Model) untuk Sistem Informasi Geografis Pariwisata Jawa Barat. 1. Hubungan entitas Kabupaten dan Wisata : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa objek Wisata (n). § Satu objek Wisata (1) berada di sebuah kabupaten wilayah Jawa Barat (m). Kelas Keanggotaan : § Tidak setiap kabupaten di wilayah Jawa Barat memiliki objek Wisata, tetapi Objek Wisata pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : m n Kabupaten
memiliki
Wisata
2. Hubungan entitas Kabupaten dan Pusat Perbelanjaan : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Pusat Perbelanjaan (n). § Satu Pusat Perbelanjaan (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan : § Setiap kabupaten di wilayah Jawa Barat belum tentu memiliki Pusat Perbelanjaan, dan sebuah Pusat Perbelanjaan pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : 1 n Pusat Kabupaten memiliki Perbelanjaan 3. Hubungan entitas Kabupaten dan Pusat Kerajinan : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Pusat Kerajinan (n). § Satu Pusat Kerajinan (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan :
68
MODUL 1 BASIS DATA SPASIAL
Setiap kabupaten di wilayah Jawa Barat belum tentu memiliki Pusat Kerajinan, dan sebuah Pusat Kerajinan pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah non obligatory -‐ obligatory. Diagram ER : 1 n §
Kabupaten
memiliki
Pusat Kerajinan
4. Hubungan entitas Kabupaten dan Bank_ATM : Derajat hubungan/relasi : § Sebuah kabupaten di Jawa Barat (1) memiliki beberapa Bank/ATM (n). § Satu Bank/ATM (1) berada di sebuah kabupaten wilayah Jawa Barat (1). Kelas Keanggotaan : § Setiap kabupaten di wilayah Jawa Barat memiliki Bank/ATM, dan sebuah Bank/ATM pasti terletak di sebuah kabupaten wilayah Jawa Barat. § Hubungan kedua entitas ini adalah obligatory -‐ obligatory. Diagram ER : 1 n Kabupaten Bank_ATM memiliki 5. Hubungan entitas Kabupaten dan Fasilitas Umum Fasilitas Sosial (Fasum Fasos): Derajat hubungan/relasi : § Sebuah Kabupaten (1) memiliki banyak Fasum Fasos (n). § Seorang Fasum Fasos (1) terletak pada satu kabupaten (1). Kelas Keanggotaan : § Setiap Kabupaten pasti memiliki Fasum Fasos, dan setiap Fasum Fasos pasti terletak pada satu Kabupaten. § Hubungan kedua entitas ini adalah obligatory -‐ obligatory. Diagram ER : n m Kabupaten Fasum Fasos memiliki 6. Hubungan entitas Kabupaten dan Akomodasi : Derajat hubungan/relasi : § Sebuah Kabupaten (1) memiliki beberapa Akomodasi (n). § Satu Akomodasi (1) dimiliki satu Kabupaten (1). Kelas Keanggotaan : § Setiap Kabupaten pasti memiliki Akomodasi, dan sebuah Akomodasi belum tentu terdapat di Kabupaten. § Hubungan kedua entitas ini adalah obligatory – non obligatory. 69
MODUL 1 BASIS DATA SPASIAL
Diagram ER : 1 n Kabupaten Akomodasi memiliki 7. Hubungan entitas Wisata dan Rumah Makan : Derajat hubungan/relasi : § Sebuah objek Wisata (1) memiliki beberapa Rumah Makan (n). § Satu Rumah Makan (1) dimiliki satu objek Wisata (1). Kelas Keanggotaan : § Setiap objek Wisata belum tentu dimiliki Rumah Makan, dan sebuah Rumah Makan belum tentu terdapat di objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : 1 n Rumah_Ma Wisata memiliki kan 8. Hubungan entitas Wisata dan Transportasi : Derajat hubungan/relasi : § Sebuah objek Wisata (1) memiliki beberapa Transportasi (n). § Satu Transportasi (1) dimiliki satu objek Wisata (1). Kelas Keanggotaan : § Setiap objek Wisata belum tentu memiliki Transportasi, dan sebuah Transportasi belum tentu terdapat di objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : 1 n Wisata Transportas memiliki i 9. Hubungan entitas Wisata dan Jalur Transportasi : Derajat hubungan/relasi : § Sebuah objek Wisata (1) dapat diakses oleh beberapa Jalur Transportasi (n). § Satu Jalur Transportasi (1) dapat mengakses banyak objek Wisata (n). Kelas Keanggotaan : § Setiap objek Wisata belum tentu diakses oleh Jalur Transportasi, dan sebuah Jalur Transportasi belum tentu mengakses objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : n m Jalur Wisata memiliki Transportas i 70
MODUL 1 BASIS DATA SPASIAL
10. Hubungan entitas Transportasi Umum dan Jalur Transportasi : Derajat hubungan/relasi : § Sebuah Transportasi Umum (1) dapat melewati beberapa Jalur Transportasi (n). § Satu Jalur Transportasi (1) dapat dilewati banyak Transportasi Umum (n). Kelas Keanggotaan : § Setiap Transportasi Umum pasti melewati Jalur Transportasi, dan sebuah Jalur Transportasi belum tentu dilewati oleh Transportasi Umum. § Hubungan kedua entitas ini adalah obligatory – non obligatory. Diagram ER : n m Transportasi Jalur melewat Umum Transportas i i 11. Hubungan entitas Wisata dan Fasilitas Umum Fasilitas Sosial (Fasum Fasos): Derajat hubungan/relasi : § Sebuah Objek Wisata (1) memiliki banyak Fasum Fasos (n). § Seorang Fasum Fasos (1) terletak pada satu objek wisata (1). Kelas Keanggotaan : § Setiap Objek Wisata belum tentu memiliki Fasum Fasos, dan setiap Fasum Fasos belum tentu terletak pada satu Objek Wisata. § Hubungan kedua entitas ini adalah non obligatory – non obligatory. Diagram ER : n m Wisata Fasum Fasos memiliki Berdasarkan model ER di atas, maka kita harus membuat basis data dengan nama SIG_Pariwisata yang terdiri dari 5 tabel skeleton, yaitu : 1) Kabupaten (#id_kab, nm_kab, luas, geom) 2) Wisata (#kd_wisata, nm_objek, jenis, dy_tarik, fasility, skala, kondisi, geom) 3) Pusat_Belanja (#id_pusblj, kategori, nm_obyk, #id_kab, geom) 4) Pusat_Kerajinan (#id_puskrjn, kategori, nm_obyk, #id_kab, geom) 5) Bank_ATM (#id_bankatm, kategori, nm_bank, #id_kab, geom) 6) Fasum_Fasos (#id_fasumsos, kategori, nm_obyk, #id_kab) 7) Kabupaten_wisata (#kd_wisat, #id_kab) 8) Rumah_Makan (#id_rmh_mkn, nm_rmh_mkn, jenis_mkn, #kd_wisat, geom) 9) Akomodasi (#id_hotel, nm_hotel, kelas, fas, id_kab, geom) 10) Transportasi (#id_trans, nm_pool, jenis_trans, dy_penumpa, fas_trans #kd_wisata, geom) 71
MODUL 1 BASIS DATA SPASIAL
11) Jalur Transportasi (#id_jal, nm_jal, geom) 12) Jalur Transportasi_Wisata (#kd_wisat, #id_jal) 13) Jalur Transportasi_Transportasi Umum (#id_jal, #id_trans) 14) Fasum Fasos_Wisata (#id_fasumfasos, #kd_wisat) Membuat basis data Sekarang Anda akan mencoba membuat basis data terlebih dahulu dengan nama SIG_Pariwisata.Langkahnya adalah sebagai berikut : • Buka command prompt. • Kemudian pindah direktori dengan mengetikkan cd C:\Program Files\PostgreSQL\9.1\bin di command prompt. • Sekarang kita sudah bisa membuat basis data baru di PostgreSQL. Caranya dengan mengetikkan sintaks createdb –h localhost –U postgres . Anda dapat memverifikasi keberadaan basis data baru Anda dengan menggunakan sintaks : psql –h localhost –U postgres -‐l
Membuat tabel dalam basis data SIG_Pariwisata Sekarang Anda akan membuat tabel dalam basis data SIG_Pariwisata, dimana sintaks untuk membuat tabel yaitu : create table(<modifikasi1>, <modifikasi2>, ........dst); Berikut tabel-‐tabel non spasial yang harus dibuat dalam basis data SIG_Pariwisata dengan ketentuan sebagai berikut. ü Tabel Pusat_Belanja. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_pusblj Varchar(10) Primary key Not null 72
MODUL 1 BASIS DATA SPASIAL
Kategori Nm_obyk Id_kab Geom
Varchar(50) Varchar(50) Varchar(20) oid
-‐ -‐ Foreign key -‐
-‐ -‐ Not null -‐
ü Tabel Pusat_Kerajinan. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_puskrjn Varchar(10) Primary key Not null Kategori Varchar(50) -‐ -‐ Nm_obyk Varchar(50) -‐ -‐ Id_kab Varchar(20) Foreign key Not null Geom oid -‐ -‐ ü Tabel Bank_ATM. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_bankatm Varchar(10) Primary key Not null Kategori Varchar(50) -‐ -‐ Nm_obyk Varchar(50) -‐ -‐ Id_kab Varchar(20) Foreign key Not null Geom oid -‐ -‐ ü Tabel Fasum Fasos_Kabupaten. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_fasumsos Varchar(10) Primary key Not null Kategori Text -‐ -‐ Nm_obyk Varchar(50) -‐ -‐ Id_kab Varchar(10) Foreign key Not null Geom oid -‐ -‐ ü Tabel Wisata_Kabupaten. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Kd_wisat Varchar(10) Not null Id_kab Varchar(10) Not null ü Tabel Rumah_Makan. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_rm_mkn Varchar(10) Primary key Not null Nm_rm_mkn Varchar(50) -‐ -‐ jenis_rm Varchar(50) -‐ -‐ Kd_wisata Varchar(10) Foreign key Not null Geom oid -‐ -‐ ü Tabel Akomodasi. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi 73
MODUL 1 BASIS DATA SPASIAL
Id_hotel Varchar(10) Primary key Nm_hotel Varchar(50) -‐ Kelas Text -‐ Fas Varchar(50) -‐ Id_kab Varchar(10) Foreign key Geom oid -‐ ü Tabel Transportasi. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Id_trans Varchar(10) Primary key Nama_pool Varchar(50) -‐ Jenis_tran Text -‐ Dy_penumpa Varchar(50) -‐ Fas_trans xml -‐ Kd_wisata Varchar(10) Foreign key Geom oid -‐
Not null -‐ -‐ -‐ Not null -‐ Modifikasi Not null -‐ -‐ -‐ -‐ Not null -‐
ü Tabel Fasum Fasos_Wisata. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_fasumsos Varchar(10) Primary key Not null Kd_wisata Varchar(10) Foreign key Not null Geom oid -‐ -‐
ü Tabel Jalur Transportasi_Transportasi Umum. Field/kolom yang harus dibuat : Nama Field Tipe Data Contraint Modifikasi Id_jal Varchar(10) Primary key Not null Id_trans Varchar(10) Foreign key Not null Geom oid -‐ -‐ 2.3.2 Menambahkan Data ke Model Model yang telah dibuat, sekarang perlu diisi dengan data yang sesuai dengan maksud pembuatannya. Menambahkan data ke dalam tabel Untuk menambahkan data ke dalam tabel-‐tabel yang telah kita buat sebelumnya, kita harus menggunakan sintaks INSERT, dimana aturan penulisan sintaks insert yaitu : INSERT INTO (,< nama_atribut2>, ....dst) VALUES (, , ....dst); Terdapat beberapa hal yang perlu Anda perhatikan saat memasukkan nilai atribut ke dalam tabel : ü Setelah nama tabel (Rumah_Makan), Anda ketikkan nama field yang akan Anda isi (id_rmh_mkn). ü Kemudian setelah Anda mengetikkan values, masukkan daftar nilai field. 74
MODUL 1 BASIS DATA SPASIAL
ü Untuk atribut yang memiliki tipe data text, varchar, character, dan string, nilai field harus dikutip dengan menggunakan kutip tunggal. Misal untuk memasukkan nama kabupaten, maka ‘Bogor Barat’. ü Anda perhatikan bahwa kita tidak memasukkan nilai untuk kolom id dikarenakan nilai kolom id akan ditulis secara otomatis dan berurutan. ü Untuk field yang menjadi primary key harus bersifat unik dan tidak ada nilai yang kosong (null value). Anda harus melihat INSERT 0 1 jika Anda telah berhasil memasukkan nilai atribut ke dalam tabel. Anda dapat melihat hasil pemakaian insert dengan menampilkan semua data dalam tabel, misal : Select* from Rumah_Makan; Sekarang Anda coba gunakan perintah/sintaks INSERT untuk menambahkan record ke dalam tabel Rumah_Makan, Akomodasi, Transportasi. Memilih Data Pada pengenalan bahasa SQL, telah dijelaskan kepada Anda sintaks untuk memilih record. Mari kita melihat beberapa contoh berikut : Select nm_rm from Rumah_Makan; Select* from Akomodasi; Select* from Akomodasi where jns_akomodasi=’hotel’; Dalam sesi selanjutnya, akan dibahas lebih detail tentang cara memilih dan menyaring data. Memperbaharui Data Sekarang Anda akan mencoba meng-‐update data dimana sintaks yang digunakan yaitu : UPDATE SET = [, = ] WHERE ; Berhati-‐hatilah pada saat menggunakan pernyataan update tersebut, karena jika terdapat lebih dari 1 record yang sesuai dengan kondisi yang didefinisikan pada kata kunci WHERE, maka semua record yang sesuai akan diperbaharui secara otomatis. Solusi yang lebih baik adalah dengan menggunakan primary key dari tabel untuk menunjuk secara pasti pada record yang ingin di-‐update. Jika Anda berhasil melakukan update data, maka seharusnya Anda melihat UPDATE 1. Menghapus Data Pada saat memasukkan data, mungkin ada beberapa kali Anda melakukan kesalahan yang menyebabkan Anda perlu menghapus data yang Anda masukkan. Untuk kasus ini, Anda perlu menggunakan sintaks delete. 75
MODUL 1 BASIS DATA SPASIAL
Misal Anda ingin menghapus record pada tabel Rumah_Makan yang memiliki id_rm=10. Delete from Rumah_Makan where id_rm=10; Sekarang Anda lihat tabel Rumah_Makan : Select* from Rumah_Makan where id_rm=’rm10’; Maka akan muncul seperti gambar di bawah ini.
Kesimpulan Sekarang Anda telah mengetahui cara untuk menambahkan data ke dalam model basis data yang telah Anda buat sebelumnya. Harap diingat jika Anda ingin menambahkan jenis data baru, maka Anda perlu melakukan modifikasi dan/atau membuat model baru untuk menampung data baru tersebut. 2.3.3 Query Sekarang Anda akan mencoba melakukan query pada tabel. Mengurutkan hasil (ordering) Sekarang Anda akan mencoba melihat daftar nama fasilitasi trasnportasi (nm_fastrans) dari tabel Transportasi yang diurut berdasarkan jenis transportasi. Select* from Transportasi order by jns_transport; Menyaring hasil (filtering) Sering kali Anda tidak akan ingin melihat satu per satu semua record dalam basis data-‐ terutama jika terdapat ribuan record dan Anda hanya tertarik melihat satu atau dua saja. Anda dapat mengatasinya dengan melakukan filtering. Berikut contoh dari penyaringan atau filtering. Select nm_akomodasi, jns_akomodasi, alamat from Akomodasi where nm_kec=’Bogor Barat’; Kesimpulan Anda telah mencoba melakukan query yang digunakan untuk menghasilkan data dari basis data Anda sehingga Anda dapat menggali informasi yang berguna.
76
MODUL 1 BASIS DATA SPASIAL
MATERI 3 -‐ PostGIS 3.1 Pengantar PostGIS 3.1.1. Pengenalan PostGIS PostGIS adalah spatial extension untuk platformdatabase (spatial) PostgreSQL. Spatial Database dapat menyimpan dan mengelola (manipulation) objek-‐objek spasial, seperti halnya pengelolaan data pada Database umumnya. Aspek yang berkaitan dengan Spatial Database, mencakup: 1. Spatial Data Types; mengacu pada bentuk primitiv geometri: point, line, polygon. 2. Spatial Indexing; diterapkan untuk efisiensi proses operasi-‐operasi spasial. 3. Spatial Function; digunakan untuk proses query spasial, baik atribut objek maupun relasi antar objek spasial. Spatial Database (Geodatabase) merupakan evolusi terkini dari Arsitektur GIS, dimana objek spasial terintegrasi dengan data objek relasional database. Illustrasi berikut ini menunjukkan perkembangan evolusi Arsitektur GIS terkait paradigma penyimpanan dan pengelolaan data GIS, lihat Gambar di bawah ini.
Spatial Database memiliki tipe data bentukan, yaitu tipe data Geometry untuk mengelola dan menyajikan objek-‐objek spasial (geometri). Spatial ADT (Abstract Data Type) mengenkapsulasi struktur spasial, mencakup: boundary dan dimensi. Spatial ADT, selanjutnya dikenal juga sebagai objek shapes. Spatial ADT dikelompokkan secara hirarki dimana sub-‐type merupakan turunan dari type induknya yang mewarisi Atribut dan Properti (methode|functions) dari masing-‐ 77
MODUL 1 BASIS DATA SPASIAL
masing objek induknya. Illustrasi berikut ini menunjukkan hirarki objek Spatial ADT, lihat Gambar berikut ini.
Seperti halnya Database umum, spatial database memiliki metode pengindeksan untuk objek-‐objek spasial yang bermanfaat untuk mempercepat proses-‐proses spatial query, baik pencarian maupun pemilihan data, misal: objek mana saja yang berada di dalam suatu area bounding box tertentu. Bounding Box adalah kotak persegi yang memuat koordinat titik maksimum dan minimum yang mencakup objek-‐objek spasial yang dipilih.
Bounding Box digunakan untuk dapat menjawab apakah suatu objek terdapat di dalam objek yang lain. Objek dapat berbentuk geometri: polygon-‐polygon, line-‐ polygon, line-‐line. Metode spatialindex yang umum digunakan adalah R-‐tree, metode lainnya: Quadtrees dan grid-‐based indexes. Spatial Database menyediakan kumpulan Fungsi untuk menganalisis elemen geometrik, menentukan relasi antar objek, dan manipulasi geometri objek. Kumpulan fungsi tersebut dapat dikelompokkan kedalam 5 (lima) kategori, berikut ini: 1. Conversion;fungsi untuk mengkonversi objek-‐objek geometri dengan format data eksternal. 2. Management;fungsi yang mengelola informasi tentang tabel-‐tabel spasial dan Administrasi PostGIS. 3. Retrieval;fungsi yang memanggil kembali properti dan pengukuran-‐ pengukuran objek Geometri. 78
MODUL 1 BASIS DATA SPASIAL
4. Comparison;fungsi yang membandingkan antara dua objek Geometri mengacu pada relasi spasial diantar kedua objek geometri tersebut. 5. Generation; fungsi untuk membuat atau menghasilkan objek Geometri baru dari objek yang sudah ada. 3.1.2 Instalasi PostGIS Instalasi PostGIS dapat dilakukan saat instalasi PostgreSQL atau terpisah; setelah PostgreSQL, tergantung pada sumber installer dan OperatingSystem yang digunakan. Saat ini, sudah banyak site yang menyediakan paket installer PostgreSQL/PostGIS. Oleh karena PostGIS adalah ekstensi dari PostgreSQL maka terlebih dahulu harus dilakukan instalasi PostgreSQL. Instalasi dengan Operating System MS-‐Windows, sumber dapat diperoleh dari: http://postgis.refractions.net/download/windows/pg92/postgis-‐pg92-‐setup-‐2.0.1-‐ 1.exe Tahapan instalasi PostGIS dengan paket installer seperti sumber tersebut di atas, sebagai berikut: 1. Double Click file installer, klik I Agree
2. Muncul dialog Choose Component, klik Next
79
MODUL 1 BASIS DATA SPASIAL
3. Muncul dialog Choose Install Location, klik Next
4. Muncul dialog Database Connection, isi: User, Password; sesuaikan dengan saat instalasi PostgreSQL dilakukan, klik Next
80
MODUL 1 BASIS DATA SPASIAL
5. Muncul dialog Database Name, klik Install
6. Muncul dialog progres Installing, tunggu sampai dengan selesai proses instalasi
7. Muncul dialog Installation Complete, klik Close
81
MODUL 1 BASIS DATA SPASIAL
3.2 Manajemen Data Spasial di PostGIS 3.2.1 Membuat Geodatabase Pengelolaan database PostgreSQL/PostGIS dapat dilakukan dengan bantuan (tools) Database Manager for PostgreSQL, misal: pgAdmin III. Untuk membuat Geodatabase, terlebih dahulu lakukan create database (PostgreSQL) selanjutnya tambahkan ekstensi PostGIS. Penambahan ekstensi PostGIS dapat dilakukan dengan cara, seperti uraian berikut ini. Menggunakan createlang plpgsql Langkah-‐langkahnya adalah sebagai berikut: 1. Jalankan aplikasi pgAdmin III 2. Lakukan koneksi ke Server Database (user, password)
3. Membuat database baru (create database)
82
MODUL 1 BASIS DATA SPASIAL
4. Lakukan koneksi ke database yang baru dibuat 5. Aktifkan jendela SQL Editor 6. Menambahkan ekstensi spasial (PostGIS) ke database tersebut, caranya: • Eksekusi file: postgis.sql • Eksekusi file: spatial_ref_sys.sql
83
MODUL 1 BASIS DATA SPASIAL
7. Periksa hasil eksekusi 2 file sql tersebut; yang akan menghasilkan: • tabel Metadata, yaitu: geometry_columns dan spatial_ref_sys • terdapat 2 indeks, yaitu: pk_geometry_columns dan pk_spatial_ref_sys • tambahan fungsi-‐fungsi spasial dan tipe data spatial (geometry)
Menggunakan Template PostGIS Langkah-‐langkahnya adalah sebagai berikut: 1. Jalankan aplikasi pgAdmin III 2. Lakukan koneksi ke Server Database (user, password) 3. Membuat database baru (create database) 4. Muncul dialog New Database, setting properti Template isikan dengan template_postgis
84
MODUL 1 BASIS DATA SPASIAL
5. Lakukan koneksi ke database yang baru dibuat 6. Periksa hasil langkah 4; yang akan menghasilkan: • tabel Metadata, yaitu: geometry_columns dan spatial_ref_sys • terdapat 2 indeks, yaitu: pk_geometry_columns dan pk_spatial_ref_sys • tambahan fungsi-‐fungsi spasial dan tipe data spatial (geometry) 3.2.2 Pengelolaan Data Vektor Setelah Geodatabase terbangun maka selanjutnya kita sudah siap untuk menggunakan Geodatabase tersebut sebagai Spatial DBMS. Pada sub bab ini akan diuraikan tentang pengelolaan data GIS, khususnya format Vektor, mulai dari: memasukan dan menampilkan data, membuat indeks, dan operasi-‐operasi query spasial. Objek Geometry, OGC Simple Feature for SQL Untuk dapat mengelola data GIS dengan tepat maka perlu difahami tentang format objek geometry yang didukung oleh platform Spatial Database. PostGIS mendukung sepenuhnya pengelolaan data dengan format standard yang diterbitkan resmi oleh OGC (OpenGIS Consortium). Lembaga OGC mendefinisikan objek geometri sebagai “Simple Feature” yang dispesifikasikan dalam dokumen “Simple Feature Specification for SQL”. OGC mendefinisikan format standard objek geometri kedalam 2 (dua) format, yaitu: WKT (Well-‐Known Text) dan WKB (Well-‐Known Binary). Contoh format WKT, seperti pada illustrasi di bawah ini. • POINT(0 0) • LINESTRING(0 0,1 1,1 2) • POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) • MULTIPOINT(0 0,1 2) • MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4)) • MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-‐1 -‐1,-‐1 -‐2,-‐2 -‐2,-‐2 -‐1,-‐1 -‐1))) • GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4)) Selain itu, OGC juga mendefinisikan spatial reference system identifier (SRID), dimana SRID ini diperlukan ketika membuat objek spasial yang akan dimasukkan ke database. Input/Output untuk format tersebut dapat juga dituliskan seperti berikut ini. bytea WKB = ST_AsBinary(geometry); text WKT = ST_AsText(geometry); geometry = ST_GeomFromWKB(bytea WKB, SRID); geometry = ST_GeometryFromText(text WKT, SRID);
85
MODUL 1 BASIS DATA SPASIAL
Sebagai contoh, statement insert untuk memasukan objek spasial OGC, ditulis sebagai berikut. INSERT INTO geotable ( the_geom, the_name ) VALUES ( ST_GeomFromText(’POINT(-‐126.4 45.32)’, 312), ’A Place’); Tipe Data Geography Untuk data spasial yang menggunakan sistem koordinat geodetik (Lintang, Bujur), PostGIS menyediakan tipe data spasial baru, yaitu: Geography. Beda antara tipe Geometry dengan Geography adalah bahwa Geometry memperlakukan objek berada pada bidang datar sehingga untuk operasi-‐operasi matematis dapat diterapkan matematika kartesian dan vektor garis lurus. Sedangkan tipe Geography; objek spasial berada pada bidang lengkung/bola (spheroid) dan unit ukuran yang digunakan adalah dalam derajat. Saat ini, tipe Geography baru diterapkan untuk objek spasial yang menggunakan sistem WGS 84 long lat (SRID:4326). Objek spasial Geometry yang menggunakan SRID:4326 akan dikonversi menjadi tipe Geography. Berikut ini illustrasi penerapan tipe Geography. CREATE TABLE testgeog(gid serial PRIMARY KEY, the_geog geography(POINT,4326) ); CREATE TABLE global_points ( id SERIAL PRIMARY KEY, name VARCHAR(64), location GEOGRAPHY(POINT,4326) ); INSERT INTO global_points (name, location) VALUES (’Town’, ST_GeographyFromText(’SRID=4326;POINT(-‐110 30)’) ); INSERT INTO global_points (name, location) VALUES (’Forest’, ST_GeographyFromText(’SRID=4326;POINT(-‐109 29)’) ); INSERT INTO global_points (name, location) VALUES (’London’, ST_GeographyFromText(’SRID=4326;POINT(0 49)’) ); Membuat Table Spatial Untuk membuat Table Spatial dapat dilakukan dalam satu tahapan. Illustrasi berikut ini adalah membuat table spatial (roads), dimana tabel tersebut memuat objek geometri linestring 2 dimensi dengan SRID: WGS 84 long lat. CREATE TABLE ROADS ( ID int4, ROAD_NAME varchar(25), geom geometry(LINESTRING,4326) ); Untuk memodifikasi struktur tabel gunakan perintah standard ALTER TABLE, seperti illustrasi berikut. ALTER TABLE roads ADD COLUMN geom2 geometry(LINESTRINGZ,4326); Selain itu, membuat Table Spatial juga dapat dilakukan dengan 2 tahapan, sebagai berikut: 86
MODUL 1 BASIS DATA SPASIAL
1. Buat tabel normal Non Spatial CREATE TABLE ROADS ( ID int4, ROAD_NAME varchar(25) ) 2. Tambahkan kolom ( field) baru (geometry) pada tabel tersebut dengan menggunakan fungsi “AddGeometryColumn” AddGeometryColumn( <schema_name>, , , <srid>, , ) SELECT AddGeometryColumn(’public’, ’roads’, ’geom’, 423, ’LINESTRING’, 2) SELECT AddGeometryColumn( ’roads’, ’geom’, 423, ’LINESTRING’, 2) Illustrasi berikut ini adalah membuat tabel baru dan menambahkan field geometry dan SRID=128. CREATE TABLE parks ( park_id INTEGER, park_name VARCHAR, park_date DATE, park_type VARCHAR ); SELECT AddGeometryColumn(’parks’, ’park_geom’, 128, ’MULTIPOLYGON’, 2 ); Illustrasi lain, menggunakan tipe Geometry yang generik dan SRID default. CREATE TABLE roads ( road_id INTEGER, road_name VARCHAR ); SELECT AddGeometryColumn( ’roads’, ’roads_geom’, 0, ’GEOMETRY’, 3 ); Illustrasi berikut ini, SQL statement membuat Table Spatial yang dieksekusi pada SQL Editor.
87
MODUL 1 BASIS DATA SPASIAL
Memuat Data Vektor (Loading Spatial Data) Setelah berhasil membuat Table Spatial, selanjutnya kita siap untuk meng-‐upload data GIS ke tabel tersebut. Saat ini, ada 2 (dua) cara untuk memasukkan data kedalam database PostgreSQL/PostGIS, yaitu: menggunakan format statement SQL atau dengan loader/dumper Shape file. Menggunakan SQL Syntax: INSERT INTO [table][fields] VALUES () Contoh berikut adalah memuat data GIS menggunakan format SQL. BEGIN; INSERT INTO roads (road_id, roads_geom, road_name) VALUES (1,ST_GeomFromText(’LINESTRING(191232 243118,191108 243242)’,-‐1),’Jeff Rd’); INSERT INTO roads (road_id, roads_geom, road_name) VALUES (2,ST_GeomFromText(’LINESTRING(189141 244158,189265 244817)’,-‐ 1),’Geordie Rd’); INSERT INTO roads (road_id, roads_geom, road_name) VALUES (3,ST_GeomFromText(’LINESTRING(192783 228138,192612 229814)’,-‐ 1),’Paul St’); INSERT INTO roads (road_id, roads_geom, road_name) VALUES (4,ST_GeomFromText(’LINESTRING(189412 252431,189631 259122)’,-‐ 1),’Graeme Ave’); INSERT INTO roads (road_id, roads_geom, road_name) VALUES (5,ST_GeomFromText(’LINESTRING(190131 224148,190871 228134)’,-‐ 1),’Phil Tce’); INSERT INTO roads (road_id, roads_geom, road_name) VALUES (6,ST_GeomFromText(’LINESTRING(198231 263418,198213 268322)’,-‐ 1),’Dave Cres’); COMMIT; 88
MODUL 1 BASIS DATA SPASIAL
Menggunakan Loader PostGIS menyediakan fungsi shp2pgsql; merupaka data loader untuk mengkonversi objek spasial format ESRI Shapefile kedalam format SQL yang sesuai untuk transaksi insert data kedalam database PostgreSQL/PostGIS, baik tipe Geometry maupun Geography. Illustrasi berikut ini menunjukkan syntax memuat data GIS dengan menggunakan data loader fungsi shp2pgsql.Hasil dari data loader disimpan sebagai file *.sql yang siap dieksekusi pada SQL Editor menggunakan aplikasi Database Manager; pgAdmin III.
Menampilkan Data Vektor (Retrieving Spatial Data) Data GIS yang sudah disimpan di Geodatabase dapat dipanggil kembali. Untuk menampilkan kembali data tersebut dapat dilakukan, baik dengan format SQL maupun shape file loader/dumper. Menggunakan SQL Syntax: SELECT [fields] FROM [table] ASTEXT(geometry_field); format WKT ASBINARY(geometry_field); format WKB Contoh berikut adalah menampilkan data GIS menggunakan statement SQL; format WKT dan WKB.
89
MODUL 1 BASIS DATA SPASIAL
Menggunakan Dumper Syntax: pgsql2shp [] [<schema>.]
pgsql2shp [] Option dari commandline tersebut, adalah: -‐f nama file untuk menyimpan data. -‐h nama host koneksi ke database. -‐p <port>port ke host koneksi database. -‐P <password>password koneksi database. -‐u <user>username koneksi ke database. 90
MODUL 1 BASIS DATA SPASIAL
-‐g nama field geometry. -‐bmenggunakan cursor biner. -‐rRaw mode. Do not drop the gid field, or escape column names. -‐dFor backward compatibility: write a 3-‐dimensional shape file when dumping from old (pre-‐1.0.0) postgis databases (thedefault is to write a 2-‐dimensional shape file in that case). Starting from postgis-‐1.0.0+, dimensions are fully encoded. Membuat Indeks Data Vektor (Building Indexes) Penggunaan indeks dimaksudkan untuk mempercepat proses pencarian. Tanpa menggunakan indeks maka pencarian akan dilakukan secara sekuensial di setiap record database. Hal ini akan sangat lambat jika sudah melibatkan data spasial dalam ukuran yang sangat besar. Oleh karena itu, indeks diterapkan untuk efisiensi pencarian dengan mengorganisasi data kedalam suatu tree pencarian yang mana akan mempercepat penelusuran untuk menemukan record data tertentu sesuai kriteria pencarian. PostgreSQL mendukung 3 (tiga) jenis Indeks, yaitu: 1. B-‐Trees are used for data which can be sorted along one axis; for example, numbers, letters, dates. GIS data cannot be rationallysorted along one axis (which is greater, (0,0) or (0,1) or (1,0)?) so B-‐Tree indexing is of no use for us. 2. R-‐Trees break up data into rectangles, and sub-‐rectangles, and sub-‐sub rectangles, etc. R-‐Trees are used by some spatialdatabases to index GIS data, but the PostgreSQL R-‐Tree implementation is not as robust as the GiST implementation. 3. GiST (Generalized Search Trees) indexes break up data into "things to one side", "things which overlap", "things which areinside" and can be used on a wide range of data-‐types, including GIS data. PostGIS uses an R-‐Tree index implemented on topof GiST to index GIS data. Syntax untuk menambahkan indeks pada field Geometry: CREATE INDEX [indexname] ON [tablename] USING GIST ( [geometryfield] ); Syntax di atas, secara default, akan membuat indeks 2 Dimensi, untuk indeks yang n-‐ Dimensi, syntax: CREATE INDEX [indexname] ON [tablename] USING GIST ([geometryfield] gist_geometry_ops_nd); Spatial Query (Spatial SQL) Penggunaan indeks akan sangat terasa pada saat unjuk kerja dalam melakukan proses query spasial. Sebagai contoh; berikut ini terdapat 2 table spasial, yaitu: jalan (roads) dan kabupaten (municipality), dimana jalan direpresentasikan sebagai geometri linestring (garis) dan kabupaten dengan geometri polygon (area). 91
Berikut ini adalah beberapa contoh Spatial Query. 1. Berapa total panjang jalan (dalam Kilometer)? SELECT sum(ST_Length(the_geom))/1000 AS km_roads FROM bc_roads; km_roads -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ 70842.1243039643 (1 row) 2. Berapa luas kabupaten “XXX” (dalam Hektar)? SELECT ST_Area(the_geom)/10000 AS hectares FROM bc_municipality WHERE name = ‘XXX’; hectares -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ 32657.9103824927 (1 row) Contoh lain: Berapa total panjang jalan yang melewati setiap kabupaten.
92
MODUL 1 BASIS DATA SPASIAL
3.3 Aplikasi Desktop GIS (QuantumGIS) Untuk menampilkan data spasial dari database PostgreSQL/PostGIS dapat digunakan perangkat lunak Desktop GIS freeware, yaitu: QuantumGIS (QGis). Dengan QGis ini kita dapat melakukan operasi-‐operasi spasial, seperti: query, analisis, lay out, editing, dll. Untuk menampilkan data PostGIS di QGis, caranya adalah: 1. Jalankan aplikasi Quantum GIS 2. Menu: Layer > Add PostGIS layer
93
MODUL 1 BASIS DATA SPASIAL
3. Definisikan koneksi database
4. Lakukan koneksi database 5. Add Layer (Spatial Table) 6. Layer akan ditampilkan pada panel MapViewer
94
MODUL 1 BASIS DATA SPASIAL
3.4 Latihan Implementasi PostGIS pada Basis Data Spasial 3.4.1 Penyusunan Tabel Spasial Sekarang Anda akan mencoba membuat tabel spasial dari data shapefile Jawa Barat dengan batas administrasi kabupaten dan objek wisata di Jawa Barat. Anda akan membuatnya langsung di PgAdmin. Ikuti langkah di bawah ini untuk membuat tabel spasial. 95
MODUL 1 BASIS DATA SPASIAL
1. Buka PgAdmin. Kemudian lakukan expand pada server PostgreSQL hingga ke fitur objek Tables. 2. Kemudian pilih menu Plugins, dan pilih PostGIS Shapefile and DBF loader 2.0
3. Selanjutnya akan muncul window PostGIS Shapefile Import/Export Manager yang akan kita gunakan untuk meng-‐import data shp ke dalam basis data. Pilih tab Import, lalu tekan tombol Add File untuk memilih data yang ingin di-‐import.
4. Selanjutnya Anda lakukan pencarian data yang dibutuhkan ke direktori tempat data disimpan, kemudian pilih Jabar_Kabu.shp. Klik Open.
96
MODUL 1 BASIS DATA SPASIAL
5. Klik Import. Hasilnya dapat kita lihat di basis data SIG_Pariwisata, seperti gambar di bawah ini
3.4.2 Preview Data Spasial dari Basis data Spasial Kita akan mencoba melihat preview data spasial shp yang baru kita impor ke dalam DBMS PostgreSQL/PostGIS. Caranya dengan mengikuti langkah berikut. 1. Buka Quantum GIS. Kemudian pilih tombol Add PostGIS Layer seperti gambar di bawah ini.
97
MODUL 1 BASIS DATA SPASIAL
2. Selanjutnya, atur koneksi terlebih dahulu ke basis data SIG_Pariwisata yang disimpan di DBMS PostgreSQL/PostGIS. Tekan tombol Baru atau New (tergantung setting bahasa yang digunakan). Kemudian atur koneksi.
3. Setelah melakukan pengaturan koneksi, lakukan tes koneksi terlebih dahulu untuk memastikan Quantum GIS dapat terkoneksi dengan PostGIS. Pastikan terlihat seperti gambar di bawah ini.
98
MODUL 1 BASIS DATA SPASIAL
4. Sekarang setelah membuat pengaturan koneksi, selanjutnya kita lakukan koneksi ke basis data SIG_Pariwisata dengan menekan tombol Koneksikan atau Connect. Dan jika berhasil terkoneksi, maka akan muncul data spasial di dalam skema seperti gambar di bawah ini.
5. Selanjutnya, untuk menampilkan data spasial yang sudah terkoneksi, lakukan select pada data yang ingin ditampilkan, kemudian pilih tombol Add. Maka data spasial jabar_kab pun akan muncul di aplikasi desktop Quantum GIS.