You are on page 1of 32

BASIS DATA SPASIAL LANJUT

Dosen : Ir. Djurdjani., MS., M.Eng., Ph.D.

“RESUME CHAPTER 3: SPATIAL QUERY LANGUAGE”

Oleh:
Herlina
18/434759/PTK/12322

Program Studi Magister Teknik Geomatika


Fakultas Teknik
Universitas Gadjah Mada
Yogyakarta
2019
DAFTAR ISI

BAHASA QUERY SPASIAL ........................................................................................................................ 2


3.1. STANDARD BAHASA QUERY DATABASE ......................................................................................... 3
3.1.1. Dunia Database ........................................................................................................................ 3
3.2. RELATIONAL ALGEBRA (RA) ............................................................................................................ 5
3.2.1. Select dan Project Operations ................................................................................................. 5
3.2.2. Set Operations.......................................................................................................................... 7
3.2.3. Join Operation .......................................................................................................................... 8
3.3. BASIC SQL PRIMER ........................................................................................................................ 10
3.3.1 DDL ........................................................................................................................................... 10
3.3.2 DML .......................................................................................................................................... 11
3.3.3. Syntax dasar dari Query SQL.................................................................................................. 12
3.3.4 Contoh Query di SQL ............................................................................................................... 12
3.3.5 Rangkuman RA dan SQL .......................................................................................................... 16
3.4. MEMPERLUAS SQL UNTUK DATA SPASIAL .................................................................... 16
3.4.1. Standar OGIS untuk memperluas SQL ................................................................................... 17
3.4.2 Batasan standar....................................................................................................................... 19
3.5.CONTOH QUERY YANG MENEKANKAN PADA ASPEK SPASIAL ..................................................... 19
3.6. TRENDS : OBJECT-RELATIONAL SQL .............................................................................................. 24
3.6.1. Sekilas tentang SQL3 ............................................................................................................. 24
3.6.2. Object-relational schema ....................................................................................................... 25
3.6.3. Contoh Query ......................................................................................................................... 27
3.7. RANGKUMAN ..................................................................................................................... 28
3.8. LAMPIRAN : DATABASE STATE PARK ............................................................................ 29
3.8.1 Contoh Query Dalam RA ............................................................................................................ 30

1
BAHASA QUERY SPASIAL
Bahasa query (Query language) merupakan suatu bahasa yang menyediakan fasilitas
bagi user untuk mengakses informasi dari basis data. Bahasa query merupakan syarat pokok
dari sebuah DBMS. Bahasa query, merupakan sarana utama berinteraksi dengan database.
Bahasa query komersial yang populer dalam sistem manajemen basisdata relasional ( RDBMS)
adalah SQL. SQL sebagian didasarkan pada bahasa query formal yaitu relational algebra (RA),
bahasa query ini mudah digunakan, mudah dipahami dan serbaguna. Karena SDBMS adalah
contoh dari DBMS yang dapat dikembangkan dan mampu menangani data spasial serta data
non spasial, maka penggunaan ekstensi SQL diperlukan untuk menggabungkan data-data
spasial. Data spasial sangat kompleks melibatkan poligon garis, titik dan model relasional,
serta diarahkan untuk menangani tipe data sederhana seperti bilangan (integer), strings,
dates dan sebagainya.

Dibangun dari pemrograman berbasis object-oriented, seperti tipe dan data yang
ditentukan oleh pengguna, fungsi turunan, telah ditemukan aplikasi langsung dalam
pemodelan data yang kompleks. Meluasnya penggunaan model relasional dan SQL untuk
aplikasi yang melibatkan tipe data sederhana dan dikombinasikan dengan fungsionalitas
model berbasis object-oriented telah menyebabkan lahirnya paradigma baru “hybrid” untuk
sistem database, yaitu OR-DBMS.

Fitur unik dari data spasial adalah media “natural” yang digunakan untuk berinteraksi
dengan pengguna lebih pada visual daripada secara tekstual. Bahasa query spasial apapun
harus mampu mendukung komponen grafis-visual yang canggih. Karena itu, fokus pada bab
ini adalah non graphical spatial extentions SQL. Di bab 3.1 akan memperkenalkan dunia
basidata, dimana ini akan menjadi dasar dari semua contoh query dalam bab 3. Pada bab 3.2
dan 3.3 akan memberikan gambaran singkat tentang RA dan SQL. Bab 3.4 dikhususkan untuk
membahas persyaratan spasial dalam memperluas SQL, juga memperkenalkan standar OGIS
untuk memperluas SQL dalam data geospasial. Pada bab 3.5 akan menunjukkan bagaimana
query spasial umum dapat ditulis dalam SQL. Pada bab 3.6, kami akan memperkenalkan SQL3
dan Oracle8 sebagai implementasi subset dari SQL3.

2
3.1. STANDARD BAHASA QUERY DATABASE
Pengguna berinteraksi dengan data yang disimpan dalam DBMS dengan menggunakan
bahasa query. Tidak seperti bahasa pemrogaman klasik, bahasa query database relatif mudah
dipelajari dan digunakan. Pada bagian ini dijelaskan dua bahasa query. Yang pertama RA
(Relational Algebra) , lebih formal, dan biasanya tidak diimplementasikan dalam komersial
database. Pentingnya RA terletak pada kenyataan bahwa RA merupakan inti dari SQL, bahasa
query basis data yang paling populer dan banyak diimplementasikan.

3.1.1. Dunia Database


Kami memperkenalkan RA dan SQL dengan bantuan contoh sebuah database. Kami
memperkenalkan contoh suatu database baru dengan memberikan variasi/ keragaman
dalam contoh dan latihan. Dunia database terdiri dari 3 entitas yaitu Country, City, dan
River. ER diagram yang disempurnakan dengan piktogram dari contoh database dan
tabel masing-masing diperlihatkan dalam gambar 3.1 dan tabel 3.1. skema database
ditunjukkan pada gambar dibawah ini. Atribut yang digarisbawahi adalah primary key,
misalnya Name adalah primary key dalam tabel Country, tabel City , dan Tabel River.

