BAB 2 LANDASAN TEORI 2.1 Database Database adalah kumpulan relasi logikal dari data/deskripsi data yang dapat digunakan bersama dan dibuat untuk memperoleh informasi yang dibutuhkan oleh perusahaan (Connolly, 2002, p14). Selain itu, database dapat diartikan sebagai kumpulan data tetap yang dapat digunakan bersama dan saling berhubungan (Mannino, 2001, p4). Sehingga dapat disimpulkan bahwa database merupakan suatu kumpulan data–data yang berhubungan satu sama lainnya dan dapat digunakan bersama untuk suatu kepentingan. Gambaran database dapat dilihat pada Gambar 2.1, dimana perusahaan telekomunikasi diambil sebagai contoh dengan memiliki entity, relationships dan proses yang meliputinya dalam satu kesatuan database. Tagihan Pembacaan Jumlah Pulsa Entitas: Pelanggan, pembayaran, Penggunaan Relationships: Tagihan dikirim ke pelanggan, pelanggan membuat pembayaran, dan pelanggan menggunakan pulsa telepon Proses pembayaran Pelayanan Registrasi Gambar 2. 1 : Contoh Database dari Perusahaan Telekomunikasi 7 2.2 Model Relational 2.2.1 Sejarah Model Data Relational Model relasional pertama kali diajukan oleh E. F. Codd dalam penelitiannya yang berjudul “A relational model of data for shared data banks” (Codd, 1970). Saat ini penelitian itu diterima sebagai dasar dari suatu sistem database, walaupun model set-oriented telah diajukan terlebih dahulu sebelumnya (Childs, 1968). Inti dari model relasional adalah sebagai berikut: - Memungkinkan adanya independensi data tingkat tinggi. Dalam arti aplikasi tool/alat bantu tidak akan memberi dampak pada representasi data internal. - Untuk menyediakan dasar substansial untuk mengatasi data semantik, konsistensi dan redudansi, yang pada laporan penelitian E. F. Codd disebut dengan konsep relasi normalisasi yang artinya dalam relasi tersebut tidak boleh ada suatu kelompok perulangan. - Memungkinkan ekspansi dari set-oriented DML (Data Manipulation Languages) Walaupun awal ketertarikan pada model relasional berasal dari berbagai arah, akan tetapi penelitian paling signifikan yang dilakukan terdapat pada tiga proyek dengan perspektif yang berbeda. Proyek pertama yaitu pada IBM San Jose’s Research Laboratory di California, dimana prototipe dari relasional DBMS System R dikembangkan seiring akhir 1970an. Proyek ini didesain untuk membuktikan kepraktisan model relasional dengan menyediakan implementasi dari struktur data dan operasi. Selain itu juga membuktikan bahwa model relasional adalah suatu sumber dari informasi yang sangat baik tentang 8 implementasi seperti manajemen transaksi, concurency control, teknik recovery, query optimization, keamanan data dan integritas, faktor manusia dan pengguna interface dan proyek ini mengawali publikasi penelitian-penelitian pada pengembangan prototipe yang lain. Proyek System R memiliki dua inti pengembangan, yang pertama adalah pengembangan dari struktur bahasa query yang dinamakan SQL (dibaca ‘S-Q-L’, atau ‘See-Quel’), yang secara formal menjadi ISO (International Organization for Standarization) dan de facto menjadi bahasa standar untuk relasional DBMS (Data Base Management System). Sedangkan yang kedua adalah produksi dari berbagai produk relasional DBMS (Data Base Management System) diproduksi seiring akhir 1970an dan 1980an, sebagai contoh DB2 dan SQL/DS yang dikeluarkan oleh IBM dan Oracle yang dikeluarkan oleh Oracle Corporation. Pada proyek kedua terjadi suatu perkembangan yang signifikan pada model relasional yaitu INGRES (Interactive Graphics Retrieval System) di University of California di Berkeley, yang saat itu aktif pada waktu yang bersamaan dengan proyek System R. Proyek INGRES terlibat pada pengembangan prototipe RDBMS (Relational Data Base Management System), yang berkonsentrasi pada tujuan yang sama dengan System R. Penelitian ini mengawali suatu versi akademik dari INGRES, dimana yang dikontribusikan untuk apresiasi umum dari konsep relasional dan menghasilkan produk komersial INGRES yang dikeluarkan Relational Technology Inc. (sekarang INGRES 2 dari Computer Associates) dan Inteligent Database Machine dari Brittonlee Inc. Proyek ketiga adalah Peterlee Relational Test Vehicle di IBM UK Scientific Centre in Peterlee (Todd, 1976). Proyek ini lebih berorientasi pada 9 teoritikal dibandingkan proyek System R dan INGRES. Pada prinsipnya, penelitian ini ditujukan kepada proses query, optimisasi, dan ekstensi fungsional. Sistem komersial yang didasarkan pada model relasional mulai muncul pada akhir 1970 dan pada awal 1980. Terdapat ratusan macam RDBMS (Relational Data Base System) untuk lingkungan mainframe dan PC, walaupun banyak diantaranya yang tidak mengikuti definisi dari model relasional tersebut. Contoh dari RDBMS (Relational Data Base Management System) berbasis PC yaitu Accses dan FoxPro yang dikeluarkan oleh Microsoft, Paradox oleh Corel Corporation, InterBase dan BDM oleh Borland dan yang terakhir R:Base oleh R:BASE Technology. Seiring dengan kepopularitasan dari model relasional, banyak sistem non-relasional yang kini dilengkapi dengan relasional pengguna interface terlepas dari model yang ada. Computer Associates DBMS yang merupakan jaringan prinsip dari DBMS (Data Base Management System) telah menjadi CA-IDMS SQL, yang mendukung view data relasional. Pada mainframe DBMS (Data Base Management System) lain, yang mendukung beberapa fitur relasional adalah Model 204 milik Computer Corporation of America dan ADABAS milik Software AG. Beberapa ekstensi dari model data relasional telah diajukan, sebagai contoh ekstensi pada: - Pengambilan arti data lebih dekat lagi (contohnya, Codd, 1979) - Mendukung konsep yang berorientasi objek (contohnya, Stonebraker dan Rowe, 1986) - Mendukung kemampuan deduktif (contohnya, Gardarin dan Valduriez, 1989). 10 2.2.2 Pengertian Model Relasional Model data relasional didasari oleh suatu konsep hubungan matematika, dimana di dalam model data relasional, data dan hubungan yang ada diantaranya direpresentasikan dengan menggunakan tabel-tabel, yang memiliki sejumlah kolom dengan nama yang unik (Connolly, 2002, pp45-46, p71 ). Tabel 2.1 dan Tabel 2.2 adalah contoh dari model data relasional. Tabel 2. 1 : Tabel Mahasiswa NIM M001 M002 M003 M004 kd_mtk T001 T002 T003 T001 Nama Agus Budi Ratna Isak Alamat Jl. Bunga No. 1 Jl. Pemuda No. 3 Jl. Jeruk No. 23 Jl. Manggis No 156 Tabel 2. 2 : Tabel Kuliah kd_mtk T001 T002 T003 Fakultas Teknik Informatika Akuntansi Hukum Sebagai contoh pada Tabel 2.1 mahasiswa dengan NIM ‘M001’ adalah Agus dengan kd_mtk ‘T001’, dimana pada Tabel 2.2 diketahui ‘T001’ merupakan Fakultas Teknik Informatika. Jadi kedua tabel di atas dapat dikatakan saling berhubungan atau antara mahasiswa dan kuliah memiliki suatu relasi. Karena kedua tabel tersebut tidak memiliki explicit link yang lain, maka kd_mtk yang berada pada Tabel 2.1 dan kd_mtk yang berada pada Tabel 2.2 adalah sama. 11 2.2.2.1 Struktur Data Relasional Data relasional tersusun atas beberapa bagian sehingga membentuk kesatuan data relasional. Struktur yang menyusunnya adalah sebagai berikut: a. Relasi Relasi merupakan sebuah tabel yang tersusun atas columns (kolom-kolom) dan rows (baris-baris) (Connolly, 2002, p72). Sebuah RDBMS (Relational Data Base Management System) dibutuhkan hanya karena agar pengguna dapat melihat data dalam bentuk tabel. Namun persepsi ini hanya dapat dilihat pada struktur database logikal, yaitu eksternal dan level konseptual dari arsitektur ANSI–SPARC. Namun tidak dapat dilakukan pada struktur database fisikal, dimana pada tahap ini dapat diimplementasikan dengan struktur penyimpanan yang bervariasi. b. Atribut Atribut merupakan columns (kolom-kolom) dari suatu relasi (tabel) (Connolly, 2002, p72). Dalam model relasional, relasi merupakan informasi tentang objek yang butuh direpresentasikan ke dalam database. Sebuah relasi direpresentasikan sebagai tabel 2 dimensi, dimana baris dari tabel berkorespondensi pada records individual dan kolom dari tabel berkorespondensi dengan atribut. c. Domain Domain merupakan himpunan nilai dari satu atau lebih atribut (Connolly, 2002, p172). Domain terdiri dari 2 bagian yaitu nama domain 12 (Domain Name) dan definisi dari domain (Domain Definition). Nama domain digunakan untuk menjelaskan lebih lanjut arti nama dari atribut atau informasi apa yang ada di dalam atribut itu, contohnya atribut DOB maka nama domain-nya adalah Date of Birth menjelaskan bahwa DOB berisi informasi data kelahiran. Sedangkan definisi dari domain (Domain Definition) berisi nilai apa yang diperbolehkan untuk mengisi atribut tersebut, contohnya Alamat dengan nama domain alamat tempat tinggal, dan definisi domain-nya adalah character, 50, yang artinya field alamat diisi alamat tempat tinggal dan hanya boleh diisi tipe data karakter dan sebanyak 50 kata. d. Tuple Tuple merupakan baris dari suatu relasi atau tabel (Connolly, 2002, p73). Seperti contoh pada tabel Mahasiswa dimana setiap tuple dari datanya memiliki 2 nilai. Dalam struktur sebuah relasi spesifikasi domain dan batasan lain yang mungkin dalam suatu nilai disebut intension, sedangkan yang dapat berubah sewaktu-waktu disebut extension. e. Degree Degree merupakan banyaknya atribut atau kolom pada suatu tabel (Connolly, 2002, p174). Derajat ini dibagi menjadi beberapa macam yaitu unary artinya derajatnya satu, artinya setiap tuple memiliki satu nilai (one-tuple), binary untuk derajat dua, tenary untuk derajat tiga dan n-ary untuk derajat yang lebih dari tiga. Derajat (degree) merupakan properti dari intension. 13 f. Cardinality Cardinality merupakan banyaknya tuple atau baris pada suatu tabel (Connolly, 2002, p74). Kardinalitas merupakan properti dari extension karena dapat berubah-ubah. Kardinalitas berubah ketika jumlah baris (tuple) berubah, misal ditambah atau dihapus. Gambar 2. 2: Instansi dari relasi Branch dan Staff (Connolly,p73). g. Relasional Database Koleksi dari relasi-relasi yang telah dinormalisasi dengan nama relasi yang berbeda (Connolly, 2002, p74). Database relasional berisi relasi yang terstruktur dengan tepat. Terstruktur yang dimaksud ini adalah normalisasi. 14 2.2.2.2 Relasi Matematika Agar dapat lebih mengerti apa yang dimaksud dengan relasi maka diperlukan pengkajian ulang dari beberapa konsep matematika. Sebagai contoh, dimisalkan ada dua buah set, D1 dan D2, dimana D1 ={2,4} dan D2 = {1,3,5}. Produk kartesian dari dua buah set tersebut dapat ditulis D1 X D2 dimana set dari seluruh pasangan yang dihasilkan memiliki urutan elemen pertama adalah member dari D1 dan elemen ke dua adalah member dari D2. Ada cara alternatif untuk mengkombinasikan elemen- elemen ini : D1 X D2 = {(2.1),(2.3),(2.5),(4.1),(4.3),(4.5)}. Subset dari produk kartesian ini adalah sebuah relasi. Sebagai contohnya dapat diproduksi sebuah relasi R dimana : R = {(2,1),(4,1)}. Jika urutan pasangan yang ada di dalam suatu relasi ingin dispesifikasi maka dapat diberikan beberapa kondisi sebagai seleksi. Contohnya jika diinginkan sebuah relasi R yang berisi pasangan dimana elemen kedua adalah satu maka R dapat ditulis dengan cara: R ={(x,y) | x є D1 ,y є D2,dan y=1}. Dengan menggunakan set yang sama dapat juga dibuat relasi yang lain, S, dimana elemen pertama adalah dua kali elemen keduanya. Maka S dapat ditulis dengan cara: S ={(x,y) | x є D1 , y є D2, dan x = 2y}. Notasi dari relasi tersebut dapat dikembangkan dengan menggunakan tiga set. Misalkan terdapat tiga buah set D1 , D2, dan D3 maka kartesian produknya 15 dapat ditulis D1 X D2 X D3 dengan urutan set-nya elemen pertama berasal dari D1 , elemen kedua berasal dari D2 dan elemen ketiga berasal dari D3. Sebagai contoh: D1 = {1,3}, D2 = {2,4}, D3 = {5,6}. D1 X D2 X D3 = {(1.2.5), (1.2.6), (1.4.5), (1.4.6), (3.2.5), (3.2.6), (3.4.5), (3.4.6)}. Subset dari hasil produk kartesian ketiga set tersebut adalah sebuah relasi. Dari ketiga set tersebut, notasi dapat dikembangkan dan didefinisikan untuk relasi umum, misalnya jika terdapat n domain. Sebagai contoh terdapat n buah set, D1 , D2,... , Dn, maka dapat dibuat produk kartesiannya dengan cara: D1 X D2 X .... X Dn = {(d1 ,d2,...dn) | d1 є D1 , d2 є D2, dn є Dn } atau dapat ditulis dengan Setiap subset dari n baris yang berasal dari produk kartesian di atas adalah sebuah relasi dari n sets. 2.2.2.3 Relasi Database Berdasarkan konsep database di atas, dapat didefinisikan bahwa relasi skema adalah sebuah nama relasi yang didefinisikan oleh sebuah set pasangan dari atribut dan nama domain (Connolly, 2002, p76). Misalkan A1, A2, ..., An merupakan atribut dengan domain D1, D2, ..., Dn. Maka set yang dihasilkan yaitu {A1 : D1, A2 : D2, .... , An : Dn} adalah sebuah skema relasi. Sebuah relasi R 16 didefinisikan oleh sebuah skema relasi S yang merupakan set pemetaan dari nama atribut dengan domain korespondensinya. Jadi, relasi R merupakan set dari n-tuples (baris) : (A1 : d1, A2 : d2, ...., An : dn) dimana d1 є D1, d2 є D2, .... , dn є Dn. Setiap elemen di n-tuples terdiri dari sebuah atribut dan nilai dari atribut tersebut. Biasanya, ketika relasi ditulis dalam bentuk tabel, maka nama atribut akan ditulis sebagai judul kolom dan menuliskan tuple sebagai baris yang memiliki bentuk format (d1, d2,....., dn), dimana setiap nilai diambil dari domain yang cocok. Dengan demikian dapat dikatakan bahwa suatu relasi dalam model relasional adalah suatu subset dari produk kartesian dari domain suatu atribut. Sebuah tabel merupakan suatu representasi fisik yang sederhana dari sebuah relasi. Sebagai contoh relasi Branch pada Gambar 2.2. dimana Branch di atas memiliki 4 atribut yaitu branchNo, street, city, postcode, dengan domain-nya masing-masing. Artinya relasi Branch adalah suatu hasil dari produk kartesian domain-nya, atau set dari four-tuple lain, dimana elemen pertama adalah domain BranchNumber, elemen kedua adalah domain dari StreetName, dan seterusnya. Satu dari four-tuples adalah {B005, 22 Deer Rd, London, SW14EH} atau tepatnya BranchNo: B05, StreetName: 22 Deer Rd, city: London, postcode: SW14EH. 17 Bentuk di atas biasa disebut dengan instansi relasi. Tabel Branch adalah cara paling baik untuk menuliskan seluruh bentuk relasi four- tuples. 2.2.2.4 Properti dari relasi Sebuah relasi memiliki properti seperti di bawah ini: - Relasi memiliki nama yang berbeda dari seluruh relasi yang ada dalam sebuah skema relasional. - Setiap sel dari sebuah relasi berisi tepat satu nilai tunggal (atomik). Contohnya ketika sebuah sel diwajibkan untuk memiliki hanya satu nilai, maka akan tidak sah jika diisikan lebih dari pada satu atau dua nilai ke dalam sel tersebut. Contohnya, pada Branch isi dari postcode hanya diizinkan berisi satu nilai dan tidak lebih. Relasi ini dikatakan ternormalisasi atau dalam format normal 1 (first normal form). - Setiap atribut memiliki nama-nama yang berbeda - Nilai dari suatu atribut adalah berasal dari domain-nya. Contohnya pada tabel Branch, branchNo dengan domain branchNumber harus berisi nomor branch dan tidak diijinkan berisi postcode. - Setiap baris selalu berbeda, tidak ada baris yang terduplikasi - Urutan dari atribut tidak boleh signifikan 18 Pada umumnya urutan dari penempatan kolom tidak berpengaruh. Misalnya pada Branch kolom “city” diletakan sebelum kolom “street” tidak akan terlalu berpengaruh, hanya saja akan lebih baik jika kolom-kolom tersebut ditulis dalam format alamat yang standar. - Urutan dari baris tidak boleh signifikan (pada prakteknya urutan akan mempengaruhi efisiensi dalam mengakses baris). Urutan baris juga tidak berpengaruh pada arti data, sebagai contoh dari tabel Branch, tuple B005 ditempatkan di atas baris B004 akan tidak membawa pengaruh apa-apa (tidak mengubah makna) Sebagian besar dari properti yang dispesifikasi untuk hasil relasi berasal dari properti matematika : - Ketika produk kartesian diderivasikan dari suatu set dengan sederhana, elemen nilai tunggal (single value) seperti integer, setiap elemen dalam setiap baris adalah nilai tunggal. Singkatnya setiap sel dalam relasi hanya memiliki tepat satu nilai. Akan tetapi dalam relasi matematika tidak dibutuhkan normalisasi. Dan menyederhanakan kelompok suatu model perulangan data relasional untuk tidak diperbolehkan. - Dalam sebuah relasi, nilai yang mungkin pada posisi yang diberikan akan dijelaskan oleh set atau domain, dimana posisi 19 yang telah didefinisikan. Dalam sebuah tabel nilai dari setiap kolom harus berasal dari domain attribute yang sama. - Dalam sebuah set tidak ada elemen yang diulang. Demikian pula dalam sebuah relasi tidak ada baris yang duplikat atau berulang. - Sebuah relasi adalah sebuah set, dimana urutan dari elemenelemennya tidak bersifat signifikan. Oleh karena itu dalam sebuah relasi, urutan dari baris adalah tidak penting. Walau bagaimanapun dalam sebuah relasi matematika, urutan elemen dalam suatu baris sangat penting. Sebagai contoh dalam relasi matematika (1.2) tidak sama artinya dengan (2.1). 2.2.2.5 Kunci-kunci relasional (Relational Keys) Sebagaimana telah disebutkan di atas, bahwa tidak ada baris (tuple) yang berulang dalam sebuah relasi. Oleh karena itu, dibutuhkan untuk mampu mengidentifikasikan satu atau lebih atribut yang secara unik mengidentifikasikan setiap baris dalam suatu relasi. a. Superkey Sebuah atribut atau set dari atribut-atribut, yang secara unik mengidentifikasikan sebuah baris (tuple) dalam sebuah relasi (Connolly, 2002, p78). b. Candidate key Adalah sebuah superkey yang tidak secara tepat sebuah subset sebuah superkey dalam suatu relasi (Connolly, 2002, p78). 20 Dalam arti kata lain, candidate key adalah key yang mungkin untuk menjadi suatu primary key. Sebuah candidate key, K, untuk sebuah relasi R memiliki dua properti : - Bersifat unik (uniqueness = dalam setiap baris dari setiap R, nilai dari K secara unik mengidentifikasikan baris tersebut.) - Ireducibility, tidak secara tepat subset dari K yang memiliki property unik. Ketika sebuah key terdiri dari lebih dari satu atribut maka key tersebut disebut composite key. c. Primary key Candidate key yang dipilih untuk mengidentifikasikan baris secara unik dalam sebuah relasi (Connolly, 2002, p79). Candidate key yang tidak terpilih sebagai primary key disebut alternate key. d. Foreign key Sebuah atribut atau set dari atribut-atribut, dimana suatu relasi yang cocok dengan candidate key dari beberapa relasi (Connolly, 2002, p79). 2.2.3 Integritas Relasional Data model memiliki dua bagian, yaitu bagian manipulasi yang mendefinisikan tipe-tipe operasi yang diijinkan pada data dan sebuah set aturan integritas, dimana data diyakinkan adalah akurat. 21 Sejak setiap atribut memiliki domain yang berasosiasi, ada batasan (batasan domain) aturan bentuk pada set dari nilai-nilai yang diijinkan untuk atribut dari suatu relasi. Ada dua aturan integritas, dimana ada batasan atau aturan untuk menampilkan semua instansi dari database. Dua aturan utama untuk model relasional dikenal sebagai integritas entitas (entity integrity) dan integritas referensial (referential integrity). Sebelumnya perlu dipahami dahulu konsep daripada nulls, untuk mengerti integritas relasional. 2.2.3.1 Nulls Menunjukan sebuah value atau nilai untuk sebuah atribut yang isinya tidak diketahui atau tidak dapat dipakai untuk baris ini. Bagaimanapun null tidak dapat disamakan dengan nilai nol (zero numeric) atau kata yang berisi spasispasi, nilai nol dan spasi adalah nilai, tapi null menunjukan ketidakadanya sebuah nilai. Oleh karena itu, nulls harus dibedakan dari nilai yang lain. Kadang menggunakan istilah “null Value”, bagaimanapun null bukan sebuah nilai tapi merepresentasikan ketidakadanya sebuah nilai, istilah ‘nilai null’ adalah tidak baik. 2.2.3.2 Integritas Entitas Aturan integritas pertama adalah ditujukan untuk primary key. Integritas entitas adalah tidak adanya atribut dari primary key yang bernilai null di dalam relasi dasar (Connolly, 2002, p82). Primary key merupakan cara minimal yang digunakan untuk mengidentifikasikan baris secara unik. Ini berarti tidak ada subset dari primary 22 key yang mampu untuk memberikan identifikasi unik dari baris. Jika diijinkan adanya null di bagian mana saja dari primary key, maka dengan secara tidak langsung menyatakan bahwa tidak semua atribut dibutuhkan untuk membedakan baris yang satu dengan baris yang lain, dimana hal ini merupakan hal yang bertolak belakang dengan definisi dari primary key. Sebagai contoh, jika dalam relasi Branch yang memiliki primary key berupa branchNo, tidak dibolehkan untuk memasukan baris ke dalam relasi Branch dengan nilai null ke atribut branchNo. Contoh lainnya seperti pada Tabel 2.3, dengan melihat composite primary key di dalam relasi Viewing, yang terdiri dari clientNumber (clientNo) dan propertyNumber (propertyNo), tidak diijinkan untuk memasukkan baris ke dalam relasi Viewing dengan nilai Null baik untuk atribut clientNo ataupun atribut propertyNo, bahkan untuk kedua atribut tersebut. Tabel 2. 3 : Relasi viewing (Connolly,p80) clientNo CR56 CR76 CR56 CR62 CR56 PropertyNo PA14 PG4 PG4 PA14 PG36 viewDate 24-May-01 20-Apr-01 26-May-01 14-May-01 28-Apr-01 comment Too small Too remote No dining room 2.2.3.3 Integritas Referensial Aturan integritas kedua ditujukan untuk foreign keys. Integritas referensial adalah dimana jika sebuah foreign key yang ada dalam sebuah relasi, maka salah satu dari nilai foreign key tersebut harus cocok pada sebuah nilai candidate key dari beberapa baris dalam home relasi atau nilai foreign key harus 23 semuanya null (Connolly, 2002, p83). Sebagai contohnya, branchNo dalam relasi Staff dimana sebuah foreign key ditargetkan ke atribut branchNo dalam home relasi, Branch. Dimana tidak mungkin untuk membuat sebuah Staff record dengan noBranch ‘B025’, jika sebuah record untuk branchNo ‘B025’ dalam relasi Branch belum ada. Jadi harus dapat dibuat sebuah record Staff dengan branchNo yang bernilai null, untuk memenuhi situasi dimana sebuah member baru dari staff diikutkan oleh perusahaan tetapi belum diberikan keterangan kepada kantor cabang. 2.2.3.4 Batasan Kegiatan (Enterprise Constraint) Aturan tambahan yang dispesifikasikan oleh pengguna atau database administrator dari sebuah database (Connolly, 2002, p82). Ini juga memungkinkan pengguna menambahkan ketentuan batasan yang harus dipenuhi pada data. Sebagai contoh jika ada sebuah kelebihan limit dari 20 (an upper limit of 20) yang diletakkan pada nomor dari Staff yang bekerja pada kantor cabang, kemudian pengguna harus dapat menspesifikasikan dan mengharapkan DBMS dapat menjalankannya. Dalam kasus ini, tidak mungkin ditambahkan sebuah member baru dari staff pada cabang yang diberikan pada relasi Staff jika nomor pada Staff saat ini diberikan kepada cabang adalah 20. 2.2.4 Views Di dalam arsitektur 3 level ANSI-SPARC, eksternal view digambarkan sebagai struktur dari database yang berhubungan dengan pengguna. Akan tetapi di dalam model relasional, view merupakan virtual atau relasi turunan. Sebuah 24 relasi yang tidak perlu ada dengan cara sendiri tetapi mungkin diturunkan secara dinamik dari satu atau lebih relasi dasar. Jadi model eksternal dan mengandung baik berupa relasi konseptual level maupun view yang diturunkan dari relasi dasar. 2.2.4.1 Terminology Relasi dasar (base relation) merupakan suatu nama bagi relasi yang berkorespondensi dengan entitas di skema konseptual, dimana tuple-tuple disimpan secara fisik ke dalam database. Dalam hubungan dengan relasi dasar, view dapat didefinisikan sebagai hasil dinamik dari satu atau lebih operasi relasional di dalam relasi dasar untuk menghasilkan relasi lainnya. Atau view merupakan relasi virtual yang tidak perlu ada di dalam database tetapi dapat dihasilkan pada saat adanya permintaan dari pengguna yang berbeda. View merupakan relasi yang keberadaanya dirasakan oleh pengguna, dapat dimanipulasi jika berada di dalam relasi dasar, tetapi tidak perlu ada di tempat penyimpanan (meskipun di definisi, hal ini disimpan di dalam katalog sistem). Isi daripada view didefinisikan sebagai query di dalam satu atau lebih relasi dasar. Secara otomatis, operasi pada view diterjemahkan ke dalam operasi relasi dimana relasi itu diturunkan. View sangat dinamik, sehingga jika ada perubahan di dalam relasi dasar, dengan segera hal ini akan berpengaruh juga terhadap view. Jika pengguna diperbolehkan untuk melakukan perubahan pada view, maka perubahan tersebut akan terjadi pada relasi juga. 25 2.2.4.2 Tujuan dari views Pandangan mekanis yang diinginkan untuk beberapa alasan adalah sebagai berikut : - Membuat sebuah mekanis yang kuat dan keamanan fleksibel dengan menyembunyikan bagian-bagian dari database dari beberapa pengguna, dimana pengguna tidak tahu akan adanya beberapa atribut atau tuple-tuple yang hilang dari pandangan. - Pengguna diizinkan untuk mengakses data dalam sebuah arah yang disesuaikan dengan keperluannya, sehingga data yang sama dapat dilihat oleh pengguna yang berbeda dalam langkahlangkah yang berbeda pada waktu yang sama. - Dapat menyederhanakan operasi yang kompleks pada relasi dasar. Contoh, jika sebuah pandangan didefinisikan sebagai kombinasi (join) dari dua relasi, pengguna-pengguna dapat melakukan operasi yang lebih sederhana pada view, dimana akan diterjemahkan oleh DBMS (Data Base Management System) ke dalam operasi yang sana pada operasi join. Sebuah view harus dirancang untuk mendukung model eksternal, sehingga pengguna akan terbiasa, sebagai contoh : - Pengguna membutuhkan tuple Branch yang mengandung nama dari manager-manager sama seperti atribut lainnya yang sudah ada di Branch. View ini dibuat dengan mengkombinasikan relasi Branch dengan dibatasi dari relasi Staff dimana posisi staff adalah ‘Manager’. 26 - Beberapa member dari Staff dapat melihat tuple-tuple Staff tanpa atribut salary. - Penamaan dari atribut-atribut dapat diulang atau pemesanan dari atributatribut tersebut diubah. Contohnya, pengguna dibiasakan untuk memanggil atribut branchNo dari cabang-cabang dengan nama lengkap Branch Number dapat melihat kolom diatas. - Beberapa member-member dari Staff dapat melihat record-record untuk properti-properti yang telah diatur. 2.2.4.3 Pembaharuan View (updating view) Seluruh pembaharuan pada relasi dasar dengan segera akan mengubah view yang berhubungan dengan relasi dasar. Sama halnya jika view yang diperbaharui, maka relasi dasar yang berhubungan akan segera berubah juga. Bagaimanapun, ada tipe batasan untuk memodifikasi yang dibuat melalui view. Kondisi-kondisi yang diijinkan untuk memperbaharui dengan menggunakan view adalah sebagai berikut : - Update diijinkan melalui view yang didefinisikan menggunakan query sederhana yang melibatkan relasi dasar tunggal dan mengandung baik primary key atau candidate key di dalam relasi dasar. - Update tidak diijinkan melalui view dengan melibatkan multiple relasi dasar. - Update tidak diijinkan melalui view dengan melibatkan aggregasi atau operasi kelompok . 27 View dapat dibagi menjadi beberapa kelas, yaitu : theoretically not updateable, theoretically updateable, dan partially updateable. 2.3 Model Entity Relationship (ER Model) Pemodelan Entity Relationship mengacu berdasarkan top-down analisis database desain yang dimulai dengan mengidentifikasi data-data penting yang disebut entitas (entity) dan relasi antara data-data yang harus direpresentasikan di dalam model. Relasi entitas terdiri dari bagian–bagian yang menyusunnya, yaitu: 2.3.1 Entity types (Tipe Entitas) Tipe entitas adalah kumpulan objek yang mempunyai karakteristik yang sama dimana telah diidentifikasi oleh perusahaan (Connolly,2002,p331). Selain itu tipe entitas dapat juga dikatakan sebagai kumpulan dari entitas yang memiliki tipe dan karakteristik yang sama (Silberschatz,2002,p27). Dengan demikian dapat disimpulkan bahwa tipe entitas adalah kumpulan objek-objek yang memiliki karakteristik atau properti yang sama, serta objek yang sangat berpengaruh atau yang sangat berperan dalam setiap bisnis perusahaan, yang kemudian digunakan untuk menyusun diagram hubungan entitas (entity relationships). Sebuah entitas memiliki eksitensinya sendiri yang dapat merupakan objek dengan eksistensi fisik (nyata) atau objek dengan eksistensi konseptual (abstrak). 28 Gambar 2. 3 : Bentuk entitas (Connolly,p333). 2.3.2 Relationship types (Tipe hubungan) Tipe hubungan adalah hubungan antar entitas (entity) yang saling berhubungan dan mempunyai arti (Connolly,2002,p334). Gambar 2. 4 : Tentang tipe Has relasi (Connolly,p334). Gambar 2.4 memberikan gambaran lebih lanjut mengenai arti relasi, dimana ada relasi antara Branch dan Staff yang dinamakan Has, jadi artinya adalah setiap Branch (cabang) mempunyai Staff (staf atau karyawan). Derajat dari tipe relasi Relasi antar entitas memiliki derajat/tingkat hubungan yang disebut dengan derajat relasi (degree of relationship), yang artinya jumlah entitas yang 29 terlibat dalam sebuah relasi. Derajat relationship terdiri dari beberapa jenis, yaitu: a. Binary Relationship Relasi Binary merupakan hubungan antara dua tipe entitas atau antara dua objek. Contoh hubungan binary adalah PrivateOwner dengan PropertyForRent yang disebut POwns (Gambar 2.5). Gambar 2. 5 : Relasi binary yang disebut Powns (Connolly,p336) b. Ternary Relationship Hubungan Ternary merupakan hubungan antara tiga tipe entitas. Contoh hubungan Ternary yang dinamakan Registers. Relasi ini melibatkan tiga tipe entitas yaitu Staff, Branch dan Client. Hubungan ini menggambarkan staff mendaftarkan client pada branch (Gambar 2.6). Gambar 2. 6 : Gambar relasi ternary disebut Registers (Connolly,p336) c. Quaternary Relationship Merupakan hubungan antar empat tipe entitas. Contoh hubungan Quaternary yang dinamakan melibatkan 4 buah 30 entitas yaitu Arranges. Relasi ini Buyer, Solicitor, FinancialIntstuttion dan Bid. Relasi ini menggambarkan Buyer, diberi masukan oleh Solicitor, dan didukung oleh FinancialInstitution, melakukan penawaran (Gambar 2.7). Gambar 2. 7 : Gambar relasi quarternary disebut Arranges (Connolly,p337) d. Recursive Relationship Hubungan Unary merupakan hubungan antar satu tipe entitas, dimana tipe entitas tersebut berpartisipasi lebih dari satu kali dengan peran yang berbeda. Unary juga bisa disebut sebagai hubungan recursive. Contoh hubungan unary adalah entitas Staff yang berperan menjadi supervisor dan staff yang di-supervisor-i (Gambar 2.8). Gambar 2. 8 : Relasi rekursif disebut Supervises (Connolly,p337) 31 Gambar 2. 9 : Contoh dari entitas yang diasosiasikan pada dua perbedaan relasi (Connolly,p338) 2.3.3 Atribut dan atribut domains Atribut adalah karakteristik dari suatu entitas atau relasi (Connolly,2002,p338). Setiap atribut diperbolehkan untuk memiliki nilai yang disebut dengan domain. Atribut domain adalah kumpulan dari nilai-nilai yang diperbolehkan untuk satu atau lebih atribut Ada beberapa jenis dalam atribut: a. Simple attribute dan composite attribute Simple attribute adalah atribut yang terdiri dari komponen tunggal dimana atribut tersebut tidak dapat dipisahkan lagi. Sedangkan composite attribute adalah atribut yang masih dapat dipisahkan lagi menjadi beberapa menjadi beberapa bagian (Silberschatz,2002,p29). Selain itu simple attribute juga dapat dikatakan adalah sebuah atribut yang terkomposisi dari komponen 32 tunggal dan memiliki eksitensi sendiri, sedangkan composite attribute adalah sebuah atribut yang terkomposisi dari komponen jamak yang masing-masingnya memiliki eksitensi sendiri (Connolly,2002,p339). Contoh dari simple attribute adalah tanggalLahir dan sedangkan untuk composite attribute adalah alamatMahasiswa yang terdapat pada entitas mahasiswa karena dalam alamatMahasiswa bisa dibagi menjadi beberapa bagian seperti atribut street, city dan postcode. b. Single-valued attribute dan Multi-valued attribute Single-valued attribute adalah atribut yang memiliki satu nilai atau mengandung satu nilai pada setiap entitas. Sedangkan multi-valued attribute adalah atribut yang mempunyai beberapa nilai pada setiap entitas (Connolly,2002,p339-340). Contoh dari single-valued attribute adalah NIM, namaMhs, tanggalLahir dan lain-lain. Sedangkan untuk multi-valued attribute, contohnya adalah JamPelajaran, Hobi dan lain –lain. c. Derived attribute Derived attribute merupakan atribut yang nilai–nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut lain yang berhubungan (Silberschatz,2002,p30). Namun derived attribute juga dapat diartikan sebuah atribut yang merepresentasikan suatu nilai yang mampu diderivasikan dari nilai suatu atribut yang berelasi atau serangkaian atribut, yang 33 tidak berasal dari entitas yang sama (Connolly,2002,p340). Contohnya adalah atribut umur pada entitas mahasiswa dimana atribut tersebut diturunkan dari atribut tanggalLahir. d. Keys Keys terdiri dari beberapa jenis, yaitu : - Candidate Key, yaitu jumlah minimal dari serangkaian atribut-atribut yang dapat mengidentifikasikan setiap kejadian/record secara unik dari suatu entitas, atau dapat dikatakan mungkin kumpulan untuk memjadi atribut-atribut primary yang key (Connolly,2002,p340). - Primary Key, yaitu Candidate key yang dipilih untuk mengidentifikasikan setiap kejadian/record dari suatu entitas secara unik (Connolly,2002,p341). - Composite Key, yaitu candidate key yang terdiri dua atau lebih atribut. 2.3.4 Entitas Kuat dan Entitas Lemah (Strong dan Weak Entity) Entitas (entity) dapat dibedakan menjadi dua yaitu: • Strong Entity : entitas yang keberadaannya tidak tergantung kepada entitas lain (Connolly,2002,p342). • Weak Entity : entitas yang keberadaannya tergantung dari entitas lain (Connolly,2002,p343). 34 Contohnya adalah entitas dari mahasiswa dan orang tua. Dimana mahasiswa merupakan entitas kuat, sedangkan orang tua merupakan entitas lemah dimana keberadaan entitas orang tua tergantung dari entitas mahasiswa. Namun entitas dapat dikatakan kuat (strong) atau lemah (weak) tergantung pada konteks penggunaannya. 2.3.5 Atribut dalam Relasi-Relasi Atribut juga dapat ditambahkan dalam suatu relasi. Sebagai contoh dimisalkan suatu relasi Advertises, yang berasosiasi dengan PropertyForRent yang ditunjukan pada Gambar 2. 10. Untuk mendata informasi tentang properti yang diiklankan serta biayanya, maka informasi ini dapat diasosiasikan pada entitas Advertises sebagai atribut dateAdvert (tanggal iklan) dan cost (biaya iklan), dibandingkan dimasukan dalam entitas NewsPaper atau PropertyForRent. Gambar 2. 10 : Gambar sebuah relasi disebut Advertises dengan atribut-atribut date Advert dan cost (Connolly,p344) Representasi diagramatik dari atribut dalam relasi dapat ditulis dengan simbol layaknya suatu entitas. 35 2.3.6 Batasan struktural Salah satu tipe utama dari batasan dalam suatu relasi adalah multiplicity. Multiplicity adalah jumlah (range) yang mungkin dari suatu kejadian sebuah entitas berelasi dengan kejadian tunggal dari suatu tipe entitas yang berasosiasi melalui suatu hubungan (Connolly,2002,p344). Multiplicity adalah cara dimana suatu entitas berhubungan, selain itu juga merupakan representasi dari kebijakan (aturan bisnis) yang dikeluarkan pengguna atau perusahaan. Memastikan bahwa segala halnya cocok dengan batasan perusahaan (enterprise constraints) yang diidentifikasikan dan direpresentasikan sangatlah penting dalam bagian pembuatan model dari suatu perusahaan. Derajat yang umum dalam sebuah relasi merupakan derajat dua atau binary. Tipe – tipe hubungan binary adalah : • one-to-one (1:1) Gambar 2. 11 : Gambar tentang tipe relasi Staff Manages Branch (Connolly,p345) 36 Gambar 2. 12 : Gambar tentang relasi keserbaragaman dari Staff Manages Branch one-to-one (1:1) (Connolly,p346) • one-to-many (1 : *) Gambar 2. 13 : Gambar tipe relasi pada Staff Oversees PropertyForRent (Connolly,p346) Gambar 2. 14 : Gambar tipe relasi keserbaragaman dari Staff Oversees PeopertyForRent one-to-many (1:*) (Connolly,p347) 37 • many-to-many (* : *) Gambar 2. 15 : Gambar tipe relasi Newspaper Advertises PropertyForRent (Connolly,p348) Gambar 2. 16 : Gambar relasi keserbaragaman pada Newspaper Advertises PropertyForRent many-to-many (*:*) (Connolly,p348) • Multiplicity untuk relasi yang kompleks Multiplicity untuk relasi yang kompleks yang dimaksudkan adalah relasi yang derajatnya lebih tinggi dari binary. Multiplicity untuk relasi yang kompleks adalah jumlah (range) kemungkinan kejadian tipe entitas dalam sebuah relasi n-ary, dimana nilai yang lain (n-1) tetap (Connolly,2002,p349). • Cardinality dan Participant Constraints Multiplicity terdiri dari dua batasan yang terpisah yaitu kardinalitas (cardinality) dan partisipasi (participation). Kardinalitas mendeskripsikan angka maksimum yang mungkin dalam suatu 38 relasi untuk sebuah entitas yang berpartisipasi dalam tipe relasi yang dibutuhkan dan partisipasi juga mendeterminasikan apakah satu atau hanya sebagian dari entitas yang berpartisipasi dalam sebuah relasi (Connolly,2002,p351). 2.3.7 Masalah dalam ER model Masalah dalam model relasi entitas (Entity Relationship) adalah yang biasa dimaksud dengan connection traps. Jenis utama dari connection traps ini terdiri dari dua jenis yaitu fan traps dan chasm traps. Fan traps adalah dimana model mereprentasikan hubungan antara tipe entitas, tetapi jalan diantara entitas tertentu sangat ambigous (Connolly,2002,p352). Fan traps muncul dimana dua atau lebih hubungan oneto-many (1:*) fan out dari satu entitas yang sama (Gambar 2.17). Sebagai contoh seperti model yang direpresentasikan oleh suatu entitas Division, dimana satu divisi mengoperasikan satu atau lebih Branch, dan satu division memiliki satu atau lebih Saff. Namun sebuah masalah timbul ketika ingin diketahui seorang staff bekerja di branch yang mana. Oleh karena itu, ER model perlu direstruktur kembali, yang digunakan untuk membetulkan asosiasi yang ada diantara entitas-entitas (Gambar 2.19). Gambar 2. 17 : Gambar contoh fan trap (Connolly,p352) 39 Gambar 2. 18 : Gambar hubungan semantik pada ER model (Connolly,p352) Gambar 2. 19 : Gambar model ER direstruktur untuk menghilangkan fan trap (Connolly,p353) Gambar 2. 20 : Gambar rangkaian semantik dari ER model (Connolly,p353) Chasm traps adalah dimana sebuah model yang membutuhkan eksistensi suatu hubungan antara tipe entitas, namun jalan diantara entitas tertentu tidak ada 40 (Connolly,2002,p353). Chasm traps muncul dimana satu atau lebih relasi dengan multiplicity minimum adalah nol (0) yang merupakan optional participation membentuk suatu bagian jalan hubungan antar entitas. Contoh yang potensial terdapat pada relasi entitas Branch, Staff, dan PropertyForRent (Gambar 2.21). Dimana masalah ini merepresentasikan kenyataan bahwa Branch memiliki satu atau lebih staff yang bekerja, dan staff yang telah melihat nol (0) atau lebih properti. Masalahnya akan muncul ketika dicari tahu properti mana yang tersedia dari setiap cabangnya. Sehingga untuk menyelesaikan masalah ini maka perlu ditambahkan suatu entitas baru yang menghubungkan antara Branch dan PropertyforRent. (Gambar 2.23) Gambar 2. 21 : Gambar contoh chasm trap (Connolly,p353) Gambar 2. 22 : Rangkaian semantik dari ER model (Connolly,p354) 41 Gambar 2. 23 : Model ER di restruktur untuk menghilangkan chasm trap (Connolly,p354) Gambar 2. 24 : Gambar rangkaian semantik dari model ER (Connolly,p355) 2.4 Model Enhanced Entity Relationship 2.4.1 Generalisasi/Spesialisasi (Generalization/ Specialization) Konsep dari generalisasi/spesialisasi berhubungan dengan tipe khusus dari entitas yang dikenal dengan nama superkelas dan subkelas, dan proses dari turunan atribut (attribute inheritance). 42 2.4.1.1 Superkelas dan subkelas Superkelas merupakan tipe entitas yang mengandung satu atau lebih sub kelompok yang jelas dari suatu kejadian, dimana perlu untuk dijelaskan di model data. Sedangkan subkelas merupakan sub kelompok yang jelas dari suatu kejadian di dalam tipe entitas, dimana perlu dijelaskan di model data. Tipe entitas yang memiliki subkelas yang jelas disebut dengan superkelas. Sebagai contoh, entitas Staff bisa diklasifikasi menjadi Manager, SalesPersonnel, dan Secretary. Dengan kata lain, entitas Staff ditunjuk sebagai superkelas dari subkelas Manager, SalesPersonnel, dan Secretary. 2.4.1.2 Relasi superkelas/subkelas Setiap member dari subkelas juga merupakan member dari superkelas, dengan kata lain entitas di subkelas sama dengan entitas di superkelas, hanya saja memiliki peranan yang jelas. Hubungan antara superkelas dan suatu subkelas adalah (1:1) dan disebut sebagai relasi superkelas/subkelas. Sebagai contoh, Staff/Manager memiliki relasi superkelas/subkelas. Beberapa superkelas mungkin saja mengandung subkelas yang saling melengkapi, sebagai diilustrasikan dengan anggota dari Staff yang berupa baik Manager dan anggota dari SalesPersonal. Contohnya, Manager dan SalesPersonnel merupakan subkelas yang saling melengkapi dari superkelas Staff. Akan tetapi tidak semua anggota superkelas perlu menjadi anggota dari subkelas, sebagai contoh 43 adalah anggota Staff tanpa peranan yang jelas seperti anggota Manager atau anggota dari SalesPersonal. Superkelas dan subkelas dapat digunakan untuk menghindari penggambaran tipe berbeda dari Staff dengan kemungkinan atribut berbeda dalam entitas tunggal. Contohnya, SalesPersonal bisa memiliki atribut-atribut khusus seperti SalesArea dan CarAllowance. Jika semua atribut Staff dan peranan khusus yang spesifik digambarkan dengan entitas tunggal Staff, hal ini akan mengakibatkan banyak nulls untuk peranan atribut yang spesifik. Jelasnya, SalesPersonal memiliki atribut biasa dengan staff lainnya seperti staffNo, name, position, dan salary. Bagaimanapun, ini merupakan atribut yang tidak berbagi yang dapat menyebabkan masalah ketika semua anggota dari Staff akan direpresentasikan ke dalam entitas tunggal. Hubungan juga dapat ditunjukan dimana hanya berasosiasi dengan tipe khusus dari Staff (subkelas) dan tidak dengan Staff secara umumnya. Sebagai contoh, SalesPersonal bisa saja memiliki hubungan yang berbeda dimana tidak cocok untuk semua Staff seperti SalesPersonnelUsesCar. Untuk menjelaskan hal diatas, pada Gambar 2. 25 menunjukan relasi AllStaff, yang mengandung rinci dari semua anggota Staff, tidak peduli dengan posisi apa yang dipegang. Akibat dari menempatkan semua rinci karyawan di dalam satu relasi adalah pada saat atribut yang tepat untuk semua Staff diisi (staffNo,name,position, dan salary), sementara yang dapat dipakai untuk peranan khusus diisi sebagian. Contohnya, atribut berasosiasi dengan subkelas Manager (mgrStartDate 44 dan bonus), subkelas SalesPersonnel (salesArea dan carAllowance) dan subkelas Secretary (typingSpeed) memiliki nilai untuk member di subkelas tersebut. Dengan kata lain, atribut berasosiasi dengan subkelas Manager, SalesPersonnel, dan Secretary adalah kosong untuk member dari Staff yang bukan subkelas tersebut. Dua alasan kenapa perlu dikenalkannya konsep superk elas dan subkelas pada ER model, yaitu : 1) dapat menghindari penggambaran konsep yang hampir sama lebih dari sekali, sehingga perancang dapat memakai waktu dengan baik dan membuat diagram ER dapat lebih dibaca, 2) dapat menambah informasi semantik ke dalam bentuk desain yang dikenal oleh banyak orang. Gambar 2. 25 : Gambar relasi AllStaff memegang detail-detail dari semua staff (Connolly,p361) 2.4.1.3 Attribute Inheritance Entitas dari subkelas mewakili objek dunia nyata (real world) yang sama seperti di superkelas dan bisa saja memiliki atribut subkelas 45 yang spesifik yang sama halnya berasosiasi dengan superkelas. Contohnya, anggota dari subkelas SalesPersonnel inherits pada semua atribut superkelas Staff seperti, staffNo,name, position, dan salary secara bersama-sama dimana khususnya berasosiasi dengan subkelas SalesPersonnel seperti salesArea dan carAllowance. Superkelas adalah sebuah entitas yang berdiri sendiri, dan memiliki satu atau lebih subkelas-subkelas. Entitas dan subkelas serta superkelas dan selanjutnya disebut dengan tipe hirarki. Tipe hirarki dikenal dengan bervariasi nama, termasuk: hirarki spesialisasi (contoh, Manager merupakan spesialisasi dari Staff), hirarki generalisasi (contoh, Staff merupakan generalisasi dari Manager) dan IS-A hirarki (contoh, Manager IS-A (anggota dari) Staff). Subkelas dengan lebih dari satu superkelas disebut sebagai subkelas terbagi (shared subclass). Dengan kata lain, anggota dari shared subclass harus merupakan anggota dari superkelas yang berhubungan. Sebagai akibatnya, atribut dari superkelas diturunkan oleh shared subclass, dimana bisa memiliki atribut tambahan sendiri. Proses ini mengacu sebagai multiple inheritance. 2.4.1.4 Proses Spesialisasi (Specialization Process) Spesialisasi merupakan proses memaksimalkan perbedaan antara anggota-anggota dari suatu entitas dengan mengidentifikasi karakterisitiknya yang berbeda. Spesialisasi menggunakan pendekatan top-down untuk mendefinisikan suatu set dari superkelas dan subkelas 46 yang berhubungan. Ketika suatu set subkelas dari suatu entitas diidentifikasi, atribut spesifik akan dimasukan ke setiap subkelas (jika diperlukan), dan juga mengidentifikasi hubungan antara setiap subkelas dengan tipe entitas lainnya atau subkelas (jika diperlukan). Contohnya dimana akan dilakukan proses spesialisasi pada suatu entitas Staff yang terdiri dari anggota-anggotanya, dimana perbedaan antara anggotaanggota dari entitas ini diidentifikasi seperti anggota-anggota dengan atribut tersendiri yaitu hubungan and/or. Staff dengan peranan tugas sebagai Manager, SalesPersonnel, dan Secretary memiliki atribut tersendiri dan subkelas Manager, SalesPersonnel, dan Secretary diidentifikasikan sebagai spesialisasi dari superkelas Staff. 2.4.1.5 Proses Generalisasi (Generalization Process) Generalisasi merupakan proses meminimalisasikan perbedaan yang ada antara entitas dengan mengidentifikasi karakteristik yang biasa ada. Generalisasi menggunakan pendekatan bottom-up, dimana hasil identifikasi dari generalisasi superkelas berasal dari tipe entitas yang asli. Sebagai contoh, ada suatu model dimana Manager, SalesPersonnel, dan Secretary direpresentasikan sebagai tipe entitas yang berbeda. Untuk melakukan proses generalisasi untuk entitas ini, sebelumnya harus mengidentifikasi persamaan yang ada antara entitas-entitas tersebut seperti atribut yang umum dan hubungan (relationship). Ternyata entitas ini membagi atribut yang umum ke semua Staff dan kemudian 47 Manager, SalesPersonnel dan Secretary akan diidentifikasi sebagai subkelas yang digeneralisasikan ke superkelas Staff. Proses generalisasi juga dapat dilihat sebagai kebalikan dari proses spesialiasasi, dan hal ini mengacu sebagai konsep generalisasi/spesialisasi. 2.4.1.6 Diagram representasi dari generalisasi/spesialisasi UML mempunyai sebuah notasi spesial untuk merepresentasikan generalisasi/spesialisasi. Sebagai contoh, dengan mempertimbangkan generalisasi/spesialisasi dari entitas Staff ke dalam subkelas-subkelas yang merepresentasi job role. Superkelas Staff dan subkelas Manager, SalesPersonnel, dan Secretary dapat direpresentasikan ke dalam diagram EER (Enhanced Entity Relationship) seperti yang berada pada Gambar 2. 26 yang menunjukan Staff superkelas dan subkelas, menjadi entitas, direpresentasikan sebagai bujur sangkar. Subkelas dilampirkan oleh garis-garis pada sebuah segitiga yang menunjuk ke atas superkelas. Atribut-atribut spesifik yang diberikan pada subkelas didaftar pada bagian bawah dari bujur sangkar merepresentasi subkelas. Sebagai contoh, salesArea dan carAllowance atribut-atribut hanya diasosiasikan dengan subkelas SalesPersonnel, dan tidak dapat dipakai pada subkelas Manager atau Secretary. Dan hal ini dapat ditunjukan dengan atribut-atribut yang dispesifikasi pada subkelas Manager (mgrStartDate and bonus) dan subkelas Secretary (typingSpeed). 48 Atribut-atribut pada semua subkelas-subkelas secara umum pada daftar dalam bagian lebih rendah dari bujur sangkar yang merepresentasi superkelas. Sebagai contoh, atribut staffNo, name, position, dan salary merupakan hal umum terhadap member dari Staff dan diasosiasikan dengan superkelas Staff. Pada contoh Gambar 2.26 subkelas Manager direlasikan pada entitas Branch melalui relasi Manages. Sedangkan superkelas Staff dihubungkan dengan entitas Branch melalui hubungan Has. Beberapa spesialisasi dapat dimiliki dari entitas yang sama berdasarkan pada karakteristik khusus perbedaan. Sebagai contoh, spesialisasi lainnya dari entitas Staff bisa menghasilkan subkelas FullTimePermanent dan subkelas PartTimeTemporary, dimana membedakan antara tipe kontrak pekerjaan (employeement contract) untuk anggota atau staff. Spesialisasi dari tipe entitas staff menjadi peranan kerja (subclass job role) ditunjukan pada Gambar 2.27. Sehingga dapat dilihat atribut yang spesifik pada subkelas FullTimePermanent (salaryScale) dan (holiday Allowance) dan PartTimeTemporary (hourlyRate). Tipe hirarki dapat dilihat pada Gambar 2.28 dimana peranan kerja generalisasi/spesialisasi ditunjukan pada Gambar 2.26, diperluas untuk menunjukan subkelas yang dibagi yang disebut SalesManager dan subkelas yang disebut Secretary. Dengan memiliki subkelas sendiri disebut AssistantSecretary. Dengan kata lain anggota dari subkelas yang dibagi, SalesManager, harus merupakan anggota dari subkelas SalesPersonnel dan subkelas Manager seperti halnya superkelas Staff. Sebagai akibatnya atribut dari superkelas Staff dan atribut dari subkelas SalesPersonnel dan Manager 49 diturunkan oleh subkelas SalesManage. Dimana juga memiliki atribut tambahan sendiri yang disebut salesTarget. AssistantSecretary merupakan subkelas dari Secretary yang juga merupakan subkelas dari Staff. Ini berarti bahwa anggota dari subkelas AssistantSecretary harus menjadi anggota dari subkelas Secretary dan superkelas Staff. Sebagai akibatnya, atribut dari superkelas Staff dan atribut dari subkelas Secretary diturunkan dengan subkelas AssistantSecretary, yang juga memiliki atribut tambahannya startDate. Gambar 2. 26 : Gambar spesialisasi/generalisasi dari entitas staff (Connolly,p364) 50 Gambar 2. 27 : Gambar spesialisasi/generalisasi pada entitas staff (Connolly, p365) Gambar 2. 28 : Gambar Spesialisasi/generalisasi pada entitas staff (Connolly,p365) 51 2.4.1.7 Batasan dalam Generalisasi/Spesialisasi (Constraints on Generalization/Specialization) Ada dua batasan yang bekerja pada generalisasi/spesialisasi yang disebut dengan batasan partipasi (participation constraint) dan batasan disjoint (disjoint constraint). Batasan partisipasi menentukan apakah setiap anggota di superkelas harus mengambil bagian sebagai anggota di subkelas. Batasan partisipasi bisa berupa mandatory atau optional. Relasi superkelas/subkelas dengan partisipasi mandatory menentukan bahwa setiap anggota di superkelas harus juga merupakan anggota di subkelas. Untuk merepresentasikan partisipasi mandatory, “Mandatory” diletakan di kurung kurawal dimana Sedangkan relasi menuju ke superkelas Gambar 2.27. superkelas/subkelas pada partisipasi optional menujukan bahwa anggota tidak perlu menjadi anggota dari subkelas. Untuk merepresentasikan partisipasi optional, “Optional” diletakan di kurung kurawal dibawah segitiga dimana menuju ke arah superkelas Gambar 2.27. Batasan disjoint menggambarkan hubungan antara anggotaanggota dari subkelas dan menyatakan apakah mungkin untuk anggota dari superkelas untuk menjadi anggota dari satu atau lebih dari satu subkelas. Batasan disjoint hanya berlaku ketika superkelas memiliki lebih dari satu subkelas. Jika subkelas merupakan disjoint, maka entitas hanya dapat menjadi anggota hanya dari satu subkelas. Untuk 52 merepresentasikan sebuah disjoint pada relasi superkelas/subkelas, ‘Or’ diletakan setelah batasan partisipasi di dalam kurung kurawal. Jika subkelas bukan merupakan disjoint (nondisjoint), maka entitas dapat menjadi anggota lebih dari satu subkelas. Untuk merepresentasikan nondisjoint dari relasi superkelas/subkelas, ‘And’ diletakkan setelah batasan partisipasi di dalam kurung kurawal. Batasan disjoint dan partisipasi di dalam generalisasi dan spesialisasi adalah berbeda, dan dapat dibagi menjadi empat kategori, yaitu: ‘mandatory dan disjoint’, ’optional dan disjoint’, ’mandatory dan nondisjoint’, ’optional dan nondisjoint’. 2.4.2 Aggregation (Agregasi) Agregasi merepresentasikan sebuah hubungan “has-a” atau “is-part-of” diantara para entitas dimana satu merepresentasikan “whole” dan yang lainnya merepresentasikan “part”. Agregasi digunakan untuk menunjukan suatu hubungan kepemilikan antara entitas-entitas, dimana salah satu entitas menunjukan “seluruh”-nya dan yang satu adalah “bagian dari”. 53 Gambar 2. 29 : Contoh Agregation : Branch Has Staff dan Branch Offers PropertyForRent (Connolly,p372). 2.4.3 Composition (Komposisi) Komposisi adalah bentuk spesifik dari agregasi yang merepresentasikan suatu asosiasi di antara entitas-entitas, dimana terdapat suatu kepemilikan yang kuat (strong-ownership) dan coincidental lifetime antara bagian “whole” dan bagian “part”. Gambar 2. 30 : Contoh dari komposisi NewsPaper Displays Advert (Connolly,p373) 54 2.4.4 Generalisasi dan spesialisasi Konsep pada generalisasi dan spesialisasi diasosiasikan pada beberapa tipe entitas yang khusus yang dikenal dengan superkelas dan subkelas, serta proses dari pewarisan sifat atribut (attribute inheritance). Selain itu juga terdapat dua tipe batasan (constraint) pada sifat relasi superkelas/subkelas yang participation dan disjoint constraint. Generalisasi adalah proses meminimalisasikan perbedaaan yang ada antara entitas yang ada, suatu bentuk absraksi yang mana merupakan suatu set objek yang mirip sebagai suatu objek tingkat tinggi (higher-level object), dengan detail pada tingkat rendah (lower-level). Ada dua macam generalisasi yaitu : 1. Menggeneralisasi dari objek yang spesifik pada satuan seluruh objek dengan tipe itu. 2. Menggeneralisasi dari objek yang berbeda dari suatu objek itu sendiri atau objek tingkat tinggi. 2.5 Perancangan Database Perancangan database atau yang biasa disebut dengan metodologi desain database merupakan pendekatan terstruktur yang mengunakan prosedur– prosedur, teknik–teknik, alat–alat maupun dokumentasi tambahan untuk mendukung dan memberi fasilitas dari desain tersebut. Perancangan database terdiri dari 3 fase utama, yaitu: a. Conceptual database design 55 Conceptual database design merupakan suatu proses pembuatan model dari informasi–informasi yang digunakan pada suatu perusahaan dan independen terhadap semua pertimbangan fisikal. b. Logical database design Logical database design merupakan proses dari pembuatan sebuah model dari informasi yang digunakan pada perusahaan berdasarkan pada model data yang spesifik (contoh: relasional), tetapi independen terhadap pertimbangan DBMS tertentu dan fisikal lainnya. c. Physical database design Merupakan proses untuk menghasilkan suatu deskripsi dari implementasi database pada penyimpanan sekunder (secondary storage), juga mendeskripsikan relasi dasar, organisasi file, dan desain indeks yang digunakan untuk mencapai akses yang efisien terhadap data dan batasan integritas lainnya yang masih berhubungan serta ukuran-ukuran keamanan. Langkah – langkah yang digunakan untuk membangun ketiga fase tersebut akan dirinci lebih lanjut sebagai berikut: 1. Buatlah data model lokal yang konseptual untuk setiap pengguna view. - Identifikasikan tipe–tipe entitas - Identifikasikan tipe-tipe hubungan - Identifikasi dan hubungkan atribut-atribut dengan tipe entitas atau tipe hubungan 56 - Tentukan domain atribut - Tentukan atribut candidate dan primary key - Pertimbangkan penggunaan konsep pemodelan yang tinggi/enhanced modelling (step optional) - Periksa model untuk redundansi - Validasikan model lokal konseptual terhadap transaksi pengguna - Tinjau kembali data model lokal yang konseptual dengan pengguna 2. Buat dan validasikan data model lokal yang logikal untuk setiap view. - Pindahkan fitur-fitur yang tidak kompatibel dengan model relasional (step optional) 3. - Ambil hubungan untuk data model lokal yang logikal - Validasikan hubungan menggunakan normalisasi - Validasikan hubungan terhadap transaksi pengguna - Tentukan batasan integritas - Tinjau kembali model data logikal lokal dengan pengguna Buat dan validasikan model data logikal yang global. - Gabungkan model data logikal lokal menjadi model global - Validasikan model data logikal global - Periksa untuk pengembangan mendatang 57 - Tinjau kembali model data logikal global dengan pengguna 4. 5. Terjemahkan model data logikal global target DBMS. - Desain hubungan dasar - Desain representasi dari data yang dihasikan - Desain batasan-batasan perusahaan Desain reprensentasi fisikal - Analisa transaksi – transaksi - Pilih organisasi file - Pilih indeks – indeks - Perkirakan kebutuhan tempat penyimpanan data 6. Desain user view. 7. Desain mekanisme keamanan. 8. Pertimbangkan pengenalan dari redudansi terkontrol 9. Pengaturan dan pengawasan sistem operasional. Untuk setiap superkelas atau subkelas dalam data konseptual, dapat diidentifikasikan entitas superkelas sebagai entitas orang tua (parent) dan entitas subkelas sebagai entitas anak (child). Ada beberapa pilihan yang dapat digunakan untuk merepresentasikan suatu relasi semacam itu sebagai satu atau lebih relasi. Pemilihan cara yang paling cocok untuk merepresentaikan relasi tersebut sangat bergantung pada beberapa faktor, seperti: batasan disjoint dan participation pada relasi subkelas atau superkelas, dengan melihat apakah subkelas yang terlibat itu berada didalam hubungan distinct dan dengan melihat 58 jumlah dari participant yang ada di dalam relasi superkelas dan subkelas. Panduan untuk merepresentasikan relasi superkelas atau subkelas berdasarkan pada batasan participant dan disjoint seperti yang ditunjukan pada tabel berikut berikut: Tabel 2.4 : Panduan untuk relasi superkelas/subkelas berdasarkan participation dan disjoint constraint (Connolly,p451) Participation constraint Disjoint constraint Mandatory Nondisjoint { And } Optional Nondisjoint { And } Mandatory Disjoint { Or } Optional Disjoint { Or } Relations required Relasi tunggal (dengan satu atau lebih diskriminator untuk membedakan tipe dari masingmasing baris) Dua relasi: satu relasi untuk superkelas dan satu relasi untuk seluruh subkelas (dengan satu atau lebih diskriminator untuk membedakan tipe dari masingmasing baris). Banyak relasi: satu relasi untuk setiap superkelas atau subkelas yang dikombinasikan. Banyak relasi: satu relasi untuk superkelas dan satu untuk setiap subkelas. Option 1 – Mandatory, nondisjoint AllOwner (ownerNo, address, telNo, fName, lName, bName, bType, contactName, pOwnerFlag, bOwnerFlag) Primary Key ownerNo Option 2 – Optional, nondisjoint Owner (ownerNo, address, telNo) Primary Key ownerNo OwnerDetails (ownerNo, fName, lName, 59 bName, bType, contactName, pOwnerFlag, bOwnerFlag) Primary Key ownerNo Foreign Key ownerNo references Owner (ownerNo) Option 3 – Mandatory, disjoint PrivateOwner (ownerNo, fName, lName, address, telNo) Primary Key ownerNo BusinessOwner (ownerNo, bName, bType, contactName, address, telNo) Primary Key ownerNo Option 4 – Optional, disjoint Owner (ownerNo, address, telNo) Primary Key ownerNo PrivateOwner (ownerNo, fName, lName) Primary Key ownerNo Foreign Key ownerNo references Owner (ownerNo) BusinessOwner (ownerNo, bName, bType, contactName) Primary Key ownerNo Foreign Key ownerNo references Owner (ownerNo) Gambar 2. 31 : Beragam representasi dari Owner superkelas/subkelas berdasarkan participant dan disjoint constraints (Connolly,p451) Sebagai contoh, entitas Owner dalam relasi superkelas atau subkelas yang ditunjukan pada Gambar 2.35. Dari gambar Tabel 2.4 ada beberapa cara untuk merepresentasikan relasi tersebut seperti yang ditunjukan pada Gambar 2.36. Range pemilihan dari penempatan seluruh atribut ke dalam satu relasi dengan dua diskriminator pOwnerFlag dan bOwnerFlag, mengindikasikan apakah sebuah baris dari tabel merupakan kepunyaan dari suatu subkelas (option 1), dan untuk membagi atribut ke dalam tiga relasi (option 4). Dalam kasus ini, representasi yang paling cocok untuk relasi superkelas atau subkelas dijelaskan dengan constraint relasi tersebut. Dari Gambar 2.35 60 relasi superkelas Owner memiliki hubungan dengan subkelas-nya yang bersifat mandatory dan disjoint, dimana setiap member dari superkelas Owner harus menjadi member dari satu subkelas-nya (PrivateOwner atau BusinessOwner) tetapi tidak dapat menjadi member dari keduanya. Oleh karena itu, dipilih option 3 sebagai representasi terbaik dari relasi ini dan membangun suatu relasi yang terpisah untuk merepresentasikan setiap subkelas dan memasukkan sebuah salinan (copy) atribut primary key dari setiap superkelas pada masing-masingnya. Perlu ditekankan bahwa pada Gambar 3.36 hanya merupakan panduan saja dan masih banyak faktor lainnya yang mempengaruhi pilihan akhir. Sebagai contoh, dengan option 1 (mandatory, disjoint) dipilih untuk menggunakan dua diskriminator untuk membedakan apakah sebuah baris (tuple) adalah anggota dari suatu subkelas. Secara bersamaan, suatu cara untuk merepresentasikan ini adalah untuk memiliki satu diskriminator yang membedakan apakah suatu baris (tuple) merupakan sebuah member dari PrivateOwner, BusinessOwner, atau kedua-duanya. Secara singkat dapat dibedakan dengan menggabungkan diskriminator menjadi satu dan diuji secara sederhana apakah satu dari atribut bersifat unik pada sebuah subkelas yang tidak dapat bernilai null (non null), untuk menjelaskan apakah suatu baris (tuple) merupakan bagian dari suatu subkelas. Dalam kasus ini, harus dapat dipastikan bahwa atribut yang diuji adalah atribut yang diperlukan (maka tidak boleh null). 61 Gambar 2. 32: Relasi superkelas/subkelas supervisor dan staff (Connolly,p433) 2.6 Trigger Trigger adalah sejenis prosedur atau fungsi yang data dipanggil sesuai kebutuhan. Trigger digunakan sebagai alat validasi sebelum atau sesudah suatu manipulasi data. Berikut ini statement standar pembuatan trigger daaalam SQL Server. Tabel 2. 5 : Syntax Trigger dalam SQL Server, Oracle, dan MySQL Create Trigger dalam SQL Server CREATE TRIGGER trigger_name ON table_name {{ FOR | AFTER | INSTEAD OF } INSERT, UPDATE, DELETE } AS Kondisi yang terjadi (sql_statement) BEGIN Raiserror (‘message kesalahan’,16,1) Rollback Transaction END Create Trigger dalam Oracle CREATE OR REPLACE TRIGGER [trigger name] BEFORE | AFTER INSERT | UPDATE | DELETE ON [table name] FOR EACH ROW | STATEMENT DECLARE [template] BEGIN {body or validation} END ; Create Trigger dalam MySQL CREATE TRIGGER trigger_name Trigger_time Trigger_event ON table_name FOR EACH ROW trigger_statement 62 Berikut tabel tentang inventaris dalam sintaks pembuatan trigger Tabel 2. 6 : Keterangan inventaris dalam suatu sintaks pembuatan trigger Nama Trigger Event Trigger time On Deskripsi Insert, update, delete Before, after, atau instead of Pengacuan tabel Batasan trigger For each row | statement Trigger body Begin {body} End; 63 Fungsi Manipulasi data Menentukan kapan suatu trigger di ‘fire’ Menentukan tabel mana yang akan dipengaruhi oleh trigger Menentukan batasan pengaruh trigger Tempat melakukan validasi atau pemanggilan data