Catatan Manajemen Basis Data (Bag. 1) Kelas 4EA01 dan 4EA06 Fakultas Ekonomi Universitas Gunadarma Dosen : Bambang Wahyudi, SKom., MMSI. PENGANTAR Sering kali kita mengucapkan kata “data,” namun amat jarang yang memahami apa itu data, dan apa bedanya data yang kita dapatkan dalam kehidupan sehari-hari dengan data yang ada di komputer. Komputer adalah benda yang diciptakan dari hasil olah nalar manusia, karenanya, kemampuan berlogika amat penting jika berprofesi di bidang komputer, baik sebagai seorang analis sistem, pemrogram komputer, administrator basis data, perancang perangkat keras, dan sebagainya. Kata “data” diambil dari bahasa Inggris yang berasal dari bahasa Yunani “datum” yang berarti fakta. Makna kata “data” bagi manusia adalah segala sesuatu yang dapat diterima oleh indera manusia dari rangsangan-rangsangan yang ada di sekitarnya, baik secara tersurat maupun yang tersirat. Sedang makna kata “data” di komputer adalah segala sesuatu yang bisa dikodekan atau disimbolkan atau dilambangkan dengan kode-kode, simbol-simbol, atau lambang-lambang yang telah disediakan di setiap komputer. Kata “data” itu sendiri sudah bermakna majemuk (karena tidak ada kata “datas” di kamus bahasa Inggris), jadi tidak perlu mengulangnya, seperti “data-data,” “kumpulan data,” atau “banyak data.” Di komputer, data memiliki satuan ukuran yang istilahnya bisa bermacam-macam, dari yang terkecil hingga terbesar. Misalkan, sering kita dengar kalimat “disket saya sudah berisi 25 file,” “hard disk di komputer saya besarnya 40 gigabyte,” “prosesor komputer saya memiliki kecepatan 3,1 GHz.,” “saya selalu menuliskan nama file tidak pernah lebih dari 8 characters,” “file biodata saya terdiri dari 5 field, tapi baru berisi 100 record,” dan sebagainya. Ada pula istilah-istilah lainnya seperti “word”, “table”, “entity”, “database”, dan sebagainya. Di berbagai teori, untuk istilah “file” saja, sering digunakan istilah yang berbedabeda, seperti berkas, arsip, table, entity set, data store, object, dan sebagainya. DATA DI KOMPUTER Kata “data,” kita adopsi dari bahasa Inggris dan berasal dari kata Yunani “datum” yang berarti “fakta.” Jika manusia bisa menerima data dari alat-alat inderanya, maka komputer juga dapat menerima data dari alat-alat inputnya (input device). Bedanya, manusia bisa menerima data yang tersirat (yang hanya dapat “dibaca” melalui perasaan atau naluri), sedangkan komputer hanya bisa menerima data yang tersurat (yang dapat dilambangkan atau dikodekan dengan lambang-lambang atau kode-kode yang telah dikenalnya). Data di komputer memiliki ukuran dalam penyebutannya. Data terkecil di komputer disebut dengan bit, yaitu sinyal elektronik yang melewati suatu rangkaian digital (prosesor) komputer. Bit-bit tersebut selanjutnya dirangkai, dan rangkaian tersebut diberi kode lagi yang disebut dengan character. Mulailah muncul berbagai macam kode yang ada di pasaran, seperti ASCII, EBCDIC, BCD, dan sebagainya. 1 ASCII (American Standard Code for Information Interchange) merangkai tujuh bit untuk menghasilkan sebuah character, sebagai contoh, karakter “A” oleh ASCII dilambangkan dengan rangkaian bit : 1000001, di mana bit bernilai 1 adalah rangkaian digital yang ada arus listriknya, dan 0 adalah rangkaian digital yang tidak dialiri listrik. 1 0 0 0 0 0 1 Gambar 1 Penggambaran Bit-bit yang Membentuk Karakter Selanjutnya, kumpulan dari character disebut dengan field. Ada dua istilah lain dari kumpulan karakter ini yang sering digunakan, seperti word (kata), dan attribute (atribut). Kumpulan field akan membentuk sebuah record, ada pula yang menyebutnya dengan sentence (kalimat). Kumpulan record akan menjadi sebuah file, dalam hal ini (yang sedang kita pelajari) file tersebut akan berisi nilai data, sehingga disebut dengan file data. Istilah lain yang sering digunakan untuk meyebut file (berkas) adalah table (tabel), entity set (set entitas), object (objek), dan data store (penyimpan data). Kumpulan file dalam sebuah enterprise (unit usaha) disebut dengan data base. Dan kumpulan dari data base disebut dengan data bank. Itu semua merupakan ukuran-ukuran data yang ada di komputer. Jadi, jika kita menyebut kata “data” di komputer, sepatutnya menggunakan ukurannya, karena kata “data” masih atau sudah berarti majemuk. Karenanya, jangan menulis atau mengucapkan kata “data-data,” atau “kumpulan data”, karena, dengan kata “data” saja sudah cukup (sudah majemuk). Dari uraian itu, kita telah mendapat satu definisi mengenai database, yaitu “kumpulan file.” … (definisi 1). Tapi, pertanyaan berikutnya adalah, apakah dengan hanya mengumpulkan file yang banyak, sudah dapat disebut data base ?. Tentu saja belum, karena banyak syarat lagi yang harus diuji pada kumpulan file tersebut. Apa saja syaratnya ?, setidaknya yang bisa menanggulangi kelemahan sistem file tradisional yang sudah kita bahas di atas, seperti “saling berelasi/ berintegrasi/ berhubungan/ berkoneksi.”… (definisi 2). Kita ambil satu kata saja, yaitu “berelasi.” 2 Gambar 2 Elemen-elemen dari Sebuah Data File Alat pemroses di komputer terdiri atas rangkaian-rangkaian elektronik yang jika rangkaian tersebut dialiri listrik, maka “dia” akan bekerja. Adanya arus listrik dilambangkan dengan angka 1, dan tidak adanya arus listrik dilambangkan dengan angka 0. Rangkaian-rangkaian elektronik tersebut disebut dengan rangkaian digital. Di dunia yang bersifat analog ini, kini sedang dilanda era digital. Digital secara ekstrem bisa dikatakan sebagai perbedaan nyata antara “hitam-putih,” artinya, kalau tidak “hitam” pasti “putih,” padahal di antara hitam dan putih dalam kehidupan nyata ada warna-warna lain yang tidak terhitung jumlahnya yang mendekati keduanya. Mengapa komputer analog tidak berkembang sehebat komputer digital ?, itu karena sulitnya menciptakan alat ukur dan alat proses yang dapat membedakan tipisnya dua perbedaan yang mengakibatkan banyaknya noise (kebiasan) yang berakibat tidak validnya data. Misalkan, data di komputer digital akan dilambangkan dengan “1” bila ada arus listrik sebesar 5 volt yang melewati rangkaiannya, dan akan dilambangkan dengan “0” bila tidak ada arus (0 volt). Padahal, di antara angka 0 dan 5 masih terdapat angka yang tidak terhingga banyaknya. Kecepatan aliran arus listrik, selain menambah kehebatan komputer, juga sebagai “daya tarik pasar” komputer, karena, semakin cepat arus listrik mengalir, maka dikatakan prosesor komputer akan bekerja lebih cepat. Sebagai perbandingan, arus listrik yang mengalir di bohlam di rumah kita sekirar 100 Hz (hertz)., atau dengan kata lain, dalam satu detiknya, bohlam tersebut hidup dan mati sebanyak 100 kali (disebut pula dengan istilah putaran atau cycle). Komputer yang ada saat ini bisa memiliki kecepatan hingga 3,2 GHz. (gigahertz), bayangkan berapa kali lebih cepat dari bohlam. Secara gampangnya dikatakan bahwa 1 KHz. (kilohertz)= 1000 Hz, dan 1 MHz = 1000 KHz, dan 1 GHz = 1000 MHz. Jadi, 1 GHz = 1 triliun Hz. 3 Karena data di komputer hanyalah kombinasi ada atau tidak adanya arus listrik yang melewati rangkaiannya (dilambangkan dengan 1 dan 0), maka komputer menggunakan sistem bilangan berbasis dua (binary digit/ binar atau biner). Pada sejarah asalnya, komputer diciptakan untuk menghitung. Lalu, bagaimana menghitung bilangan berbasis sepuluh atau disebut dengan desimal (seperti yang biasa kita gunakan sehari-hari) ?. Contoh bilangan desimal (berbasis 10) untuk angka 967 : 967 = 9 X 102 + 6 X 101 + 7 X 100 = 9 X 100+ 6 X 10 + = 900 + 60 + 7X1 7 Karena berbasis sepuluh, maka pernyebutannya berturut-turut dari kanan adalah : satuan (100), puluhan (101), ratusan (102), ribuan (103), dan seterusnya. Contoh konvesi bilangan binar (berbasis 2) untuk angka 1001 ke bilangan desimal : 1 0 0 12 = 1 X 23 + 0 X 22 + 0 X 21 + 1 X 20 = 8 + 0 + 0 + 1 = 910 (sembilan dalam basis sepuluh) Karena berbasis dua, maka penyebutannya berturut-turut dari kanan adalah : satuan (20), duaan (21), empatan (22), delapanan (23), enambelasan (24), dan seterusnya. Contoh perhitungan : 5 610 0 1 1 1 0 0 02 3 410 0 1 0 0 0 1 02 ------- + 9 010 ----------------- + 1 0 1 1 0 1 02 Komputer hanya dapat melakukan proses penjumlahan saja, jadi kalau ada 8 X 7, maka yang dilakukan adalah menambahkan angka 8 dengan dirinya sebanyak 7 kali. Bagaimana komputer bisa melakukan pembagian, perpangkatan, dan operasi matematis lainnya ?. Itulah mengapa basis computer science adalah matematika. Diperlukan algoritma yang sangat rumit untuk menjadikan komputer bisa melakukan tugas-tugasnya. 4 Setelah algoritma dibuat, selanjutnya dibuat suatu rangkaian listrik yang dapat berfungsi untuk melakukan perhitungan-perhitungan yang kita butuhkan. Rangakaian listrik tersebut dimasukkan ke dalam arsitektur sebuah ALU (Arithmatic Logical Unit atau Unit Logika Aritmatika) yang terdapat di dalam CPU (Central Processing Unit atau Unit Pemroses Pusat). Binary digit (bit) itulah yang merupakan satuan data terkecil di komputer. Jika satu angka desimal saja, misalkan angka 9 ditulis dengan 1001 dalam binar, berapa banyak angka yang kita butuhkan untuk menuliskan angka 1 juta dalam desimal ke dalam bilangan binar ?. Untuk meringkasnya, maka digunakanlah bilangan oktal (basis delapan). Sistem bilangan oktal adalah sistem bilangan yang memiliki angka 0, 1, 2, 3, 4, 5, 6, dan 7 saja. Untuk mengkonversi bilangan binar ke dalam bilangan oktal dilakukan dengan menyatukan tiap tiga angka dari kanan bilangan binar. misalkan angka 111000110102, maka bilangan oktalnya menjadi : 31328. Ternyata masih panjang juga, karenanya, kini sistem bilangan yang sering digunakan dalam ilmu komputer adalah sistem bilangan heksadesimal (berbasis 16). Heksadesimal memiliki “angka” yaitu : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Untuk melakukan konversi dari bilangan berbasis dua ke basis enambelas dilakukan dengan cara menyatukan tiap empat bit dari kanan bilangan binar, misalkan angka 111000110102 tadi, bilangan heksadesimalnya adalah : 71A 16. Penjelasan mengenai konversi sistem bilangan binar, oktal, dan heksadesimal lebih lanjut ada di lampiran Fungsi komputer akhirnya dikembangkan, bukan hanya sekadar alat hitung, tetapi juga dapat dijadikan alat pengolah kata, pengolah gambar, dan sebagainya. Semuanya itu dilakukan dengan mengolah pulsa-pulsa listrik yang masuk ke dalam rangkaiannya, maka muncullah istilah “dunia digital,” dan dengan munculnya teknologi jaringan komputer dunia atau internet, maka dikenal pula istilah “dunia maya.” Agar semua komputer bisa saling “berkomunikasi”, maka bit-bit tersebut harus dikodekan menjadi karakter (bisa huruf, angka, atau tanda baca lainnya). Maka, ketika itu berkumpullah perancang komputer untuk membuat standar kode. Tetapi, mungkin karena alasan bisnis atau alasan lain, tidak semua perancang komputer sepakat menggunakan kode yang sama, ada kelompok yang menggunakan kode ASCII (American Standard Code for Information Interchange), ada kelompok yang menggunakan EBCDIC (Extended Binary Coded Decimal Interchange Codes), BCD (Binary Coded Decimal), Baudot Codes, dan sebagainya. Contoh perbedaan, ASCII melambangkan sebuah karekter dengan 7 bit, EBCDIC dengan 8 bit, belum lagi kombinasi posisi 1 dan 0-nya. Komputer yang penulis gunakan menggunakan kode ASCII, dan kode ASCII untuk huruf “A” memiliki nilai 5 desimal 65 (binar = 1000001), sehingga, kalau tombol “A” rusak, maka saya digunakan tombol “Alt” dan angka 65. Tabel kode ASCII ada di lampiran Namun, kini sudah diciptakan sistem operasi yang ‘menjembatani’ perbedaan penggunaan kode itu sehingga semua komputer bisa saling berinteraksi satu dengan lainnya, terutama setelah era internet sekarang ini. INFORMASI Berbicara mengenai data di komputer, tidak akan terlepas dengan istilah “informasi.” Bagi komputer sendiri (yang bukan benda hidup), tidak ada bedanya antara data dan informasi, keduanya dianggap sama saja. Bagi manusia, ada perbedaan dari kedua istilah tersebut. Informasi dapat dikatakan adalah suatu fakta yang memiliki nilai atau arti bagi seseorang. Mungkin saja bagi orang lain fakta itu tidak memiliki arti, maka baginya itu barulah data. Contoh, jika saya tuliskan angka 42. Apakah anda tahu apa arti angka tersebut ?. Bagi saya, itu sudah merupakan informasi, karena angka tersebut saya dapatkan ketika saya tanyakan umur seseorang. Tapi, jika saya ingin tahu tahun berapa dia lahir dan saya meghitungnya sendiri, maka angka tadi baru merupakan data bagi saya. Jadi, jika suatu fakta yang saya peroleh harus saya proses lebih lanjut, maka disebut dengan data. Hasil proses yang saya hasilkan untuk mengetahui sesuatu, itu adalah informasi. Suatu perbedaan yang sangat tipis dan bersifat subjektif. INPUT PROSES OUTPUT Gambar 3 Hirarki Komputer Komputer memiliki hirarki : Input-Proses-Output (IPO). Input adalah data bagi pengguna (user), komputer memprosesnya untuk menghasilkan informasi bagi pengguna atau pihak lain yang membutuihkannya. Ketiganya harus bersesuaian (atau logis), artinya jika kita ingin mengetahui usia seseorang (output), maka komputer akan butuh data tahun kelahiran dan tahun sekarang (input). Prosesnya juga harus kita beri tahu juga bahwa usia seseorang adalah hasil pengurangan tahun sekarang dengan tahun kelahirannya. 6 DATABASE Wajarlah, bila kita ingin tahu, apa sih itu database ?, untuk apa sih ?, bagaimana sih ?, seperti apa sih, dan berbagai pertanyaan lain. Justru sebagai pembelajar, pertanyaan-pertanyaan semacam itu perlu dimiliki ketika kita akan mengikuti satu mata kuliah yang baru. Dengan memiliki pertanyaan-pertanyaan seperti itu, setidaknya kita sudah memiliki satu sudut pandang yang terfokus untuk menjawab segala rasa keingintahuan kita selama mengikuti mata kuliah itu. Banyak buku yang beredar yang mendefinisikan arti dari database yang di dalam bahasa Indonesia diterjemahkan dengan basis data atau landas data. Di sini, saya tidak akan langsung mendefinisikan arti dari database, tetapi saya mengajak anda sekalian untuk “turut membantu” mendefinisikannya setelah beberapa uraian yang akan saya gambarkan berikut ini. PERKEMBANGAN SISTEM PENCATATAN Sebelum ada uang, dulu orang melakukan perniagaan hanya dengan melakukan proses barter (pertukaran barang dengan barang atau jasa), tidak ada pencatatan yang perlu dilakukan. Jaman terus berubah, dan dengan adanya uang, orang bisa melakukan perniagaan melalui perantara uang sebagai alat pembayaran yang sah. Kemudian muncul utang-piutang, pemberlakuan kurs valuta asing, dan berbagai jenis bentuk perdagangan dan pasar. Pencatatan yang dilakukan tidak lagi hanya sekadar catatan dagang seperti neraca laba-rugi, tetapi juga sudah mencatat mengenai kepegawaian, persediaan barang, distributor, prosedur pemesanan barang, dan sebagainya. Catatan-catatan itu lebih dikenal dengan istilah administrasi. SISTEM BERKAS PRIMITIF Kedengarannya seperti “kejam,” tetapi memang begitulah istilah yang banyak dikemukakan di berbagai buku referensi untuk menggambarkan suatu proses pencatatan (administrasi) yang masih menggunakan berkas-berkas manual, seperti kertas, mesin ketik manual, kalkulator, map-map, lemari penyimpan berkas itu, dan sejenisnya. Di negara kita, masih banyak perusahaan yang melakukan hal demikian dalam proses keadministrasiannya, lalu, apakah bangsa kita masih dapat dikatakan bangsa primitif ?. Kita tidak akan membahasnya. SISTEM BERKAS TRADISIONAL Istilah “tradisional” di sini, adalah tradisional bagi era komputerisasi. Jadi, perusahaan yang masuk dalam jenis ini adalah perusahaan yang sudah menggunakan komputer sebagai alat bantu keadministrasiannya, tetapi setiap komputer yang ada diperlakukan sebagai stand alone (berdiri sendiri-sendiri). Andaikan sudah menggunakan komputer mini atau mainframe sekalipun, teknik penyimpanan datanya masih terkesan 7 “terkotak-kotak,” atau setiap user memiliki “jatah” sendiri-sendiri dalam penggunaan media penyimpanan datanya (storage device). Misalnya, di perusahaan ini ada empat bagian utama, yaitu (1) Bagian Personalia, (2) Bagian Produksi, (3) Bagian Keuangan, dan (4) Bagian Pemasaran. Maka, komputer yang ada di setiap bagian hanya digunakan untuk mengolah data yang ada di bagiannya saja, tidak peduli bagian lain mau berbuat apa dengan komputernya masing-masing. Personalia Produksi Keuangan Pemasaran Gambar 4 Sistem Berkas Tradisional Mari kita “masuki” perusahaan itu, dan mencari tahu apa yang terjadi di dalamnya. PROGRAMMING ORIENTED Ternyata, dari keempat user (pemanfaat) komputer di perusahaan itu, mereka menggunakan software (termasuk bahasa pemrograman) yang berbeda-beda dan tidak dapat saling dikoneksikan. Si Ali yang bertugas di komputer di bagian Personalia lebih memilih menggunakan COBOL sebagai bahasa pemrogramannya, sedangkan si Badu yang bertugas di bagian Produksi menggunakan RPG, si Coki yang di bagian Keuangan menggunakan EXCEL, dan si Danu yang di bagian Pemasaran menggunakan dBase. Data dari masing-masing pemanfaat tidak dapat saling dikoneksikan secara langsung, data COBOL hanya dapat diakses secara langsung oleh bahasa pemrograman COBOL saja, data RPG begitu juga, hanya dapat diakses secara langsung oleh program RPG, dan begitu juga dengan yang lainnya. Data yang hanya dapat dibaca oleh bahasa pemrograman yang membentuknya seperti itu disebut dengan programming oriented. DATA REDUNDANCY Karena pegawai di perusahaan itu sering dimutasi (dipindah-pindah) dari satu bagian ke bagian lain, maka di keempat komputer itu berisi pula data pegawai yang bekerja di perusahaan itu (bukan hanya per bagian saja). Jika diamati, maka terjadi pemborosan penggunaan memory space komputer di perusahaan itu karena data pegawai yang sama disimpan di empat komputer yang berbeda (di masing-masing bagian). 8 Istilah, dan yang menjadi kata kunci dari database adalah redundancy atau kerangkapan data. Salah satu prosedur dalam perancangan, pembentukan, atau pembuatan database akan mencegah terjadinya kerangkapan data (non redundancy). Dengan penghilangan kerangkapan data, maka penggunaan memori akan lebih efisien. DATA INCONCISTENCY Di sana, saya berkenalan dengan seorang gadis, pegawai di perusahaan itu yang namanya “Neneng Erika Fachliza.” Diam-diam saya ingin mengetahui biodata lengkapnya, tetapi saya kesulitan mendapatkan biodatanya di setiap komputer, karena saya tidak menanyakan Nomor Pegawai kepadanya yang mencadi atribut kunci (key field) dari record seseorang. Karena saya ingin sekali mendapatkan biodata lengkapnya, maka saya minta kepada petugas operasi komputer di bagian-bagian yang ada di perusahaan itu satu per satu untuk mencari berdasarkan namanya. Di bagian Personalia, petugas itu sempat mencari biodatanya sampai empat kali, tetapi tidak ketemu juga. Pertama, saya beri nama lengkap, “Neneng Erika Fachliza,” kedua saya beri nama depannya saja “Neneng,” ketiga saya beri nama belakangnya saja “Fachliza,” dan yang keempat saya beri nama tengahnya saya “Erika.” Pindah ke bagian lain, hasilnya sama juga, tidak ketemu biodatanya. Karena penasaran, saya pergi menemui gadis itu dan menanyakan Nomor Pegawainya. Dengan bekal itu, saya langsung bisa mendapatkan biodatanya. Ternyata, nama gadis itu di empat komputer yang ada ditulis berbeda-beda, di bagian Personalia, namanya ditulis dengan “N.E. FACHLIZA”, di bagian Produksi ditulis dengan “NENENG ERIKA F,” di bagian Pemasaran ditulis dengan “N. ERIKA F,” dan di bagian Keuangan ditulis dengan “N. ERIKA FACHLIZA.” Jelas saja saya sulit mendapatkan biodatanya, karena data yang tadi saya masukkan tidak menggunakan huruf besar semua. Dari sana kita bisa menarik kesimpulan, terdapat ketidakkonsistenan dalam menuliskan sebuah elemen data, selain cara menulisnya, juga penentuan panjang atribut (misalkan, berapa karakter yang disediakan untuk menuliskan nama seseorang) bisa saja saling berbeda. NON VALIDITY DATA Suatu ketika, gadis itu pindah alamat karena rumah kontrakan yang ditempatinya selama ini akan dipakai sendiri oleh pemilik rumahnya. Karena ia tidak memberi tahu saya, maka saya kembali ke perusahaan itu untuk mendapatkan alamat barunya. Dari empat komputer yang ada di keempat bagian itu, hanya ada satu yang alamatnya berbeda, yang ketiganya sama. Jika diambil suara terbanyak untuk menyatakan data di bagian mana yang valid, maka yang tiga bagian itu akan menang. Tapi, justru saya lebih mempercayai yang satu itu ketimbang yang tiga lainnya karena saya tahu yang tiga lainnya itu adalah alamat lamanya. Jadi, saya bisa 9 memperkirakan bahwa gadis itu baru melapor ke satu bagian saja ketika ia pindah alamat. Jadi, ia harus melaporkan kepindahannya ke setiap bagian yang ada. NON INTEGRITY DATA/ NON SHARING DATA Ketika akan diadakan rapat untuk membahas kemajuan perusahaan, Pimpinan perusahaan meminta laporan dari keempat bagian yang ada. Sang Sekretaris dan Notulis sibuk menyiapkan bahan-bahan rapat. Mereka mencoba menyusun laporanlaporan agar mudah dimengerti dan mudah dibawakan pada rapat nanti oleh Pimpinan perusahaan. Bagian Keuangan melaporkan bahwa terdapat kerugian perusahaan pada bulan ini karena hasil penjualan menurun. Sekretaris melihat laporan dari bagian Penjualan, ternyata tidak ada barang yang tersisa, Sekretaris mengecek laporan dari bagian Produksi, ternyata memang ada penurunan produksi. Tetapi kenapa produksi menurun, sang Sekretaris tidak mendapatkan jawabannya karena bagian Personalia hanya melaporkan jumlah pegawainya saja, tidak lengkap dengan absensi kehadirannya. Dari hasil rapat diketahui bahwa penurunan produksi disebabkan oleh banyaknya pegawai di bagian Produksi yang sering membolos kerja, dan mereka membolos karena alasan gaji yang diterima sudah tidak layak lagi. Bagi seorang Pimpinan perusahaan, untuk mengambil suatu kebijakan atau keputusan perlu-tidaknya ia menaikkan gaji karyawan harus dilandasi dengan data yang akurat dari berbagai sumber. Bila data dapat diterima secara lengkap dan saling berhubungan (integrity) antara data di satu bagian dengan bagian lain, maka Pimpinan perusahaan bisa dengan tepat mengambil keputusan, “tambah saja pegawainya,” misalkan. Itulah, sedikit “cerita” mengenai ketidakandalan komputer dalam membantu proses administrasi di suatu perusahaan, karena komputer itu masih digunakan dalam suatu bentuk organisasi komputer yang disebut dengan Sistem Berkas Tradisional. Kelemahan-kelemahan di atas akan diatasi dengan suatu sistem baru yang disebut dengan Sistem Database. Pembahasan sistem database akan dimulai dari Bab 2 dan seterusnya, kini kita lanjutkan kembali pembahasan untuk “mencari” definisi dan pengertian mengenai database itu sendiri dari sisi lain. KONSEP PEMECAHAN MASALAH DI SISTEM FILE TRADISIONAL Sebetulnya, jika diamati atau dianalisis, pemecahan atas masalah-masalah yang terjadi di sistem file tradisional secara konsep amat mudah, yaitu dengan “menyatukan seluruh data mereka ke satu media penyimpanan …(definisi 3), dengan membuang nilai data yang berulang atau terduplikasi, dan dibuat jaringan agar semua user mengakses data yang sesuai dengan kebutuhannya dari tempat penyimpanan yang sama.” Jika data Pegawai hanya ada di satu tempat (di server), dan siapapun yang memiliki kebutuhan dengan data itu harus mengambil di sana, maka tidak ada lagi penulisan 10 nama yang berbeda-beda, atau perubahan data yang harus dilakukan berulang-ulang seperti yang harus dilakukan di sistem file tradisional. Dari ketiga definisi parsial tentang database di atas, kita bisa menarik satu kesimpulan bahwa database adalah “sekumpulan file yang saling berelasi yang disimpan di satu media penyimpanan elektronik, dan dapat digunakan bersama-sama dalam suatu enterprise.” Personalia Produksi server Keuangan Pemasaran Gambar 5. Konsep Pemecahan Masalah di Sistem File Tradisional Tentu saja, definisi itu tidak merupakan harga mati, bisa saja di definisi itu dimasukkan pula unsur-unsur penunjang lainnya seperti : “sekumpulan file non redundancy yang saling berelasi yang disimpan di satu media penyimpanan elektronik, dan dapat digunakan bersama-sama untuk memberi manfaat bagi perusahaan.” Dan sebagainya. Lalu, jika semua file sudah dikumpulkan sesuai definisi database di atas, apakah masih ada batasan-batasan (kendala-kendala) lainnya ?. Tentu saja, seperti (1) apakah semua user bisa membuka semua data, termasuk yang bukan wewenangnya ?, (2) bagaimana cara merelasikan setiap file yang ada di dalam data base ?, (3) siapa yang “mengatur lalu lintas” data ?, (4) bagaimana caranya meniadakan data yang rangkap ? (5) apakah harus menggunakan bahasa pemrograman yang sama ?, dan banyak lagi pertanyaan lainnya. KEUNTUNGAN NYATA DARI PENGGUNAAN DATA BASE Dari cerita di atas, kiranya anda sudah dapat “menerka,” apa sebetulnya keuntungan dipergunakannya sistem database di suatu unit usaha. Dulu mungkin tidak terbayangkan, menabung uang di bank di kota A bisa mengambilnya di kota B dalam waktu yang sangat 11 singkat (hampir bersamaan). Dulu mungkin juga tak terbayangkan penggunaan kartu kredit yang amat canggih, bisa digunakan di berbagai negara. Contoh-contoh itu hanya sebagian keuntungan nyata dari penggunaan database. Tunggu bahasan mendatang……………. Lampiran 1. Basis Bilangan Sistem bilangan binar (binary) memiliki basis dua, karenanya ia hanya memiliki angka 0 dan 1 saja. Sistem bilangan oktal (octal) memiliki basis delapan, karenanya ia hanya memiliki angka 0, 1, 2, 3, 4, 5, 6, dan 7 saja . Sistem bilangan desimal (decimal) memiliki basis sepuluh, seperti yang biasa kita gunakan sehari-hari, memiliki angka 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9. Sedangkan sistem bilangan heksadesimal (hexadecimal) memiliki basis enambelas, angka-angkanya adalah 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, dan F. Berikut nilai desimal per digit berdasarkan basisnya : Cara perhitungan nilai basis dua Nilai desimalnya … … Cara perhitungan nilai basis delapan Nilai desimalnya … … Cara perhitungan nilai basis enambelas Nilai desimalnya … … 24 16 84 4096 164 65536 23 8 22 4 21 2 20 1 83 512 82 64 81 8 80 1 163 4096 162 256 161 16 160 1 2. Konversi Bilangan dari Binar 2.1. Konversi Bilangan Binar ke Oktal Konversi ini dilakukan dengan menggabung-gabung setiap tiga digit dari kanan dan secara rekursif dilakukan perhitungan nilainya (dengan menjumlahkan nilai desimalnya yang berada di bawah angka 1 yang dimilikinya). Setiap gabungan akan menjadi satu digit nilai dalam oktal. Contoh : 100011110001102 = ……. Binar Nilai desimalnya Oktal Gab. 5 1 0 2 1 2 Jadi, 100011110001102 = 217068 12 8 ? Gab. 4 0 0 1 4 2 1 1 Gab. 3 1 1 1 4 2 1 7 Gab. 2 0 0 0 4 2 1 0 Gab. 1 1 1 0 4 2 1 6 2.2. Konversi Bilangan Binar ke Desimal Konversi ini dilakukan dengan menjumlahkan seluruh nilai desimalnya yang berada di bawah angka 1 yang dimilikinya. Contoh : 10001102 = ……. 10? Binar Nilai desimalnya Desimal 1 64 0 0 0 1 1 32 16 8 4 2 16 + 4 + 2 = 70 0 1 Jadi, 10001102 = 7010 2.3. Konversi Bilangan Binar ke Heksadesimal Konversi ini dilakukan dengan menggabung-gabung setiap empat digit dari kanan dan secara rekursif dilakukan perhitungan nilainya (dengan menjumlahkan nilai desimalnya yang berada di bawah angka 1 yang dimilikinya). Setiap gabungan akan menjadi satu digit nilai dalam heksadesimal. Contoh : 100011110001102 = ……. Binar Nilai desimalnya Heksadesimal Gab. 4 1 0 2 1 2 16 ? Gab. 3 0 1 4 2 3 0 8 1 1 1 8 Gab. 2 1 0 4 2 C 0 1 Gab. 1 1 1 4 2 6 0 8 0 1 Jadi, 100011110001102 = 23C616 3. Konversi Bilangan dari Oktal 3.1. Konversi Bilangan Oktal ke Binar Konversi bilangan oktal ke binar dilakukan dengan menjabarkan setiap digit bilangan oktal menjadi tiga digit bilangan binar. Contoh : 17058 = ……. 2 ? Oktal Nilai desimalnya Binar 4 0 1 2 0 1 1 4 1 7 2 1 1 1 4 0 0 2 0 1 0 4 1 5 2 0 1 1 Jadi, 17058 = 0011110001012 atau 11110001012 3.2. Konversi Bilangan Oktal ke Desimal Konversi bilangan oktal ke binar dilakukan dengan menjumlahkan hasil perkalian setiap nilai oktal dengan nilai desimalnya. Contoh : 17058 = ……. 10 ? 13 Oktal Nilai desimalnya Desimal 1 7 0 5 512 64 8 1 (1 X 512) + (7 X 64) + (0 X 8) + (5 X 1) Jadi, 17058 = 96510 3.3. Konversi Bilangan Oktal ke Heksadesimal Ada beberapa cara yang dapat dilakukan. Di sini menggunakan cara mengalihkan oktal ke binar terlebih dulu, dan dari binar dilanjutkan ke heksadesimal. Contoh : 17058 = ……. ? 16 Oktal Nilai binarnya (pemekaran menjadi tiga digit binar) Nilai desimal rekursif untuk setiap penggabungan empat digit binar Heksadesimal 0 1 0 1 1 7 1 1 0 0 0 0 1 5 0 1 8 4 2 1 8 4 2 1 8 4 2 1 3 C 5 Jadi, 17058 = 3C516 4. Konversi Bilangan dari Desimal 4.1. Konversi Bilangan Desimal ke Binar Di sini, digunakan dua cara untuk mengkonversi bilangan desimal ke binar, yaitu melalui penjabaran ke samping (seperti yang dilakukan di contoh-contoh sebelumnya), dan menggunakan sisa hasil bagi. Cara pertama dilakukan dengan memberi nilai 1 pada binarnya yang hasil jumlahnya sama dengan bilangan desimalnya. Contoh : 17510 = ……. 2 ? Desimal Perhitungan nilai desimal per digit binar Binar 128 1 64 0 32 1 175 16 0 8 1 4 1 2 1 1 1 Jadi, 17510= 101011112 Cara kedua dilakukan dengan menuliskan dari bawah, sisa hasil bagi dari proses pembagian ke bawah berikut ini. 14 Pembagi 2 2 2 2 2 2 2 2 Bilangan Sisa hasil bagi 175 -------------87 -------------43 -------------21 -------------10 -------------5 -------------2 -------------1 -------------0 1 175 dibagi 2 = 87, sisa = 1} 1 {87 dibagi 2 = 43, sisa = 1} 1 {43 dibagi 2 = 21, sisa = 1} 1 {21 dibagi 2 = 10, sisa = 1} 0 {10 dibagi 2 = 5, sisa = 0} 1 {5 dibagi 2 = 2, sisa = 1} 0 {2 dibagi 2 = 1, sisa = 0} 1 {1 dibagi 2 = 0, sisa = 1} Sisa hasil bagi yang ditulis dari bawah ke atas adalah : 10101111 Jadi, 17510 = 101011112 4.2. Konversi Bilangan Desimal ke Oktal Caranya sama dengan konversi bilangan desimal ke binar di 3.1. Contoh : 67510 = ……. 8 ? Desimal Perhitungan nilai desimal per digit oktal Oktal 512 1 675 64 8 2 4 1 3 Jadi, 17510 = 12438 Cara kedua dilakukan dengan menuliskan dari bawah, sisa hasil bagi dari proses pembagian ke bawah berikut ini. Pembagi 8 8 8 8 Bilangan Sisa hasil bagi 675 -------------84 -------------10 -------------1 -------------0 3 {675 dibagi 8 = 84, sisa = 3} 4 {84 dibagi 8 = 10, sisa = 4} 2 {10 dibagi 8 = 1, sisa = 2} 1 {1 dibagi 8 = 0, sisa = 1} 15 Sisa hasil bagi yang ditulis dari bawah ke atas adalah : 1243 Jadi, 17510= 12438 4.3. Konversi Bilangan Desimal ke Heksadesimal Caranya sama dengan konversi bilangan desimal ke binar di 3.1. Contoh : 684710 = ……. 16 ? Desimal Perhitungan nilai desimal per digit heksadesimal Heksadesimal 6847 256 16 A B 4096 1 1 F Jadi, 684710 = 1ABF16 Cara kedua dilakukan dengan menuliskan dari bawah, sisa hasil bagi dari proses pembagian ke bawah berikut ini. Pembagi 16 16 16 16 Bilangan Sisa hasil bagi 6847 -------------427 -------------26 -------------1 -------------0 15 = F {6847 dibagi 16 = 427, sisa = 15 (F)} 11 = B {427 dibagi 16 = 26, sisa = 11 (B)} 10 = A {26 dibagi 16 = 1, sisa = 10 (A)} 1 {1 dibagi 16 = 0, sisa = 1} Sisa hasil bagi yang ditulis dari bawah ke atas adalah : 1ABF Jadi, 684710= 1ABF16 5. Konversi Bilangan dari Heksadesimal 5.1. Konversi Bilangan Heksadesimal ke Binar Caranya, tinggal menjabarkan setiap satu digit bilangan heksadesimal menjadi empat digit bilangan binar. Contoh : ACE16 = ……. 2 Heksadesimal Nilai desimal setiap empat digit binar Binar Jadi, ACE16 = 1010110011102 16 A 8 1 4 0 C 2 1 1 0 8 1 4 1 E 2 0 1 0 8 1 4 1 2 1 1 0 5.2. Konversi Bilangan Heksadesimal ke Oktal Melalui ‘jembatan’ binar, menurut saya akan lebih mudah. Dari setiap penjabaran satu digit heksadesimal ke empat digit binar, dijadikan penggabungan tiga digit binar menjadi oktal. Contoh : 8AB16 = ……. 8 ? Heksadesimal Binar Oktal 8 1 0 4 A 0 0 1 2 0 B 1 0 5 1 1 0 5 1 Jadi, 8AB16 = 42558 ? 5.3. Konversi Bilangan Heksadesimal ke Desimal Caranya, tinggal menjumlahkan hasil kali setiap digit bilangan heksadesimal dengan nilai desimalnya. Contoh : FAB16 = ……. Heksadesimal Nilai desimal setiap digit Desimal 10 F 256 A B 16 1 (15 X 256) + (10 X 16) + (11 X 1) Jadi, ACE16 = 401110 Lampiran 2 : Pembuatan Bilangan Negatif (Negasi Bilangan) Binar. Komputer hanya melakukan proses matematis penjumlahan. Bagaimana dengan operasi pengurangan ?. Contoh : 10 – 7. Oleh komputer, hal itu akan diubah menjadi 10 + (-7). Lalu, bagaimana membuat angka –7 tersebut ?. Ada tiga cara yang dilakukan, yaitu dengan cara One’s complement, Two’s compelement, dan Sign and Magnitude. 1. One’s Complement Pertama, kita tentukan dulu, berapa bit untuk mempresentasikan sebuah angka. Misalkan kita ambil 4 bit. Nilai maksimal desimal dari 4 bit binar adalah 2(N-1)-1 yaitu 7, dan minimalnya adalah -2(N-1)-1, yaitu –7. Satu bit terkiri digunakan sebagai sign yaitu tanda positif atau negatif. Bit terkiri diberi nilai 1, bila bilangan tersebut adalah negatif, dan diberi nilai 0 bila bilangan tersebut adalah positif. Complement dapat diibaratkan sebuah timbangan yang menjadikan bobot kiri dan kanan seimbang, lihat tabel berikut ini : Nilai Positif +7 Binar Positif 0 111 17 Nilai Negatif -7 Binar Negatif 1 000 +6 +5 +4 +3 +2 +1 0 -6 -5 -4 -3 -2 -1 -0 ? 0 110 0 101 0 100 0 011 0 010 0 001 0 000 1 1 1 1 1 1 1 001 010 011 100 101 110 111 Membuat negasi dari bilangan positif pada one’s complement adalah dengan mengganti semua bit bernilai 1 menjadi 0, dan sebaliknya. Kecuali pada sign-nya, nilai –5 akan memiliki bentuk yang sama dengan 7 – ABS(-5) = 7 – 5 = 2. Contoh perhitungan dalam desimal : 4 – 2 = 2, atau 4 + (-2) = 2 410 = 0 1 0 02 -210 = 1 1 0 12 -------------------- + = 1 0 0 0 12 Bisa kita lihat, bahwa hasil operasi membutuhkan bit tambahan (melewati 4 bit yang disediakan). Kelebihan bit paling kiri disebut dengan carry. Pada one’s complement, carry tersebut ditambahkan kembali. 210 0 0 0 12 12 ------------- + = 0 0 1 02 Contoh lain dalam desimal = (-7) - 4 = -11 atau –7 + (-4) = -11 : -710 = 1 0 0 02 -410 = 1 0 1 12 ----------------- + = 1 0 0 1 12 Carry kita jumlahkan : 0 0 1 12 12 ----------- + 0 1 0 02 Hasilnya adalah +4 ?. Karena batasan nilai untuk 4 bit adalah –7 hingga 7, maka hasil operasi di luar batasan itu tidak akan valid (terjadi overflow). Contoh lain dalam desimal = 3 - 5 = -2 atau 3 + (-5) = -2 310 = 0 0 1 12 18 -510 = 1 0 1 02 ----------------- + -210 = 1 1 0 12 (lihat di tabel). Bit terkiri (sign) = 1, berarti bilangan negatif. Sedangkan 101 2 menjadi 0102 = 210, dengan demikian, hasilnya adalah -210. jika dipostifkan 2. Two’s Complement Kita misalkan juga jumlah bit yang digunakan adalah 4. Menjadikan nilai negatif berdasarkan two’s complement dilakukan dengan cara mengubah semua angka 0 menjadi 1 dan sebaliknya, dan tambahkan dengan 1. Berikut tabelnya : Nilai Positif +7 +6 +5 +4 +3 +2 +1 0 Binar Positif 0 111 0 110 0 101 0 100 0 011 0 010 0 001 0 000 Nilai Negatif -7 -6 -5 -4 -3 -2 -1 -0 ? Binar Negatif 1 001 1 010 1 011 1 100 1 101 1 110 1 111 1 000 Pembuatan negasinya dapat dilakukan dengan cara 8 – ABS(negatif yang akan dicari), kecuali untuk sign-nya yang sudah pasti, 0 untuk positif, dan 1 untuk negatif.. Misalkan menuliskan –5 adalah dengan cara 8 – 5 = 3. Bilangan positif 3 adalah 011 2, maka –5 = 10112. Cara lainnya adalah dengan mengganti semua bit 0 menjadi 1 kecuali bit 1 terakhir (paling kanan) dan 0 berikutnya (di kanan bit 1 terakhir). Misal, +3 = 0011 2, maka –3 adalah 11012. Contoh perhitungan dalam desimal : 6 – 4 = 2, atau 6 + (-4) = 2 610 = 0 1 1 02 -410 = 1 1 0 02 ------------------- + =1 0 0 1 0 2 hasil Angka 1 di sebelah kiri hasil disebut dengan carry (karena melebihi bit yang ditentukan). Carry untuk two’s complement selanjutnya dibuang saja. Jadi hasilnya = 00102 , bit terkiri yang 0 menandakan bilangan tersebut adalah bilangan +, sehingga hasilnya adalah +210 (lihat tabel). Contoh lain dalam desimal = (-3) - 4 = -7 atau –3 + (-4) = -7 -310 = 1 1 0 12 19 -410 = 1 1 0 02 ---------------- + =1 1 0 0 12 hasil Hasil tanpa carry adalah 10012 , bit 1 terkiri menandakan bilangan -, dan angka 001 dalam bilangan negatif adalah –7 (lihat tabel). Contoh lain dalam desimal = (-6) - 4 = -10 atau –6 + (-4) = -10 -610 = 1 0 1 02 -410 = 1 1 0 02 ---------------- + =1 0 1 1 02 hasil Hasil tanpa carry adalah 01102 = +610 ???. Memang, jika melebihi batasan nilai yang ditetapkan, akan terjadi overflow. Lampiran 3 :Tabel Kode ASCII ASCII TABLES AND DESCRIPTION Dec 0 1 Hx 0 1 Oct 000 001 Char NUL SOH Dec 26 27 Hx 1A 1B Oct 032 033 Char SUB XSC 2 2 002 STX (null) (start of heading) (start of text) 28 1C 034 FS 3 3 003 ETX (end of text) 29 1D 035 GS 4 4 004 XOT (end of transmission) (enquiry) 30 1E 036 RS 5 5 005 XEQ 31 1F 037 US 6 7 8 9 6 7 8 9 006 007 010 011 ACK BEL BS TAB Dec Hx Oct Html 32 20 040 &#32; Space 10 A 012 LF 33 21 041 &#33; ! 11 12 B C 013 014 VT FF 34 35 22 23 042 043 &#34; &#35; “ # 13 D 015 CR 36 24 044 &#36; $ 14 15 16 E F 10 016 017 020 SO SI DLE 37 38 39 25 26 27 045 046 047 &#37; &#38; &#39; % & ‘ 17 11 021 DC1 40 28 050 &#40; ( (acknowledge) (bell) (backspace) (horizontal tab) (NL line feed, new line) (vertical tab) (NP form feed, new page) (carriage return) (shift out) (shift in) (data link escape) (device control 1) 20 (substitute) (escape) (file separator) (group separator) (record separator) (unit separator) 18 12 022 DC2 19 13 023 DC3 20 14 024 DC4 21 15 025 NAK 22 16 026 SYN 23 17 027 ETB 24 25 18 19 030 031 CAN EM (device control 2) (device control 3) (device control 4) (negative acknowledge) (syncronus idle) (end of trans, block) (cancel) (end of medium) 21 41 29 051 &#41; ) 42 2A 052 &#42; * 43 2B 053 &#43; + 44 2C 054 &#44; , 45 2D 055 &#45; - 46 2E 056 &#46; . 47 48 2F 30 057 060 &#47; &#48; / 0 ASCII TABLES AND DESCRIPTION Dec 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 Html Hx 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E Oct 061 062 063 064 065 066 067 070 071 072 073 074 075 076 077 100 101 102 103 104 105 106 107 110 111 112 113 114 115 116 &#49; &#50; &#51; &#52; &#53; &#54; &#55; &#56; &#57; &#58; &#59; &#60; &#61; &#62; &#63; &#64; &#65; &#66; &#67; &#68; &#69; &#70; &#71; &#72; &#73; &#74; &#75; &#76; &#77; &#78; Dec 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 Html Hx 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C Oct 117 120 121 122 123 124 125 126 127 130 131 132 133 134 135 136 137 140 141 142 143 144 145 146 147 150 151 152 153 154 &#79; &#80; &#81; &#82; &#83; &#84; &#85; &#86; &#87; &#88; &#89; &#90; &#91; &#92; &#93; &#94; &#95; &#96; &#97; &#98; &#99; &#100; &#101; &#102; &#103; &#104; &#105; &#106; &#107; &#108; Dec O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 Html Hx 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F Oct 155 156 157 160 161 162 163 164 165 166 167 170 171 172 173 174 175 176 177 &#109; &#110; &#111; &#112; &#113; &#114; &#115; &#116; &#117; &#118; &#119; &#120; &#121; &#122; &#123; &#124; &#125; &#126; &#127; m n o p q r s t u v w x y z { | } ~ DEL Untuk 7 digit binar, maksimal = 127 desimal = 177 oktal = 7F heksadesimal Berikut pengembangan kode ASCII Sumber : www.asciitable.com 22