3
Entitas Country mempunyai 6 atribut. Nama dari negara (Name) dan benua (Cont) tabel
Country adalah character strings dengan panjang maksimum 35. Populasi ( Pop) dan
Gross Domestic Product ( GDP) menggunakan tipe integer. GDP adalah total nilai total
barang dan jasa yang diproduksi di suatu negara dalam satu tahun anggaran. Atribut
Life-Exp mewakili harapan hidup per tahun yang dibulatkan dalam nilai bilangan integer
untuk penduduk suatu negara. Geometry dari Country direpresentasikan dalam kolom
Shape ( tabel 3.1). Dalam database relasional, dimana tipe data yang dimiliki terbatas,
Atribut shape adalah foreign key tabel. Dalam Object-relational atau database yang
berbasis object-oriented, atribut Shape akan menjadi poligon abstract datatype (ADT).
Karena untuk saat ini tujuan kami adalah memperkenalkan dasar RA dan SQL, kami tidak
akan melakukan query pada atribut Shape sampai bagian 3.4.

Tabel City mempunyai 5 atribut, Name, Country, Pop, Capital dan Shape. Atribut
Country adalah foreign key pada tabel Country. Capital mempunyai tipe Character
dengan panjang 1, City adalah ibukota negara atau suatu kota dalam negara tersebut.
Atribut Shape adalah foreign key pada tabel. Adapun dalam Country relation tidak akan
kami lakukan query dalam kolom Shape sebelum belajar tentang tipe data OGIS untuk
SQL3.

4
Tabel River mempunyai 4 atribut yaitu Name, Origin, Length, dan Shape. Atribut Origin
adalah foreign key pada tabel country dan menentukan negara asal sungai tesebut.
Atribut Shape adalah foreign key pada tabel. Untuk menentukan negara asal sungai,
informasi geometris yang ditentukan dalam atribut Shape tidak cukup. Overload nama
di seluruh tabel dapat diatasi dengan penggunaan atribut yang memenuhi syarat
dengan membuat tabel yang menggunakan dot notation seperti table.attribute.
Country.Name, City.Name dan River.Name secara unik mengidentifikasi atribut Name
dalam tabel yang berbeda. Kita juga membutuhkan informasi tentang arah aliran
sungai. Dalam bab 7 kita akan membahas query spatial networks dimana informasi arah
menjadi sangat penting.

3.2. RELATIONAL ALGEBRA (RA)


RA adalah bahasa query formal yang terkait dengan model relasional. Algebra (aljabar)
adalah struktur matematika yang terdiri dari dua set unsur yang berbeda yaitu (Ωa , Ωo).
Ωa adalah himpunan operands dan Ωo adalah himpunan operations. Algebra harus
memenuhi banyak aksioma, tetapi yang paling penting adalah bahwa hasil operasi dari
operan harus tetap dalam Ωa. Contoh sederhana dari algebra adalah himpunan /
kumpulan integers. Operands adalah integers (bilangan bulat) dan Operations adalah
penjumlahan dan perkalian. Dalam bab 8 kita akan membahas jenis algebra lain yang
terkait dengan objek raster dan image.
Dalam RA hanya ada satu jenis operands dan enam jenis operations dasar. Operands nya
adalah relation ( tabel), dan 6 jenis operations dasarnya adalah select, project, union,
cross-product, difference, dan intersection. Sekarang kami akan memperkenalkan
beberapa operasi dasar secara rinci.

3.2.1. Select dan Project Operations


Untuk memanipulasi data dalam satu relasi, RA menyediakan dua operasi yaitu select
dan project. Operasi select adalah mengambil bagian dari baris dalam tabel relasional,
dan project adalah mengekstrak bagian dari kolom dalam tabel relasional. Misalnya
untuk membuat list semua negara di tabel Country yang berada di North-America (
NAM), digunakan expression aljabar relasional berikut :

5
Hasil dari operasi ini ditunjukkan pada tabel 3.2(a). Baris yang diambil oleh operasi
select σ, ditentukan oleh operasi seleksi perbandingan, yang dalam contoh ini adalah
cont = ‘North-America’. Skema relasi input tidak diubah oleh operasi select. Sintaks
formal dari operasi select adalah sebagai berikut :

Subset kolom untuk semua baris dalam suatu relasi diekstraksi dengan menerapkan
operasi project, . Misalnya untuk mengambil nama semua negara yang tercantum
dalam tabel Country, kami menggunakan expression berikut :

Sintak formal dari operasi Project adalah sebagai berikut :

Kita bisa menggabungkan operasi select dan project. Expression nya menghasilkan
nama-nama negara di North America. Hasil bisa diliat pada tabel 3.2 (c).

6
3.2.2. Set Operations
Pada level yang paling mendasar, relasi adalah suatu himpunan ( set). Dengan demikian
semua operasi yang ditetapkan adalah operasi yang valid dalam relational algebra (RA).
Operasi himpunan diterapan pada relasi union-compatible. Dua relasi disebut union-
compatible apabila memiliki jumlah kolom yang sama, berbagi domain yang sama, dan
jika kolom muncul dalam urutan yang sama dari kiri ke kanan.

 Union :
Jika R dan S adalah suatu relasi, maka R U S mengembalikan semua tuples/record
yang ada dalam R atau S. Sebagai suatu contoh kita dapat menggunakan operasi
union untuk membuat list negara-negara yang ada di North America atau asal
mula sungai di North America :

Hasil operasi relation ditunjukkan pada tabel 3.4 (a). Perhatikan bahwa atribut
R.Name dan S.Origin memiliki domain yang sama, sebagaimana R.Origin
merujuk ke Country.Name. Ini cukup untuk R dan S dikatakan sebagai union-
compatible.
 Difference :
R – S mengembalikan semua record dalam R yang tidak berada di dalam S. Dapat
menggunakan Operasi difference, misalnya untuk membuat daftar semua
negara di North America yang tidak memiliki asal mula sungai ( tercantum dalam
tabel River). Hasil dari relasi ditunjukkan pada tabel 3.4 (b) .

 Intersection :
Untuk dua relasi union-compatible R dan S, operasi intersection mengembalikan
semua record yang ada baik di dalam R maupun S. Perhatikan bahwa operasi ini,
meskipun mudah, ini redundant : dapat diturunkan dari operasi different

Untuk membuat list negara-negara yang berada di South

