Professional Documents
Culture Documents
Oleh:
Herlina
18/434759/PTK/12322
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
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.
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 :
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
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.
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 ).
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.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.
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.
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: 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.
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.
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
18
dengan geometri lain yang
diberikan
Symdiff Mengembalikan bagian dari dua
geometri yang tidak saling
bersilangan
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
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 :
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.
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.
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
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.
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