BAB 3 MODEL DATA RELASIONAL Sistem Basisdata Relasional ( RDBMS) telah menjadi perangkat lunak pengolahan data yang banyak digunakan saat ini; diperkirakan penjualan mencapai US$15 milyar dan US$20 milyar per tahun ( US$50 milyar jika termasuk dengan penjualan perangkat kerasnya). Perangkat lunak ini menghadirkan generasi yang kedua DBMSs yang berdasarkan pada model relational data yang diusulkan oleh F. F. Codd ( 1970). . Kelebihan model relational adalah struktur logis sederhana ini. Pada bab ini akan dipelajari : o Asal relational model. o Istilah relational model o Bagaimana tabel digunakan untuk menyajikan data. o Koneksi antara hubungan matematis dengan hubungan pada model relational. o Komponen pada relasi database. o Bagaimana cara mengidentifikasi kandidat kunci, kunci utama, kunci alternatif dan kunci asing. o Arti dari integritas entity dan integritas referensi o Tujuan Dan Keuntungan pandangan model relational. Sistem Basisdata Relasional ( RDBMS) telah menjadi perangkat lunak pengolahan data yang banyak digunakan saat ini; diperkirakan penjualan mencapai US$15 milyar dan US$20 milyar per tahun ( US$50 milyar jika termasuk dengan penjualan perangkat kerasnya). Perangkat lunak ini menghadirkan generasi yang kedua DBMSs yang berdasarkan pada model relational data yang diusulkan oleh F. F. Codd ( 1970). Dalam model relational semua data tersusun dalam hubungan yang disebut tabel. Tiap hubungan mempunyai suatu nama dan terdiri dari atribut dan nama kolom tentang data. Masing-masing tuple(baris) berisi satu nilai sebagai penunjuk. Kelebihan model relational adalah struktur logis sederhana ini. Kelebihan model relational adalah struktur logis sederhana ini. Pada bab ini, kita mendiskusikan istilah dan konsep struktural dasar model data relational. Sedang pada bab berikutnya, akan mendiskusikan bahasa program untuk relational yang digunakan untuk melakukan updating dan retrieving data. Pada bab ini akan dijelaskan terminology dan konsep struktur dasar dari model relasi. Pada bab berikutnya akan dibahas beberapa contoh untuk latihan penggunaan bahasa yang menggunakan model ini untuk melakukan pemutakhiran dan pemanggilan kembali data. Pada bab 5, 6, dan 21 kita menguji SQL(bahasa Query Tersusun). yang formal dan menjadi bahasa baku untuk RDBMS dan di bab 7 menguji QBE ( Query-By-Example), bahasa query visuil yang populer untuk RDBMSs. Pada Bab 14-17 menjelaskan metodologi yang lengkap untuk mendesain database relational. Sedangkan pada apendix D, akan menguji dua belas aturan Codd's, yang membentuk suatu ukuran RDBMSi. Contoh pada ini adalah studi kasus DreamHome , yang mana diuraikan secara detil di Bagian 10.4 dan apendix A. Sistem Basisdata Relasional ( RDBMS) telah menjadi perangkat lunak pengolahan data yang banyak digunakan saat ini; diperkirakan penjualan mencapai US$15 milyar dan US$20 milyar per tahun ( US$50 milyar jika termasuk dengan penjualan perangkat kerasnya). Perangkat lunak ini menghadirkan generasi yang kedua DBMSs yang berdasarkan pada model relational data yang diusulkan oleh F. F. Codd ( 1970). Susunan isi bab 3 ini adalah sebagai berikut : Agar memperoleh gambaran yang jelas tentang perspektif RDBMS, pada Bagian 3.1 membahas sejarah ringkas relational model. Sedangkan Bagian 3.2 mendiskusikan konsep yang menjadi dasar dan istilah relational model. Di Bagian 3.3 mendiskusikan aturan integritas relasi, mencakup integritas entity dan integritas referensi. Di Bagian 3.4 memperkenalkan konsep view, yang merupakan hal penting pada model relasional DBMS walaupun, pada hakekatnya. tak satu konsep relational pun model yang didalam dirinya. Sejarah Ringkas Model Relational Relational. Model ini pertama kali diusulkan oleh E. F. Codd di dalam makalahnya berjudul " A relational model of data for large shared data banks" ( Codd, 1970). Makalah ini kini berlaku umum sebagai fenomena dalam sistem database, walaupun suatu model berorientasi set telah diusulkan sebelumnya ( Child, 1968). Sasaran model Relational adalah sebagai berikut: o Memungkikan tingkat kebebasan data yang tinggi. Program aplikasi seharusnya tidak terpengaruh karena perubahan penyajian data yang internal, terutama oleh berubahnya organisasi file, urutan data atau alur akses. o Memberi alasan mendasarlberhubungan dengan semantik data, konsistensi, dan permasalahan pemborosan. Makalah Codd juga memperkenalkan konsep hubungan yang dinormalisasi, yaitu hubungan yang tidak terdapat pengulangan kelompok. ( Proses normalisasi dibahas bab 13.) o Memungkinkan penggunaan yang luas bahasa manipulasi data berorientasi set. Hal menarik akan model relational itu berasal dari riset penting berhubungan dengan tiga proyek dalam perspektif yang agak berbeda. Yang pertama , pada San IBM's José Laboratorium Riset di California, yaitu prototip relational DBMS Sistem R, yang pada akhir l970s ( Astrahan vial 1976). Proyek ini dirancang untuk membuktikan kepraktisan model relational dengan melakukan implementasi tentang struktur data dan operasi nya. Juga membuktikan untuk;menjadi suatu sumber informasi yang sempurna tentang implementasi seperti manajemen transaksi. concurrency kendali, teknik pemulihan, optimisasi query, keamanan data dan integritas, faktor manusia, dan alat penghubung pemakai Pada DBMS sistem R terdapat dua pengembangan utama: o pengembangan suatu bahasa query tersusun [ yang dilafalkan ' S-Q-L', atau kadangkadang ' See-Quel'), yang sejak itu telah menjadi Standar ISO dan defacto menjadi bahasa baku untuk relational DBMSs; o pembuatan berbagai DBMS relational komersil sepanjang akhir l970s dan l980s: sebagai contoh, DB2 dan SQL/DS dari IBM dan Oracle dari Oracle Corporation. Proyek kedua yang penting dalam pengembangan relational model adalah INGRES ( Interactive Graphics Retrieval System) dirancang Universitas California di Berkeley, yang pada waktu yang sama aktif meneliti rancangan sistem R. Proyek Ingres melibatkan pengembangan suatu prototipe RDBMS, dengan riset yang berkonsentrasi pada hasil yang keseluruhan sasarannya menyerupai rancangan Sistem R. Riset ini mendorong suatu versi akademis INGRES, yang memberi kontribusi penghargaan terhadap konsep relational dan menghasilkan produk yang komersil INGRES dari Relational Inc. Teknologi ( sekarang INGRES II dari Computer Associate) dan Mesin Database Yang cerdas dari Britton Inc. Proyek yang ketiga adalah Peterlee Relational Test Vehicle pada Pusat Ilmiah IBM di Peterlee UK ( Todd, 1976). Proyek ini mempunyai suatu orientasi [yang] lebih teoritis dibanding Sistem R dan INGRES dan secara signifikan meneliti isu query untuk memproses dan optimisasi, dan perluasan fungsional database. Komersialisasi model relational dimulai pada akhir l970 dan awal l980. Saat ini terdapat ratusan RDBMS untuk mainframe dan PC. Contoh pada PC-based RDBMSs adalah Akses Dan Foxpro dari Microsoft. Paradox dari Corel Corp, Interbase Dan BDE dari Borland, dan R:Base dari R:BASE Teknologi. Seiring dengan populernya model relational, banyak sistem non-relational sekarang menyediakan fitur relational. Asosiasi komputer IDMS, jaringan yang prinsipal DBMS, telah menjadi CA-IDMS SQL, mendukung suatu views pada model relational. Pada komputer mainframe DBMS mendukung beberapa model relational adalah Korporasi Komputer Model America's 204 dan Perangkat lunak AG's ADABAS. Beberapa perluasan model relational juga diusulkan; sebagai contoh, perluasan untuk: o o o menangkap lebih baik arti dari data ( sebagai contoh, Codd, 1979); mendukung konsep berorientasi objek ( sebagai contoh, Stonebraker dan Rowe, 1986); mendukung kemampuan deduksi ( sebagai contoh. Gardarin dan Valduriez, 1989). Kita mendiskusikan sebagian dari perluasan ini di (dalam) Bab 24-27 pada Obyek DBMSs. Terminologi Istilah Relational Model didasarkan pada konsep matematika yang secara fisik diwakili oleh suatu hubungan tabel, Codd, seorang ahli matematik terlatih, memakai istilah pada matematika, terutama teori dasar dan logika . Di bagian ini akan menjelaskan istilah itu dan konsep model relasional terstruktur 3.2.1 Relational Struktur Data Relasi adalah adalah suatu tabel yang mempunyai kolom dan baris. Suatu RDBMS diperlukan hanya berdasarkan bagimana pemakai memandang sesuai persepsinya. Sebagai catatan, bagaimanapun persepsi ini berlaku hanya untuk struktur database yang logis: hal ini disebut tingkatan konseptual dan eksternal arsitektur ANSISPARC yang dibahas di Bagian 2.1. ( lihat juga apendix C). Atribut adalah nama kolom dari suatu relasi. Pada model relational, hubungan digunakan untuk pegangan tentang object yang diwakilinya. Suatu hubungan diwakili sebagai dua dimensi tabel, di mana baris sesuai dengan arsip individu dan kolom sesuai dengan atribut. Atribut dapat nampak pada tiap order dan hubungan yang sama akan menyampaikan maksud yang sama. Sebagai contoh, informasi pada kantor cabang diwakili oleh relasi Branch, dengan kolom untuk atribut brancnNo ( nomor;jumlah cabang). jalan. kota besar, dan postcode. Dengan cara yang sama informasi tentang staff diwakili oleh relasi , dengan kolom untuk atribut staffNo ( nomor;jumlah staff). fName. Nama. Position. Jenis kelamin. Dob ( tanggal kelahiran), gaji. dan branchNo ( banyaknya cabang anggota staff bekerja atl. gambar 3.1 menunjukkan Cabang Dan relasinya. Seperti dapat dilihat dari contoh ini, suatu kolom berisi nilai-nilai [dari;ttg] atribut tunggal; sebagai contoh. branchNo kolom berisi hanya kode kantor cabang ada. Domain adalah suatu daerah atau satuan nilai-nilai yang dapat diijinkan untuk satu atau lebih atribut. Domain adalah suatu fitur utama dari model relational. Tiap atribut didalam suatu hubungan digambarkan atas suatu daerah(domain). Domain mungkin berbeda untuk masing-masing atribut, atau dua atau lebih atribut dapat menggambarkan domain yang sama. gambar 3.2 menunujukkan domain itu yang terdiri dari sebagian dari atribut Branch dan relasinya. Konsep domain adalah penting sebab ini yang mengijinkan pemakai untuk menggambarkan suatu maksud/arti dan asal nilai didalam atributnya. Sebagai hasilnya. intormasi tersedia pada sistem itu pada waktu pelaksanaan pengoperasian suatu relasi, jika suatu operasi secara semantik salah maka otomatis akan dihindari. Sebagai contoh. tidaklah mungkin membandingkan suatu sebutan jalan dengan nomor telepon. meskipun domain keduanya sama. Pada sisi lain, sewa bulanan pada suatu properti dan banyaknya bulan adalah suatu properti telah disewa mempunyai domain yang berbeda ( yang pertama adalah suatu nilai moneter, yang kedua suatu nilai bilangan bulat). keadaan ini masih suatu operasi yang legal untuk menghasilkan nilai dari kedua domain tersebut. Tuple. Sebuah tuple adalah baris dari sebuah table relasi Elemen dari sebuah relasi adalah baris (row) atau disebut tuple di dalam table. Pada relasi branch, setiap baris berisi empat nilai, satu nilai untuk setiap atribut. Tuple dapat muncul pada setiap urutan dari suatu table relasi , yang dapat mempunyai pengertian yang sama. Struktur suatu relasi, bersama-sama dengan suatu spesifikasi domain dan berbagai pembatasan nilai lainnya, kadang-kadang disebut sebagai intension, kecuali ditetapkan lain. Tuples arc disebut ekstensi relasi. Derajat Derajat tingkat suatu hubungan adalah banyaknya atribut terisi. Relasi Branch di gambar 3.1 mempunyai empat atribut atau berderajat tingkat empat. Artinya tiap baris tabel adalah berisi empat nilai-nilai. Relasi dengan hanya satu atribut mempunyai derajat tingkat satu dan disebut suatu hubungan unary atau one-tuple. Suatu hubungan dengan dua atribut disebut biner, dengan tiga atribut disebut ternary, dan setelah itu istilah n-ary. Derajat tingkat suatu hubungan adalah suatu properti intension dari relasi itu. Kardinalitas. Adalah suatu hubungan sejumlah isi dari tuples. Sebagai pembanding, banyaknya tuples disebut kardinalitas dari relasi dan perubahan ini ketika tuples ditambahkan atau dihapus. Kardinalitas adalah suatu properti dari hubungan ekstensi dan ditentukan dari kejadian hubungan yang telah ditentukan di setiap momen. Relational database adalah suatu kumpulan dari hubungan yang telah dinormalisasi dengan nama hubungan yang berbeda. Suatu relational database terdiri dari hubungan tersusun secara wajar tersusun. Kita mengacu hal ini sebagai normalisasi.( akan didiskusikan pada bab 13). Istilah Alternatif Istilah untuk relational model dapat sungguh mengacaukan. Kita sudah memperkenalkan dua buah terminologi. Sesungguhnya, terminologi ketiga digunakan: suatu hubungan adalah suatu file, tuples atau arsip, dan atribut adalah field. Istilah berasal dari fakta ini yang , secara phisik. RDBMS dapat menyimpan hubungan masing-masing dalam suatu file. tabel 3.1 meringkas terminologi yang berbeda pada model relational. Table 3.1 Alternative terminology for relational model terms. Formal terms Relation Tuple Attribute Alternative 1 Alternative 2 Table Row Column File Record Field 3.2.2 Relasi Matematika Untuk memahami maksud yang benar istilah-istilah, kita harus meninjau ulang beberapa konsep dari matematika. Bila kita mempunyai dua himpunan, D1, dan D2, di mana D1= { 2, 4} dan D2= {1, 3, 5}. Kartesian produk dari kedua himpunan ini ditulis D1 x D2, adalah himpunan yang berisi semua pasangan yang dihasilkannya, yaitu yang unsur pertamanya adalah anggota D1 dan unsur yang kedua adalah anggota D2. Cara lain menyatakan ini adalah dengan menemukan semua kombinasi unsur-unsur pertama dari D1, dan yang kedua dari D2. Pada contoh ini, kita mempunyai: D1xD2={(2, l),(2,3),(2,5),(4,1),(4,3),(4,5)} Setiap set dari hasil kartesian produk adalah relasi. Misalnya relasi R dibawah ini : R = {(2, 1), (4, l)} Kita dapat menetapkan pasangan pada relasi dengan memberi kondisi beberapa pilihan. Sebagai contoh, jika kita mengamati bahwa P terdiri semua pasangan di mana unsur yang kedua adalah 1, kemudian kita bisa tulis R adalah : R = { (x,y) x ε D1, Y ε D2, and y = 1} Penggunaan himpunan yang sama, akan membentuk relasi lain di mana unsur yang pertama selalu dua kali lebih dari yang kedua. jadi ditulis S adalah : S = { (x,y) x ε D1, Y ε D2, and x = 2y} Atau dalam bentuk nialai isinya , S= {(2, 1)} hanya ada satu pasangan hasil produk Kartesian yang memuaskan pada kondisi ini. Kita dapat dengan mudah memperluas menjadi tiga relasi. Misalkan tiga relasi D1, D2, dan D3. Produk Kartesian D1 x D2 x D3, tiga himpunan ini adalah satuan dari semua rangkap tiga hasilnya. Yang terdiri unsur pertama adalah dari D1, unsur yang kedua adalah dari D2, dan unsur yang ketiga adalah dari D3. Setiap subset dari produk Kartesian ini adalah suatu relasi. Sebagai contoh, kita mempunyai: D1={1,3} D2={2,4} D3={5,6) D1xD2xD3={(I,2,5),(l.2,6).(l,4,5),(l,4,6),(3,2,5),(3,2.6),(3,4,5).(3.4.6)} Setiap subset dari hasil perkalian tiga himpunan ini adalah relasi. Selanjutnya dapat diperluas ke dalam relasi umum yang terdiri dari n domain. Misalnya D1, D2, D3 … Dn sebanyak n set. Hasil kartesian pruduknya adalah : D1XD2XD3…..XDn= {d1,d2,d3,…,dn|d1εD1, d2εD2,….. dnεDn} dan secara umum ditulis sebagai berikut : n X Di i=1 Tiap kumpulan dari n-tuples dai kartesian produk adalah relasi didalam n himpunan. Sebagai catatan, ini didefinisikan relasi mempunyai sejumlah set atau domain dari nilai yang ditunjukkannya. 3.2.3 Relasi Database Dengan menerapkan konsep di atas, maka dapat disusun definisi dari relasi dari skema Skema Relasi Nama relasi didefinisikan sebagai kumpulan atribut dan nama domain pasangannya. Misalnya A1, A2, A3 …. A adalah atribut dengan domain D1,D2, …Dn, Maka kumpulan dari {A1:D1, A2:D2, An:Dn } adalah skema relasi. Sebuah relasi R didefinisikan oleh skema relasi S adalah himpunan dari pemetaan dari nama-nama atribut pada hubungan domain mereka. Jadi relasi P adalah himpunan n-tuples : (A1:d1, A2:d2,… An:dn) dimana d1εD1, d2εD2,….. dnεDn Setiap elemen dari n-tuple terdiri dari dari atribut dan nilai atribut itu. Secara normal, ketika menuliskan suatu relasi sebagai tabel, kita membuat daftar nama atribut dari judul kolom dan menuliskan tuples sebagai baris. Misalnya pada bentuk ( d1,. d2,..., dn,.), di mana nilai masing-masing diambil dari domain yang sesuai. Dengan cara ini, kita dapat berpikir bahwa suatu relasi di dalam model relational adalah semua subset dari hasil produk Cartesian domain atribut itu. Suatu tabel hanya suatu penyajian phisik dari relasi seperti itu Pada contoh, relasi Branch yang digambarkan pada gambar 3.1 mempunyai atribut branchNo,street,city,dan postcode, yang masing-masing mempunyai domain. Relasi branch ini terdiri dari setiap subset dari hasil kartesian produk dari domainnya, atau setiap empat tuple dimana elemen pertama adlah dari domain BranchNumber, elemen kedua berasal dari domain StreetName dan seterusnya. Salah satu dari keempat tuple itu adalah {(B005, 22 Deer Rd. London, SWI 4EH)} Atau lebih tepatnya : {(branchNo: B005, street: 22 Deer Rd. cty: London. postcode: SWI 4EH)} Kita menyatakan ini sebagai isi (instance) dari relasi. Tabel branch sangat tepat dinyatakan dengan empat tuple dari relasi pada setiap waktu yang ditentukan. Ini menjelaskan bagaimana sebuah baris table pada model relasi disebut tuple. Dengan cara yang sama sebuah relasi mempunyai skema, sudah barang tentu relasi database. 3.2.3 Relasi database Berdasarkan konsep di atas, maka dapat didefinisikan skema relasi sebagai berikut Skema Relasi adalah kumpulan sejumlah skema relasi dimana masing-masing mempunyai nama yang berbeda. Jika R terdiri dari R1, R2, …. Rn adalah suatu kumpulan dari skema relasi, maka dapat dituliskan skema database relasi atau sering disingkat dengan skema relasi R adalah : R= {R1,R2,…,Rn} 3.2.4 Properties dari Relasi Sebuah relasi mempunyai sejumlah property sebagai berikut : relasi mempunyai suatu nama yang berbeda dari semua relasi yang lpada skema relasinya; masing-masing sel dari relasi berisi hanya satu nilai tunggal; masing-masing atribut mempunyai nama yang berbeda: nilai-nilai dari suatu atribut adalah dari domain yang sama: masing-masing tuple adalah beda; tidak ada salinan tuples; order atribut tidak punya arti; order tuples tidak punya arti. secara teoritis. (Namun, dalam praktek, order boleh mempengaruhi efisiensi akses tuples.) Untuk menjelaskan arti pembatasan ini, marilah dilihat lagi relasi Branchpada gambar 3.1. Setiap elemen berisi hanya satu nilai, jadi adalah tidak sah untuk menyimpan dua post-codes untuk satu kantor cabang tunggal di dalam sel tunggal. Dengan kata lain, hubungan tidak berisi pengulangan kelompok. Suatu hubungan yang memuaskan ini disebut normalisasi atau dalam format normal. ( Format normal dibahas bab 13.) Daftar nama kolom berada di bagian atas kolom sesuai dengan atribut relasi [itu]. Nilai-Nilai di dalam atribut brancbNo adalah terdiri semua domain dari BranchNumber : mestinya tidak mengijinkan suatu nilai kode pos nampak di kolom ini. Dengan kata lain tidak ada pengulangan tuples di dalam suatu relasi. Sebagai contoh (B005, 22 Deer Rd. London, SWI 4EH) hanya muncul satu kali. Dapat terjadi, suatu nama atribut diganti dengan nilai atributnya dengan mempertukarkan kolom. Tabel akan menggambarkan relasi yang sama jika kita menempatkan kota di dalam kode pos, walaupun untuk keadaan ini dapat dibaca adanya unsur-unsur alamat dan lainnya dalam pesanan. Dengan cara yang sama, tuples dapat dipertukarkan, sehingga arsip cabang B005 dan B004 dapat dipindah dan relasi masih akan sama. Kebanyakan dari properti menetapkan untuk relasi yang diakibatkan oleh properti relasi matematis: O Ketika kartesian produk telah dihasilkan unsur-unsur bernilai tunggal sederhana seperti bilangan bulat, masing-masing unsur pada setiap tuple adalah bernilai tunggal. Dengan cara yang sama. masing-masing sel suatu hubungan berisi persisnya satu nilai. Bagaimanapun, suatu relasi matematis tidak perlu dalam bentuk normal. Codd menentukan pengulangan kelompok data seharusnya ditolak untuk menyederhanakan relational model data . o Di dalam suatu relasi, nilai-nilai yang mungkin untuk tiap posisi, ditentukan oleh kelompok, domain, yang menggambarkan posisinya. Di dalam suatu tabel, nilai-nilai pada tiap kolom harus berasal dari domain atribut yang sama. o Di dalam kelompok, tidak ada elemen yang berulang. Dengan cara yang sama, di dalam suatu relasi, tidak ada duplikasi dtuplesalinan tuples. o Sejak suatu relasi di dalam satu kelompok , aturan elemen/komponen tidak berlaku. Oleh karena itu, di dalam suatu relasi hubungan tuples adalah tidak penting Bagaimanapun, pada relasi matematis, aturan unsur-unsur dalam satu tuple adalah penting. Sebagai contoh, pasangan ( I, 2) adalah sungguh berbeda dari pasangan yang ( 2, I). Meskipun ini bukan kasus pada model relasi, yang memerlukan atribut tidak penting. Alasannya adalah bahwa kolom yang mengatur menggambarkan pemilik nilai itu. Ini berarti judul kolom adalah intension yang tidak penting, tetapi ketika struktur hubungan di/terpilih, unsur-unsur di dalam tuples harus memenuhi atributnya. 3.2.5 Key dari sebuah relasi Seperti dijelaskan di atas, tidak ada tuple yang duplikat di dalam suatu relasi. Oleh karena itu, kita perlu untuk dapat mengidentifikasi satu atau lebih atribut ( disebut : kunci relasi ) yang akan mengidentifikasi secara unik setiap tuple di dalam suatu relasi. Di bagian ini, menjelaskan istilah itu yang digunakan untuk kunci relasi. Superkey Sebuah atribut, atau kumpulan atribut, yang mengidentifikasi secara unik sebuah tuple di dalam suatu relasi. Suatu superkey yang mengidentifikasi secara unik setiap tuple di dalam relasi. Bagaimanapun, suatu superkey boleh berisi atribut gabungan, tetapi umumnya hanya berisi minimum jumlah atribut yang penting untuk mengidentifikasi secara unik. Kandidat Key Adalah suatu superkey atau subset dari superkey yang cocok untuk kunci relasi. Suatu kandidat key K, pada suatu relasi R mempunyai dua ciri : o keunikan- pada setiap tuple R, nilai-nilai K dengan uniknya mengidentifikasi tuple itu; o sifat tak dapat dijabarkan , tidak ada bagian dari K yang dapat menentukan keunikan. Mungkin ada beberapa calon kunci untuk suatu relasi. Jika kunci terdiri lebih dari satu atribut, ini disebut kunci-gabungan (composite key). Kita lihat contoh tabal Cabang, disana ditunjukkan(lihat gambar 3.1) suatu nilai kota, kita dapat menentukan beberapa kantor cabang (misalnya : London mempunyai dua kantor cabang). Atribut ini tidak bisa dijadikan suatu calon kunci. Pada sisi lain, karena DreamHome mengalokasikan kantor cabang masing-masing, maka terdapat sejumlah cabang unik, kemudian memberi suatu nilai cabang, branchNo, kita dapat menentukan paling banyak satu tuple, sedemikian sehingga brannchNo adalah suatu calon kunci. Dengan cara yang sama, kode pos adalah juga suatu calon kunci untuk hubungan ini. Selanjutnya kita lihat relasi VIEW, yang berisi informasi yang berkenaan dengan property yang dilihat oleh klien. Relasi itu berisi nomor-klien (clientNo), nomor-properti ( propertyNo), tanggal melihat ( viewDate) dan, komentar ( comment). dengan nomor-klien, clientNo, mungkin ada beberapa yang bersesuaian melihat property yang berbeda. Selanjutnya engan cara yang sama, suatu nomor-properti, propertyNo, mungkin ada beberapa klien yang melihat properti ini. Oleh karena itu, clientNo atau propertyNo dengan sendirinya tidak bisa terpilih sebagai kunci calon. Bagaimanapun, kombinasi clientNo dan propertyNo mengidentifikasi paling banyak satu tuple, maka, untuk table View tersebut , clientNo dan propertyNo bersama-sama membentuk kunci gabungan. Suatu kejadian dalam seuatu relasi tidak bisa digunakan untuk membuktikan bahwa suatu atribut atau kombinasi atribut adalah suatu calon kunci. Fakta bahwa tidak ada salinan untuk nilai-nilai yang nampak pada saat tertentu tidak menjamin salinan itu tidaklah mungkin. Bagaimanapun, adanya suatu kejadian dapat digunakan untuk menunjukkan beberapa kombinasi atribut bukanlah suatu calon kunci. Mengidentifikasi suatu calon kunci memerlukan kesesuaian dengan ' dunia nyata' dari setiap maksud/arti attribute yang dilibatkan sedemikian sehingga kita dapat memutuskan apakah itu mungkin. Hanya dengan penggunaan informasi semantik ini kita yakin bahwa suatu kombinasi atribut adalah suatu calon kunci. Sebagai contoh, dari gambar 3.1, suatu calon kunci pantas untuk relasi lname, nama panggilan karyawan itu. Walaupun hanya ada nilai tunggal ' Putih' di dalam kejadian relasi ini, suatu anggota baru mengorganisir dengan nama panggilan ‘Putih' boleh bergabung dengan kelompok itu, membuat tidak tepat pilihan Nama sebagai kunci. Kunci Utama Kndidat key yang terpilih untuk mengidentifikasi tuples dengan uniknya di dalam hubungan kunci. Pada relasi yang tidak duplikasi,adalah selalu mungkin untuk mengidentifikasi baris masingmasing secara unik. Hal ini berarti suatu relasi selalu mempunyai suatu kunci utama. Pada kasus yang terburuk, keseluruhan satuan atribut bisa bertindak sebagai kunci yang utama. tetapi pada umumnya terdapat beberapa subset kecil yang dapat mengidentifikasi sebuah tuples. Kandidat key yang tidak terpilih sebagai kunci utama disebut kunci pengubah (alternate key). Sebagai contoh relasi Cabang, jika kita memilih branchNo sebagai kunci utama, maka postcode akan menjadi kunci pengubah. Pada relasi View, ada hanya satu calon kunci, berisi[kan clientNo dan propertyNo, maka atribut ini akan secara otomatis membentuk kunci utama itu. Kunci Asing Suatu atribut, atau kelompok atribut, pada satu relasi yang sesuai dengan kandidat key pada relasi yang sejenis. Ketika suatu atribut muncul pada beberapa relasi, maka akan menghadirkan suatu hubungan antara dua relasi. Sebagai contoh, pemasukan branchNo pada dua relasi Cabang Dan Staf, akan menghubungkan cabang masing-masing kepada detil staff yang bekerja pada kantor cabang tersebut. Pada relasi Cabang, Branchno adalah kunci utama itu. DEngan demikian pada relasi itu, atribut branchNo dipakai untuk menemukan staff pada kantor cabang dimana mereka bekerja. Pada relasi tersebut, Branchno adalah suatu kunci asing. Kita katakan bahwa atribut branchNo di dalam relasi Staf menunjuk pada brancnNo pada relasi Cabang. Atribut ini mempunyai peran yang sangat penting di dalam melakukan manipulasi data, pada pengolahan database. 3.2.6 Penggambaran suatu skema Database Suatu relational database terdiri sejumlah relasi yang normal.Bagan Relasi dari kasus DreamHome adalah sebagai berikut : Figure 3.3 Instance of the DreamHome rental database. Branch branchNo street city postcode B005 22 Deer Rd London SW1 4EH B007 16 Argyll St Aberdeen AB2 3SU B003 B004 163 Main St Glasgow Gil 9QX 32 Manse Rd Bristol B599 1NZ B002 56 Clover Dr London NW1O 6EU Staff staffNo tName lName position sex DOB SL21 SG37 SG14 SA9 SG5 SL4I John White Manager M Ann Beech Assistant F David Ford Supervisor M Mary Howe Assistant F Susan Brand Manager F Julie Lee Assistant F PropertyForRent propertyNo street PA14 B007 PL94 PG4 PG36 PG21 PG16 city 16 Hothead Kay Stewart Ritchie Tregear Joe Carol Tina Tony 6 4 3 3 400 4 B007 BOOS 650 C046 C087 SL41 350 C040 375 C093 5G37 600 C087 SG37 450 CO93 SG14 SA9 BOOS B003 B003 B003 B003 prefType maxRent 0207-774-5632 Flat 0141-848-1825 Flat 01475-392178 House 01224-196720 Flat PrivateOwner ownerNo tName IName address C046 C087 C040 C093 House 6 Argyll St London NW2 Flat 6 Lawrence St Glasgow Gil 9QX Flat 2 Manor Rd Glasgow G32 4QX Flat 18 Dale Rd Glasgow Gl2 House 5 5 Novar Dr Glasgow G12 9AX Flat John Mine Mike Mary BOOS postcode type rooms rent ownerNo staffNo branchNo Aberdeen AB7 5SU Client cllentNo fName IName telNo CR76 CR56 CR74 CR62 salary branchNo 1-Oct-45 30000 10-Nov-60 12000 B003 24-Mar-58 18000 B003 19-Feb-70 9000 3-Jun-40 24000 B003 13-Jun-65 9000 425 350 750 600 telNo Keogh 2 Fergus Dr, Aberdeen AB2 7SX 01224-861212 Farrel 6 Achray St, Glasgow G32 9DX 0141-357-7419 Murphy 63WellSt,GlasgowG42 0141-943-1728 Shaw 12 Park P1, Glasgow G4 OQR 0141-225-7025 Viewing Registration clientNo propertyNo viewDate comment cllontNo branchNo staffNo datoJolned CR56 2-Jan-01 CR76 11-Apr-00 CR56 16-Nov-99 CR62 SA9 CR56 PA14 24-May-01 too small CR76 BOOS PG4 20-Apr-01 too remote CR56 B003 SG37 PG4 26-May-01 CR74 B003 SG37 PAL4 7-Mar-00 PG36 14-May-01 CR62 B007 28-Apr-01 no dining room 5L41 Branch Staff PropertyForRent Client Private0wner Viewing Registration (branchNo, street, city, postcode) (staffNo, fName, Name, position, sex, DOB, salary, branchNo) (crooertvNo, street, city, post000e, type, rooms, rent, ownerNo, staffNo. branch No) (clientNo, fName, Name, telNo, prefType, maxRent) (ownerNo, fName, Name, address, telNo) (clientNo, orooertyNo, viewDate, comment) (clientNo, branchNo, staffNo, dateJoined) Kesepakatan umum untuk menyatakan suatu bagan relasi adalah untuk memberi nama relasi yang diikuti oleh atribut menyebut di dalam tanda kurung. Secadangkan kunci utama diberi garis bawah. Model yang konseptual, atau bagan konseptual terdiri sejumlah skema database seperti itu. Gambar 3.3 menunjukkan suatu bagan relasi tersebut. 3.3 Integritas suatu Relasi Di sebelumnya telah dibahas yang bagian dari struktur relational data model. Telah dinyatakan suatu data model mempunyai dua bagian yang berbeda: bagian manipulatip, untuk melukiskan jenis operasi yang diijinkan pada data, dan satu set aturan integritas, yang memastikan bahwa data itu akurat. PAda bagian ini akan didiskusikan aturan integritas data tersebut. Sedangkan di bagian lain akan mendiskusikan operasi manipulasi data tersebut. Setiap atribut mempunyai domain, constraint( batasan daerah yang dipanggil) pembatasan format atas satuan nilai-nilai pada relasi atribut. Sebagai tambahan, ada dua aturan integritas penting. Dua aturan prinsip untuk relational model dikenal sebagai integritas kesatuan dan integritas yang mempunyai petunjuk. 3.3.1 Nulls Null Represents a value for an attribute that is currently unknown or is not applicable for this tuple. Null dapat diartikan sebagai tidak diketahui nilainya (unknown). Berarti bahwa suatu nilai tidaklah dapat digunakan untuk tuple tertentu,atau berarti bahwa tidak ada nilai yang tersedia. Null adalah suatu cara untuk berhubungan dengan data pengecualian atau tidak sempurna. Suatu Null tidaklah sama dengan nol atau spasi kosong, tetapi diartikan suatu untuk memunculkan ketidakhadiran suatu nilai. Oleh karena itu, Null harus diperlakukan dengan cara yang berbeda dari nilai-nilai lainnya . Beberapa pengarang menggunakan istilah ' nilai batal'. Sebagai contoh, pada relasi View (gambar 3.3), atribut komentar boleh tak tergambarkan sampai penyewa yang potensial telah mengunjungi property itu dan memberikan komentarnya kepada agen itu. Tanda batal itu diperlukan untuk untuk menghadirkan status ini atau untuk menambahkan atribut tambahan yang tidak mungkin penuh arti kepada pemakai. Di (dalam) contoh kita boleh mencoba untuk menghadirkan suatu komentar batal dengan nilai 1'. Sebagai alternatif. kita boleh menambahkan suatu atribut baru hasCommentBeenSüpplied pada table View, yang berisi suatu nilai Y ( Ya) jika suatu komentar telah disediakan, dan N ( Tidak (ada)) untuk yang lainnya. Kedua pendekatan ini dapat mengacaukan kepada pemakai [itu]. Null menyebabkan permasalahan implementasi, model relational didasarkan pada aturan awal kalkulus, dimana suatu two-valued atau logika Boolean- satu-satunya nilai-nilai yang diperbolehkan. Untuk menggunkan makna Null harus bekerja dengan suatu logika highervalued, seperti tiga- atau logika four-valued ( Codd. 1986. 1987, 1990). Diskusi tentang Null adalah suatu isu suka diperdebatkan. Codd memasukkan Null sebagai suatu bagian integral modelnya ( Codd. 1990). Karena percaya bahwa masalah informasi yang hilang tidaklah secara penuh dipahami. bahwa tidak ada solusi yang memuaskan telah ditemukan dan, sebagai konsekwensi, pemakaian Null adalah prematur ( lihat, sebagai contoh. Date. 1995). Kita kini sanggup untuk menggambarkan keduanya relational aturan integritas. 3.3.2 Entity Integrity Aturan Integritas yang pertama berlaku pada kunci utama. Secara konseptual sebuah relasi menggambarkan hubungan kesatuan dengan kunci utama. Entity integrity In a base relation, no attribute of a primary key can be null Menurut definisi, suatu kunci utama, digunakan untuk mengidentifikasi tuples dengan uniknya. Ini berarti bagian dari kunci utama tidak mencukupi untuk mendjadi identifikasi unik dari sebuah tuples. Jika kita mengijinkan Null sebagai bagian dari suatu kunci utama, ini akan menyiratkan bahwa tidak semua atribut diperlukan untuk membedakan antara tuples. Sebagai contoh. Pada relasi Cabang maka brancnNo adalah kunci utama, kita tidak menyisipkan nilai Null relasi Cabang untuk branchNo tersebut. Sebagai contoh kedua, mempertimbangkan kunci gabungan pada relasi View , berisi nomor-klien( clientNo) dan nomor-properti( propertyNo). Kita tidak menyisipkan suatu tuple ke dalam realasi View dengan nilai Null untuk atribut clientNot, atau Null pada propertyNo atribut, atau untuk kedua-duanya. Untuk menguji aturan ini secara detil, akan ditemukan keganjilan. Pertama, kenapa aturan ini hanya berlaku untuk kunci utama dan tidak secara umum pada kandidat kunci, yang juga mengidentifikasi tuples dengan uniknya? Yang kedua. mengapa aturan terbatas untuk dasar relasi? Sebagai contoh, pada relasi View jika dilakukan query ' Daftar semua komentar dari yang mengamati'. Ini akan menghasilkan suatu hubungan unary terdiri dari atribut klien yang memberikan komentar. Menurut definisi, atribut ini ia harus suatu kunci utama, yaitu klien mengamati property nomor PG36 dan PG4 yaitu klien CR56). (Codd 1988; Date. 1990). 3.3.3 Referential Integrity Aturan integritas kedua berkaitan dengan kunci asing, sebagai berikut : Referential integrity If a foreign key exists in a relation, either the foreign key value must match a candidate key value of some tuple in its home relation or the foreign key value must be wholly null. Sebagai contoh, pada relasi Cabang, atribut branchNo adalah suatu kunci asing yang mengarahkan branchNo untuk menujukan hubungan dengan property pada Cabang. Adalah tidak mungkin untuk menciptakan suatu staff merekam dengan nomor-cabang B025, sebagai contoh, kecuali jika ada suatu record untuk nomor-cabang B025 didalam realsi Cabang. Jika tidak , maka harus menciptakan suatu staf baru merekam dengan suatu nomor-cabang berisi Null, untuk memenuhi situasi ini yang artinya satu anggota baru staff telah dimasukkan dalam gabungan tetapi belum ditugaskan ke kantor cabang tertentu . 3.3.4 Enterprise Constraint Konstrain enterprise adalah aturan tambahan yang ditetapkan perusahaan sebagai batasan suatu database. Batasan tersebut ditatpkan untuk para pemakai untuk suatu nilai data yang harus mencukupi. Sebagai contoh, jika banyaknya staf di satu cabang dibatasi sebanyak 20 orang, maka pemakai DBMS harus memasukkan hal ini sebagai suatu persyratan pada atribut staf yang bersangkutan. Hal ini berarti, tidak mungkin untuk menambahkan suatu anggota baru pada cabang yang telah ditentukan di dalam relasi staff. 3.4 Views Pada arsitektur ANSI-SPARC diuraikan suatu pandangan eksternal suatu struktur database yang nampak bagi pemakai tertentu. Didalam model relasi, View (' pandangan' ) mempunyai suatu arti yang sedikit berbeda. Suatu view adalah relasi yang diperoleh secara dinamis yang diperoleh dari satu atau lebih hubungan dasar. Suatu model eksternal dapat terdiri dari gabungan relasi dasar (conceptual-level) dan view diperoleh hubungan dasar tersebut. 3.4.1 Terminology Hubungan yang telah dibahas sampai saat ini umumnya disebut sebagi hubungan dasar. Hubungan dasar Suatu relasi yang dinamai sesuai dengan suatu entitas di dalam model konseptual, dimana siapa tuples disimpan pada database. Kita dapat menggambarkan pandangan dalam kaitan dengan hubungan dasar: View Hasil yang dinamis dari satu atau lebih relasidasar untuk menghasilkan hubungan lain. Suatu view adalah suatu relasi sebenarnya yang tidak ada dalam database tetapi dihasilkan untuk permintaan oleh pemakai tertentu, pada waktu request. Suatu pandangan adalah suatu hubungan yang nampak kepada pemakai, dapat digerakkan seolah-olah adalah suatu hubungan dasar, tetapi tidak perlu disimpan di dalam storage database. Indeks suatu view digambarkan sebagai suatu query pada satu atau lebih hubungan dasar. Operasi atas pandangan secara otomatis diterjemahkan ke dalam operasi atas hubungan dasarnya. Pandangan adalah dinamis, artinya berubah sesuai kebutuhan. Kapan para pemakai meminta perubahan terhadap view, perubahan ini dibuat berdasar hubungan. 3.4.2 Purpose of Views Mekanisme view adalah didasarkan untuk beberapa pertimbangan: O Untuk menyediakan suatu mekanisme keamanan yang fleksibel dan kuat dengan menyembunyikan bagian-bagian database terhadap pemakai tertentu. Para pemakai tidak peduli dimana semua atribut atau tuples itu berada tetapi mereka memerlukan sesuai view-nya. o Memungkinkan pemakai untuk mengakses data sesuai kebutuhan mereka, sedemikian sehingga data yang sama dapat dilihat oleh para pemakai berbeda dengan cara yang berbeda. pada waktu yang sama. o Menyederhanakan operasi kompleks atas hubungan dasar. Sebagai contoh, jika suatu view digambarkan sebagai suatu kombinasi(gabungan) tentang dua hubungan ( lihat Bagian 4.1), para pemakai boleh melaksanakan operasi yang lebih sederhana pada view, yang diterjemahkan oleh DBMS ke dalam operasi gabungan relasinya. Suatu pandangan harus dirancang untuk mendukung model yang eksternal yang dikenal pemakai temukan secara umum. Sebagai contoh: o Seorang pemakai mungkin memerlukan tuple Cabang, berisi nama para manajer seperti halnya atribut lain di relasi Cabang. View ini dibuat dengan menggabungkan relasi Branch dengan suatu format yang terbatas dimana posisi staff adalah ' Manajer' o o Beberapa anggota staff perlu view terhadap tuple lihat Staff tanpa melihat atribut gaji. Atribut mungkin dinamai kembali. Sebagai contoh, pemakai terbiasa memanggil branchNo untuk atribut cabang, oleh Cabang lain diberi nama penuh yaitu : Nomor. Beberapa anggota staff melakukan view hanya arsip property yang dibawah tanggung jawab mereka. Walaupun semua contoh ini menunjukkan bahwa suatu view menyediakan data logis, view memungkinkan kebebasan pemakai untuk mengatur data secara logis. Sebagai contoh, jika suatu atribut baru ditambahkan untuk suatu hubungan, user yang ada mungkin tidak peduli pada keberadaan, jika hal itu tidak mempengaruhi kebutuhan atas view-nya. Jika suatu hubungan ada diatur kembali, suatu pandangan mungkin digambarkan sedemikian sehingga para pemakai dapat melihat lebih lanjut pandangan asli mereka. 3.4.3 Updating Views Untuk melakukan pemutakhiran suatu hubungan dasar, harus dengan seketika dicerminkan dalam semua pandangan yang mengacu pada hubungan dasarnya. Dengan cara yang sama, jika suatu pandangan dibaharui, kemudian hubungan dasar perlu mencerminkan perubahan itu. Bagaimanapun, ada pembatasan pada jenis modifikasi yang dapat dibuat melalui view. Kita meringkas kondisi-kondisi untuk pembaharuan yang diijinkan melalui suatu view: o o o Updating diijinkan melalui suatu view yang digambarkan penggunaannya adalah suatu query sederhana yang berisi hubungan dasar tunggal baik kunci utama maupun suatu kandidat kunci hubungan dasar. Updating tidaklah diijinkan sampai view menyertakan berbagai hubungan dasar. Updating tidaklah diijinkan sampai view menyertakan pengumpulan atau menggolongkan operasi Pengelompokan view digambarkan secara teoritis updatable. secara teoritis updatable. dan secara parsial updatable. Suatu survei atas proses updating relasi view ditemukan pada Furtado dan Casanova ( 1985)
© Copyright 2024 Paperzz