7
America, dan juga memiliki asal mula sungai, kami menggunakan operasi
Intersection, hasilnya ditunjukkan pada tabel 3.4 (c).

 Cross-Product :
Operasi ini berlaku untuk setiap pasangan relasi, bukan hanya relasi union-
compatible. R x S mengembalikan relasi yang skemanya berisi semua atribut R
diikuti oleh atribut S. Untuk mempermudah, contoh abstrak ditunjukkan pada
tabel 3.3. Perhatikan penggunaan notasi titik ( . ) untuk membedakan atribut
dari dua relasi.

3.2.3. Join Operation


Operasi select dan project berguna untuk mengekstraksi informasi dari suatu hubungan
tunggal (single relation). Operasi join digunakan untuk query di berbagai tabel
relasional. Operasi join dapat dianggap sebagai operasi cross-product yang diikuti
dengan operasi select. Operasi join umumnya disebut dengan Conditional Join. Untuk
kasus yang penting atau khusus dari suatu Conditional Join disebut dengan Natural Join.

 Conditional Join
Secara umum conditional join antara dua buah relasi R dan S dinyatakan sebagai

berikut :
8
Kondisi c biasanya mengacu pada atribut dari R dan S. Sebagai contoh, kita dapat
menggunakan operasi join untuk query nama-nama negara yang memiliki
populasi penduduk yang lebih banyak daripada Mexico ( lihat tabel 3.5 ).

Berikut ini adalah rule dalam conditional joins :

3. Membuat Cross-product R x S. Skema dari relasi R x S adalah sebagai berikut


:

4. Berlaku kondisi populasi suatu negara dalam relasi S lebih besar daripada
populasi
Di Mexico.

 Natural Join
Kasus spesial yang penting dari conditional join adalah natural join. Dalam
natural join, hanya kondisi equality (kesetaraan) seleksi yang diterapkan pada
atribut dari dua buah relasi, dan hanya satu kolom dari hasil yang mewakili
atribut equi-join. Misalnya, natural join dapat digunakan untuk menemukan

9
populasi negara-negara dimana sungai itu berasal. Langkah-langkahnya adalah
sebagai berikut :
1. Ubah nama hubungan Negara C dan Hubungan Sungai R.
2. Formulir cross-produk C x R.
3. Gabungkan (join) dua relasi pada atribut C.Name dan R.Origin. Domain dua
atribut ini identik,

4. Dalam natural join, kondisi seleksi tidak ambigu; oleh karena itu, tidak harus
secara eksplisit dicantumkan dalam formula join.
5. Hasil akhir diperoleh dengan memproyeksikan ke atribut Name dan Pop :

3.3. BASIC SQL PRIMER


SQL adalah bahasa query komersial yang dikembangkan pertama kali oleh IBM. Sejak
saat itu, SQL menjadi standar bahasa query untuk RDBMS. SQL adalah bahasa deklaratif,
pengguna hanya dapat menentukan jawaban alih-alih prosedur untuk mendapatkan kembali
jawaban. Bahasa SQL memiliki sedikitnya dua komponen terpisah: data definition language
(DDL) dan data modification language (DML). DDL digunakan untuk membuat, menghapus,
dan memodifikasi definisi tabel dari database. Di DML, pertanyaan diajukan dan baris
dimasukan dan dihapus dari tabel ditentukan di DDL. SQL juga memiliki pernyataan lain untuk
data control bahasa. Tujuannya adalah untuk memberikan pemahaman yang cukup dari
bahasa sehingga pembaca dapat mengapresiai spatial yang kita diskusikan dibagian 3.4.
Eksposisi yang lebih detail dan komplit dari SQL dapat ditemukan disetiap teks standar di
database [Elmasri dan Navathe, 2000; Ulman dan Widom, 1999].

3.3.1 DDL
Kreasi dari skema relasional dan penambahan serta penghapusan tabel ditentukan di
komponen DDL dari SQL. Sebagai contoh, skema kota diperkenalkan dibagian 3.2 didefinisikan
di bawah ini di SQL. Tabel Country dan River didefinisikan di tabel 3.6.

10
SQL CREATE TABEL di gunakan untuk mendefinisikan hubungan di skema rasional. Nama dari
tabel tersebut adalah CITY. Tabel tersebut memiliki empat kolom, dan nama dari setiap kolom
dan datatype yang sesuai harus ditentukan. Atribut Name dan Country harus berupa ASCII
string karakter yang kurang dari tiga puluh lima karakter.

Population adalah tipe integer, dan Capital adalah atribut yang merupakan karakter tunggal
Y atau N. di SQL92 memungkinkan datatype diperbaiki dan tidak dapat ditentukan pengguna.
Kita tidak mendaftar set lengkap dari datatype, yang dapat ditemukan di berbagai teks di
standar database. Pada akkhirnya, atribut Name adalah kunci utama dari hubungan tersebut.
Demikian setiap baris di tabel harus memiliki nilai unik untuk atrirbut Name. Tabel yang tidak
lagi digunakan dapat di hapus dari database menggunakan perintah DROP TABEL. Perintah
penting lainnya di DDL adalah ALTER TABEL untuk memodifikasi skema hubungan tersebut.

3.3.2 DML
Setelah tabel dibuat seperti yang ditentukan di DDL, tabel siap untuk menerima data. Tugas
ini, yang mana sering dipanggil “mengisi tabel” adalah selesai di komponen DML dari SQL.
Sebagai contoh, mengikuti pernyataan tambahan satu baris di tabel River:

11
Jika semua hubungan atribut tidak ditentukan, maka standar nilai otomatis akan diganti. Yang
paling sering digunakan standar nilai adalah NULL. Sebuah usaha untuk menambah baris di
tabel RIVER dengan Name = “Mississippi” akan ditolak oleh DBMS karena kunci utama
terpaksa ditentukan di DDL. Bentuk dasar untuk menghapus baris dari tabel adalah sebagai
berikut:

Sebagai contoh, mengikuti pernyataan baris yang dihapus dari tabel River kita masukkan di
awal.

3.3.3. Syntax dasar dari Query SQL


Sekalinya skema database telah ditentukan di komponen DDL dan tabel diisi, quires dapat
dinyatakan di SQL untuk mengekstrak bagian data yang relevan dari database. Syntax dasar
dari query SQL sangat simple:

Bentuk ini adalah equivalent untuk RA yang terdiri dari π, α, dan ∞. Pernyataan SQL SELECT
memiliki klausa lebih yang terkait dengan pengumpulan (e.g, GROUP BY, HAVING), hasil
pemesanan (e.g, ORDER BY), dan sebagainya. Sebagai tambahan, SQL mengizinkan formulasi
dari nested queries.

3.3.4 Contoh Query di SQL


Sekarang kita memberikan contoh tentang bagaimana perbedaan tipe pose dari queries di
SQL. Tujuan kita adalah untuk memberikan rasa fleksibel dan kekuatan dari pernyataan
SELECT. Seluruh tabel queries dari contoh WORLD dijelaskan pada bagian 3.1.1. Hasil dari
perbedaan queries dapat ditemukan di tabel 3.7 dan 3.8.

1. Query: daftar seluruh cities dan country yang termasuk dalam tabel CITY.

12
Comment: SQL expression adalah equivalent untuk operasi projek di RA.

Klausa WHERE hilang di SQL expression karena tidak ada equivalent dari operasi
seleksi di RA yang wajib pada query ini. Tabel CITY dinamai ulang Ci, dan atribut itu
dirujuk sebagai Ci.Name dan Ci.Country.
2. Query: daftar nama dari capital cities di tabel CITY.

13
Comment: SQL ini equivalent untuk operasi select di RA. Disayangkan bahwa di SQL
operasi seleksi dari RA ditentukan di WHERE dan bukan klausa SELECT! * di SELECT
berarti semua atribut di tabel CITY harus didaftar.
3. Query: daftar atribut countries dalam hubungan Country dimana life-experctancy
kurang dari tujuh puluh tahun.

Comment: expression ini equivalent untuk di RA. Atribut yang diproyeksikan,


Co.Name dan Co.Life-Exp di contoh ini ditentukan di klausa SELECT. Pilihan kondisi
ditentukan di klausa WHERE.
4. Query: daftar capital cities dan populations of countries yang dimana GDP melebihi
satu trilyun dolar.

Comment: ini adalah cara tersirat untuk mengekspresikan operasi gabungan. SQL2
dan SQL3 juga mendukung operasi JOIN eksplisit. Pada kasus ini dua tabel City dan
Country cocok dengan atribut umum mereka Ci.country dan Co.name. Terlebih, dua
pilihan kondisi ditentukan secara terpisah dalam tabel City dan Country. Melihat
bagaimana notasi cascading dot mengurangi potensi kebingungan yang mungkin
muncul sebagai hasil dari nama atribut dalam dua hubungan.
5. Query: apa nama dan population dari capital city di country dimana St. Lawrence River
berasal?

Comments: Query ini terdiri diantara tiga tabel. Tabel River dan Country bergabung
dalam atribut Origin dan Name. tabel Country dan City bergabung dalam atribut Name
dan Country. Ada dua pilihan kondisi di masing-masing tabel River dan City.
6. Apa average population dari daftar noncapital cities dalam tabel City?

14
Comments: AVG (Average) adalah contoh dari operasi aggregate. Operasi ini tidak
tersedia di RA. Disamping AVG, operasi aggregate lainnya adalah COUNT, MAX, MIN,
dan SUM. Operasi aggregate
7. Untuk setiap kontinen, mencari average GDP. Commented [I31]: Diurutkan terlebih dahulu digrupkan
berdasarkan continent lalu dirata2 berdasarkan hasil grup
tersebut, dapat diaverege setalah digrupkan

Comments: query expression ini mewakili departure utama dari format dasar SQL
query. Hal ini dikarenakan munculnya klausa GROUP BY. Tabel pembagi klausa GROUP
BY merupakan dasar dari atribut yang terdaftar dalam klausa. Dalam contoh ini ada
dua nilai yang memungkinkan dari Co.cont:NAM dan SAM. Maka dari itu tabel Country
dibagi dalam dua kelompok. Untuk setiap kelompok, average GDP sudah
diperhitungkan. Nilai average disimpan dibawah atribut Continent-GDP yang
ditentukan di klausa SELECT.
8. Query: untuk setiap country yang setidaknya berasal dari dua rivers, cari panjang dari
river terkecil,

Comments: mirip dengan query sebelumnya. Yang berbeda adalah klausa HAVING
yang mengizinkan kondisi pilihan memberlakukan perbedaan bentuk kelompok di
klausa GROUP BY. Dengan demikian hanya kelompok itu yang dianggap dapat memiliki
lebih dari satu anggota.
9. Query: daftar countries yang GDPnya lebih besar dari Canada. Commented [I32]: Memilih satu tabel dg menduplikasi,
memperleh GDP dg nama Canada, 2 tabel, yg satu untuk
mencari gdp Canada, yang satu untuk dibandingkan

Comments: ini adalah contoh dari beberapa query. Dimana ada queris yang tertanam
dalam queries lain. beberapa query ini menjadi yang wajib ketika tabel menengah

15
yang tidak ada, harus sebelum query dapat dievalusi. Query yang tertanam ini
biasanya muncul di klausa WHERE, meski dapat muncul namun sangat jarang di klausa
FROM dan SELECT. ANY adalah pembanding yang mengatur. Saran standar database
teks untuk melengkapi gambaran dari beberapa query.

3.3.5 Rangkuman RA dan SQL


RA adalah bahasa query dalam formal database. Meskipun biasanya tidak diimplementasikan
di berbagai komersial DBMS, bentuk inimerupakan inti penting dari SQL. SQL adalah bahasa
database yang paling banyak diimplementasikan. SQL memilik dua komponen: DDL dan DML.
Skema dari tabel database ditentukan dan ditempatkan di DDL. Queries yang sebenarnya
ditunjukan di DML. Kita memberikan gambaran mengenai SQL. Informasi lebih dapat
ditemukan diberbagai teks strandar pada database.

3.4. MEMPERLUAS SQL UNTUK DATA SPASIAL


Meskipun SQL adalah bahasa pemrosesan query yang ampuh, RA dan SQL memiliki
kelemahan. Salah satunya bahasa lama yang disediakan hanya tipe data yang sederhana,
misalnya : integer, date (waktu/tanggal), dan strings. SDB merupakan aplikasi yang harus
menangani tipe data yang kompleks seperti titik, garis dan polygon. Vendor database telah
merespon dalam dua cara. Mereka menggunakan blobs untuk menyimpan informasi atau
membuat sebuah hybrid system diamana atribut spasia disimpan di file sistem operasi melalui
GIS. SQL tidak dapat memproses penyimpanan data sebagai blobs, dan itu adalah tanggung
jawab dari teknik aplikasi untuk menangani data dalam bentuk blobs [Stonebraker and moore,
1997]. Solusi tersebut tidak efisien dan estetik karena tergantung pada kode aplikasi host-
language. Dalam sebuah hybrid system, atribut spasial disimpan dalam file terpisah dengan
sistem operasi dan dengan demikian tidak dapat mengambil keuntungan dari layanan
traditional database seperti bahasa query, concurrency control, dan indexing support.
Object-oriented telah memiliki pengaruh besar pada perluasan kemampuan DBMS
dalam mendukung objek spasial (kompleks). Program ini untuk memperluas relasional
database dengan fitur-fitur uang berorientasi objek di bawah dari kerangka umum OR-DBMS.
Kunci objek dari OR-DBMS adalah dukungan versi SQL, SQL3/SQL99, yang mendukung
gagasan definisi jenis penggunaannya (seperti pada Java atau C++). Tujuannya untuk
mempelajari SQL3/SQL99 sehingga kita dapat menggunakannya sebagai alat untuk
memanipulasi dan mengambil data spasial.

16
Permintaan prinsip spasial SQL adalah untuk menyediakan sebuah abstraksi yang lebih
tinggi dari data spasial dengan memasukkan konsep lebih dekat ke persepsi kita tentang ruang
[Egenhofer,1994]. Hal ini dicapai dengan memasukkan konsep object oriented ADTs
ditetapkan pengguna. ADT jenis pengguna didefinisikan dan fungsi-fungsi terkait. Misalnya,
jika kita memiliki persil bidang tanah disimpan sebagai polygon dalam database, maka ADT
berguna dalam kombinasi jenis polygon dan beberapa fungsi (metode ) yang terkait, kedekatan.
Fungsi kedekatan dapat diterapkan pada persil bidang tanah untuk menentukan jika bidang
tanah tersebut berbagi perbatasan yang sama. Istilah abstract digunakan pengguna perlu tahu
rincian pelaksanaan fungsi yang terkait. Semua pengguna tahu dari antarmuka dengan fungsi
yang tersedia dan tipe data untuk parameter input dan hasil output.

3.4.1. Standar OGIS untuk memperluas SQL


OGIS dibentuk dari Konsorsium oleh vendor perangkat lunak utama untuk merumuskan dan
seluruh industry dengan berbagai standar yang terkait dengan interoperabilitas GIS. Model data
spasial OGIS dapat dimasukkan dalam berbagai bahasa pemrograman, misalnya, C, Java, SQL,
dan lannya. Kita focus pada pemasangan SQL pada bagian ini.

OGIS didasarkan pada sebuah geometry model data ditampilkan pada Gambar 2.2. ingat bahwa
model data terdiri dari kelas dasar, Geometry yang noninstantiable (yaitu objek tidak dapat
didefinisikan sebagai contoh geometri) tapi menentukan sebagai sistem rujukan spasial yang
berlaku untuk semua sub kelasnya. Empat subclass besar yang berasal dari superclass geometri
adalah titik, permukaan kurva dan koleksi geometri. Terkait dengan setiap kelas adalah
serangkaian operasi yang bertindak atas instance kelas. Himpunan bagian dari operasi penting
dan definisinya tercantum dalam tabel 3.9

Operasi yang ditentukan dalam standar OGIS terbagi dalam tiga kategori:

1. Operasi dasar berlaku untuk semua tipe data geometri. Misalnya, referensi spasial
mengembalikan sistem koordinat yang mendasari di mana geometri objek
didefinisikan. Misalnya sistem referensi umum memasukkan sistem lintang dan bujur,
dan Universal Tansverse Mercator (UTM) yang sering digunakan.
2. Tes opreasi untuk hubungan topologi antara objek spasial. Misalnya, tes overlap (lihat
chapter 2) dari dua objek yang memiliki persimpangan himpunan kosong.
3. Operasi umum adalah untuk analisis spasial. Misalnya, jarak terpendek antara dua objek
spasial.

17
Tabel 3.9

Kategori SQL KETERANGAN


SpatialReference() Mengembalikan sistem koordinat
yang menjadi referensi objek
Envelope() Mengembalikan minimum
geometri rectangle pembatas
orthogonal
Export() Mengembalikan geometri dalam
representasi yang berbeda
Operasi Dasar
IsEmpty() Mengembalikan jika geometri
adalah null set

IsSimple() Mengembalikan jika geometri


sederhana (tidak ada
self_intersection)
Boundary() Mengembalikan batas geometri
Topological/set operator Equal Mengembalikan jika objek
didalam dan boundary dari dua
geometri memiliki spasial yang
sama
Disjoint Mengembalikan jika batas dan
objek didalamnya tidak intersect
Intersection Mengembalikan jika geometri
tidak disjoint (terputus)
Touch Mengembalikan jika batas dari
dua permukaan intersect tapi
objek didalamnya tidak
cross Mengembalikan jika permukaan
objek didalam bersinggungan
dengan kurva
Within Mengembalikan jika objek
didalam geometri yang diberikan
tidak berpotongan dengan
eksterior geometri lain
Contains Menguji apakah geometri yang
diberikan mengandung geometri
lain yang diberikan
Overlap Mengambalikan jika objek
didalam dari dua geometri
memilki persimpangan kosong
(tidak ada intersect)
Spatial Analysis Distance Jarak terpendek dari dua geometri
Buffer Mengembalikan geometri yang
terdiri dari semua titik yang
jaraknya dari geometri yang
diberikpan kurang dari atau sama
dengan geometri yang diberikan
kurang dari atau sama dengan
jarak yang ditentukan
Convexhull Mengembalikan set geometrik
convex terkecil yang
melampirkan geometri
Intersection Mengembalikan persimpangan
geometris dari dua geometri
Union Mengembalikan penyatuan
geometris dari dua geometri
difference Mengembalikan bagian dari
geometri yang tidak intersect

18
dengan geometri lain yang
diberikan
Symdiff Mengembalikan bagian dari dua
geometri yang tidak saling
bersilangan

3.4.2 Batasan standar


Spesifikasi OGIS terbatas pada model objek ruang, seperti yang ditunjukkan pada chapter
sebelumnya, informasi spasial sering dipetakan ke dalam model yang berbasis lapangan. OGIS
sedang mengembangkan model konsesus untuk jenis data dan operasi. Dalam chapter 8
dikenalkan dengan beberapa opsi yang relevan untuk model berbasis lapangan yang dapat
dimasukkan ke dalam standar OGIS di masa depan. Bahkan dalam hal objek, operasi OGIS
terbatas untuk query pemilihan proyek-gabungan sederhana. Mendukung permintaan agregat
spasial dengan kelompok dan memiliki klausa menimbulkan masalah ( lihat latihan 4).
Akhirnya, focus dalam standar OGIS secara eksklusif pada hubungan topologi spasial dan
metric dasar. Kelas operasi metric didasarkan pada predikat.

3.5.CONTOH QUERY YANG MENEKANKAN PADA ASPEK SPASIAL


Dengan menggunaan tipe data dan operasi OGIS kami merumuskan SQL query dalam
dunia database yang menyoroti hubungan spasial antara tiga entitas : Country, City, dan
River. Pertama-tama kita mendefinisikan kembali skema relasional dengan asumsi bahwa
tipe data dan operasi OGIS tersedia dalam SQL. Skema yang telah direvisi ditunjukkan
pada tabel 3.10.

1. Query : Carilah nama-nama negara yang bertetangga dengan USA di tabel Country

Catatan : Touch akan memeriksa apakah ada dua geometri objek yang saling
berdekatan tanpa tumpang tindih/ overlap. Ini adalah operasi yang sangat berguna
untuk menentukan geometri objek yang saling berdekatan. Operasi Touch adalah
satu dari delapan topologi yang ditentukan dalam standar OGIS. Salah satu sifat dari
operasi topologi adalah bahwa mereka berbeda dalam banyak transformasi
geometri. Khususnya pilihan sistem koordinat dalam dunia basisdata tidak akan
mempengaruhi hasil operasi topologi. Operasi topologi berlaku untuk berbagai

19
kombinasi tipe geometris. Oleh karena itu, dalam situasi yang ideal operasi ini harus
didefinisikan dengan model “overloaded” . Sayangnya banyak object-relational dalam
DBMSs tidak mendukung gagasan object-oriented dari class inheritance dan operasi
overloading. Dengan demikian, untuk tujuan praktis, operasi ini dapat didefinisikan
secara individual untuk setiap kombinasi dari tipe geometris.
2. Query : Untuk semua sungai yang ada dalam tabel sungai, temukan negara-negara
yang dilalui sungai tersebut.

Catatan : Cross juga salah satu sebutan topologi. Cross paling sering digunakan untuk
memeriksa persilangan antara objek garis (lineString) dan poligon, seperti dalam
contoh ini, atau sepasang objek LineString.

3. Query : Kota mana yang ada dalam tabel City yang paling dekat dengan setiap sungai
yang ada pada tabel River?

Catatan : Distance adalah operasi biner. Ini menggunakan klausa WHERE dan klausa
SELECT dalam subquery. Fungsi the Distance didefinisikan untuk setiap kombinasi
geometris objek.
4. Query : Sungai St. Lawrence dapat memasok air ke kota-kota yang berjarak kurang
dari 300km. List kota-kota yang dapat menggunakan air dari sungai St.Lawrence

Catatan : Buffer objek geometri adalah area geometri yang berpusat pada obyek yang
ukurannya ditentukan oleh parameter dalam operasi buffer. Operasi buffer
digunakan dalam banyak aplikasi SIG, termasuk manajemen banjir dan aturan zonasi

20
perkotaan dan pedesaan. Gambaran grafis dari operasi buffer disajikan dalam gambar
3.2. Di gambar 3.2 Kota A dan B kemungkinan besar akan terdampak banjir apabila
ada banjir disungai, sedangkan kota C tidak terdampak banjir.

5. Query : List nama, populasi dan area dari tiap negara dalam table Country

Catatan : Query ini menggambarkan penggunaan fungsi Area. Fungsi ini hanya
berlaku untuk tipe geometry polygon dan multipolygon. Menghitung area jelas
tergantung pada sistem koordinat yang digunakan dalam dunia database. Misalnya
jika Shape suatu negara dalam bentuk lintang bujur, maka transformasi koordinat
harus dilakukan terlebih dahulu sebelum daerah tersebut dapat dihitung.
Transformasi koordinat juga harus dilakukan untuk fungsi Distance dan Length.
6. Query : List panjang sungai di masing-masing negara yang dilaluinya

Catatan : Hasil dari operasi biner Intersection adalah tipe geometri. Operasi
Intersection berbeda dari fungsi Intersects, yang merupakan aturan/predikat topologi
untuk menentukan apakah dua geometri saling berpotongan. Intersection LineString
dan Poligon dapat berupa tipe Point atau LineString. Jika sebuah sungai melewati
suatu negara, maka hasilnya akan menjadi LineString. Dala+m hal ini fungsi Length akan
menampilkan panjang sungai yang tidak nol disetiap negara yang dilaluinya.
7. Query : List GDP dan jarak ibukota negara ke equator, untuk semua negara

21
Hasil Query 7

Catatan : mencari hubungan implisit antara dataset yang disimpan dalam database
adalah diluar lingkup fungsionalitas standar database. DBMS saat ini diarahkan untuk
pemrosesan transaksi online (On-Line transaction processing (OLTP)) sementara
query ini diasumsikan berada di ranah pemrosesan analitik online (On-line Analytical
Processing ( OLAP). OLAP sendiri berada dibawah label data mining, dan kami
mengeksplorasi topik ini di bab 8. Saat ini yang bisa kita lakukan adalah membuat list
setiap kota dan jaraknya terhadap equator. Point(0,Ci.Shape.y) adalah titik di garis
equator yang memiliki nilai bujur yang sama dengan yang ada pada kota yang ada
dalam Ci.Name. Hasil query ditunjukkan pada tabel 3.11
8. Query : List semua negara yang diurutkan berdasarkan jumlah negara tetangga

Catatan : dalam query ini semua negara dengan setidaknya memiliki satu tetangga
diurutkan berdasarkan jumlah tetangga
9. Query : List negara yang hanya mempunyai satu negara tetangga. Suatu negara
adalah tetangga dari negara lain apabila mereka berbagi batas dalam daratan yang
sama. Menurut definisi ini, negara pulau seperti islandia tidak memiliki tetangga.

22
Commented [I33]: Perintah query yang sama , setelah
having

Catatan : disini kami menggunakan query dengan klausa FROM. Hasil query dalam
klausa FROM adalah tabel yang terdiri dari pasangan negara yang bertetangga. Klausa
GROUP BY membentuk tabel baru berdasarkan nama-nama negara. Akhirnya klausa
HAVING menyeleksi pasangan negara-negara yang hanya memiliki satu tetangga.
Klausa HAVING memainkan peran yang mirip dengan klausa WHERE dengan
pengecualian bahwa klausa tersebut harus menyertakan fungsi agregat seperti count,
sum, max dan min.
10. Query : Kota mana yang memiliki jumlah tetangga terbanyak?
Commented [I34]: Create view neighbor as itu perintah
membuat tabel baru, dibuat temporary, kemudian grup
kedua menyeleksi dari neighbor yang maksimal

Catatan : Query ini menunjukkan penggunaan views dalam menyederhanakan query


yang kompleks. Query pertama ( view) menghitung jumlah tetangga untuk setiap
negara. View ini membuat table virtual yang dapat digunakan seperti query pada
tabel normal. Query kedua memilih negara dengan jumlah tetangga terbanyak dari
view tetangga.

23
3.6. TRENDS : OBJECT-RELATIONAL SQL
Standar OGIS menentukan tipe data dan semua operasi terkait yang dianggap penting
untuk aplikasi spasial seperti GIS. Misalnya, untuk tipe data Point / titik operasi penting adalah
Distance, yang menghitung jarak antara dua titik. Operasi Length bukan operasi semantik
yang benar pada tipe data Point. Ini mirip dengan argumen bahwa operasi
Concatenation/rangkaian lebih masuk akal untuk tipe data Character daripada dinyatakan
dengan tipe Integer.

Dalam database relasional set datatypes adalah tetap. Dalam object-relational dan database
berbasis object-oriented, batasan ini telah dilonggarkan, dan dibangun untuk mendukung tipe
data yang ditentukan oleh pengguna. Meskipun fitur ini jelas merupakan keuntungan,
terutama ketika berhadapan dengan aplikasi database nontradisional seperti GIS, beban
membangun tipe data yang benar secara sintaksis dan semantik ada pada pengembang
aplikasi basidata. Untuk berbagi beberapa beban, vendor basis data komersial telah
memperkenalkan paket khusus aplikasi yang menyediakan antarmuka/interface tanpa batas
bagi pengguna basisdata. Misalnya pada Oracle paket spesifik GIS disebut Spatial Data
Cartridge.

SQL3/ SQL99, standar SQL yang diusulkan untuk OR-DBMS memungkinkan pengguna
menentukan tipe data dalam kerangka kerja basisdata relasional. Ada dua fitur dari standar
SQL3 yang bermanfaat untuk mendefinisikan tipe data spasial yang ditentukan pengguna (
user-defined), dua fitur tersebut adalah :

3.6.1. Sekilas tentang SQL3


SQL3/SQL99 mengusulkan dua extensions utama ke SQL2/SQL92, konsep SQL yang
diterima saat ini.

1. ADT
ADT dapat didefinisikan menggunakan pernyataan CREATE TYPE. Seperti classes
dalam teknologi object-oriented. ADT terdiri dari atribut dan member functions
untuk mengakses nilai atribut. Member functions dapat berpotensi mengubah nilai
atribut dalam tipe data dan demikian juga dapat mengubah status basis data.
ADT dapat muncul sebagai jenis kolom dalam skema relasional. Untuk mengakses
nilai yang dirangkum ADT, member functions yang ditentukan dalam CREATE TYPE

24
harus digunakan.misalnya, script dibawah ini membuat tipe Point dengan definisi
salah satu member function ‘Distance’.

Tanda titik dua (:) sebelum u dan v menandakan bahwa ini adalah variabel lokal.
2. Row Type
Row type adalah tipe untuk relasi. Row type menentukan skema suatu relasi.
Sebagai contoh script dibawah ini adalah membuat row type Point.

Kita sekarang dapat membuat tabel instantiates row type. Misalnya :

Dalam teks ini kami menekankan penggunaan ADT bukan row type. Ini karena ADT
sebagai kolom secara natural menyelaraskan definisi OR_DBMS sebagai basis data
relational yang diperluas.

3.6.2. Object-relational schema


Oracle8 adalah OR_DBMS yang diperkenalkan oleh Perusahaan Oracle. Produk serupa
juga tersedia dari perusahaan basisdata lain seperti IBM. OR-DBMS
mengimplementasikan bagian dari standar SQL3. ADT disebut sebagai “object type”
dalam sistem ini. Dibawah ini kami akan menjelaskan bagaimana tiga tipe data spasial :
Point, Linestring, dan Polygon dibangun dalam Oracle8.

25
Tipe point mempunyai dua atribut, x dan y, dan satu member function, Distance.
PRAGMA menyinggung fakta bahwa fungsi Distance tidak akan mengubah kondisi
database : WNDS (Write No Database State). Tentu saja dalam standar OGIS banyak
operasi lain yang terkait dengan tipe Point secara spesifik, tapi untuk mudahnya kami
hanya menunjukkan satu operasi. Setelah dibuat, tipe Point dapat digunakan dalam
relasi sebagai tipe atribut. Misalnya skema hubungan tabel City dapat didefinisikan
sebagai berikut :

Ketika skema relasi telah didefinisikan, tabel dapat diisi dengan cara biasa. Misalnya
pernyataan berikut, menambahkan informasi yang terkait Brasilia, ibukota Brasil, ke
dalam basis data :

Konstruksi tipe data LineString sedikit lebih terlibat daripada tipe Point. Kita mulai
dengan membuat tipe perantara, LineType :

LineType adalah variable array tipe data Point dengan panjang maksimum 500. Tipe
spesifik dari member functions tidak dapat didefinisikan apabila tipe nya didefinisikan
sebagai Varray. Karena itu dibuat tipe lineString lainnya.

Atribut Num_of_Points menyimpan ukuran ( dalam hal poin) dari setiap instance tipe
Linestring. Sekarang telah siap untuk menentukan skema dari tabel River

26
Saat memasukkan data ke dalam tabel River, kita harus melacak berbagai tipe data yang
terlibat

Tipe Polygon mirip dengan tipe LineString. Urutan jenis dan pembuatan tabel dan
penyisipan data diberikan dalam tabel 3.12

3.6.3. Contoh Query


1. Query : list semua pasangan kota di tabel City dan jarak diantara keduanya

27
Catatan : perhatikan notasi object-oriented untuk fungsi Distance dalam klausa
SELECT. Kontraskan dengan notasi uji (test notation) yang digunakan dalam bagian
3.5 : Distance (C1.Shape,C2.Shape). predikat dalam klausa WHERE memastikan
bahwa fungsi Distance tidak digunakan antara dua copy kota yang sama.

2. Query : Validate panjang sungai yang ada pada tabel River, menggunakan kode
informasi geometrik di atribut Shape

Catatan : query ini digunakan untuk validasi data. Panjang sungai sudah tersedia di
atribut Length dalam tabel River. Dengan menggunakan fungsi Length() kita dapat
memeriksa integritas data didalam tabel.

3. Query : List nama, populasi dan wilayah semua negara yang berbatasan dengan USA

Catatan : fungsi Area () adalah fungsi natural untuk mendukung Polygon ADT .
bersamaan dengan fungsi area(), query juga memanggil topologi Touch.

3.7. RANGKUMAN
RA adalah asosiasi bahasa query formal dengan model relasional. Hal ini jarang, jika ada,
diimplementasikan di sistem komersial tapi bentuk inti dari SQL.
SQL adalah bahasa query yang paling banyak diimplementasikan. Itu adalah bahasa deklaratif,
pengguna hanya dapat menentukan hasil dari query daripada cara tiba di hasil. SQL
memperluas RA dengan banyaknya fungsi penting lainnya, termasuk fungsi aggregate untuk
proses queried data secara analitis.
Standar OGIS merekomendasikan seperangkat spatial datatypes dan fungsi yang dianggap
penting untuk spatial data querying.
SQL3/SQL 1999 adalah platform standarisasi untuk database hubungan-objek. Scenario paling
alami adalah ketika rekomendasi standar OGIS akan diimplementasikan dibagian dari SQL3.

28
3.8. LAMPIRAN : DATABASE STATE PARK
Database statepark terdiri dari dua entitas, taman dan danau. Atribut kedua entitas ini dan
hubungannya ditunjukkan pada Gambar 3.4. ER Diagram dipetakan ke dalam skema relasional
yang ditunjukkan di bawah ini. Entitas dan hubungannya terwujud dalam tabel 3.13

Skema diatas mewakili tiga entitas: statepark, Lake (danau), dan Park lake (taman danau).
Statepark mewakili semua taman di Negara bagian di Minnesota, dan atributnya adalah
nomor identitas nasional yang unik (Sid), nama taman (Sname), luas wilayah dalam km2
(area), dan jarak taman dari Minneapolis (jarak). Entitas danau juga memilki id unik , nama
danau (Lname), kedalaman rata-rata danau (depth), main catch. Taman danau
mengidentifikasi danau yang ada di taman. Atributnya adalah Lid, Sid, dan tanggal musim
memancing. Di sini kita mengasumsikan bahwa danau yang berbeda memiliki pembuka
pemancingan yang berbeda.

29
3.8.1 Contoh Query Dalam RA
Kami sekarang memberikan contoh yang menunjukkan bagaimana operator relasional yang
didefinisikan sebelumnya dapat digunakan untuk mengambil dan memanipulasi data dalam
database. Formatnya sebagai berikut: pertama-tama kami mencantumkan query dalam
bahasa inggris: kami memberikan ekspresi yangsetara dalam RA, dan akhirnya kami membuat
comment tentang ekspresi aljabar, termasuk bentuk alternative dari ekspresi aljabar.

Pertanyaan: temukan nama taman yang berisis danau dengan id 100

Kita mulai memilih set of tuples di parklake dengan Lid 100. Set yang dihasilkan gabungan
dengan relasi statepark pada Sid. Hasilnya di proyeksikan ke nama statepark (SPname), query
ini dapat memecah menjadi beberapa bagian dengan menggunakan operator penamaan
ulang p. penggantian nama digunakan untuk menyebutkan hubungan antara yang muncul
selama evaluasi query kompleks. Itu juga dapat digunakan untuk mengganti nama atribut
relasi.

Mengganti nama relasi nama yang lama ke nama yang baru. Atribut pertama , dihitung dari
kiri ke kanan, dari nama baru ini disebut Att1

30
Dari sudut pandang implementasi, query ini lebih berharga daripada yang sebelumnya karena
melakukan join pada set yang lebih besar, dan join adalah yang paling berharga dari semua
operator dalam aljabar relasional.

Comment: di sini kami menerapkan dua operator gabungan secara berurutan. Namun
pertama kita mengurangi ukuran yang ditetapkan dengan terlebih dahulu memilih semua
danau dengan tangkapan utama Ikan Trout. Kemudian kita join hasilnya pada Lid dengan
Parklake.

Comment: gabungan di Sid menciptakan hubungan menengah di mana tuples (tupel) dari
hubungan statepark melekat pada tupel dari parklake. Hasilnya kemudian diproyeksikan ke
Spname

Comment: di sini kami menggunakan gabungan operator untuk pertama kalinya. Pertama
memilih danau dengan tangkapan utama bass atau walleye. Kemudian digabungkan pada Lid
dengan ParkLake dan bergabung lagi di Sid dengan Statepark. Kami mendapatkan hasil
dengan meproyeksikan pada Spname.

31

You might also like