Istilah “dunia nyata” di sini bukan berarti dunia dan segala isinya, tapi lebih bermakna sempit yang merujuk pada semesta (keseluruhan) data yang belum terstruktur yang secara nyata ada/terkait dalam sebuah lingkup topik yang sedang ditinjau. Karena itu “Dunia Nyata” bagi system perbankan berbeda dengan “dunia nyata’ bagi system perkuliahan.
Untuk memperjelas uraian di atas, kita tinjau sebuah “dunia nyata” dalam system perkuliahan. Karena kita berbicara tentang “dunia nyata”, maka kita membutuhkan tempat yang pasti dimana system perkuliahan itu berada/diterapkan. Itu berarti, system yang sama dapat menghasilkan cara/strategi penerapan yang berbeda antara satu tempat dengan tempat yang lain. Hal ini terjadi karena apa yang dimiliki/diketahui (input) dan apa yang diharapkan (output) serta bagaimana cara menghasilkannya (proses/prosedur) antara tempat yang satu dapat berbeda dengan tempat yang lain.
Di sebuah perguruan tinggi X, kita mengetahui adanya mahasiswa, dosen, kurikulum, ruang kuliah, penilaian, ujian hingga praktikum. Apa yang kita ketahui (untuk kemudian diimplementasikan dalam basis data) ini dapat lebih dibatasi ataupun diperluas., tergantung pada apa yang ingin kita harapkan dari hal-hal itu. Kita misalnya, dapat menambahkan daftar tersebut dengan penjadwalan dan kehadiran, jika memang ada kebutuhan untuk itu (misalnya penilaian akhir seorang mahasiswa juga tergantung pada kehadirannya). Selanjutnya, kita harus memilah/mengelompokan data tersebut dalam satuan-satuan data yang juga harus merepresentasikan adanya Keterhubungan antar satuan-satuan data. Satuan data yang satu akan memiliki karakteristik yang berbeda dengan satuan data yang lain yang didekripsikan lagi dengan adanya sejumlah atribut. Misalnya satuan data mahasiswa dideskripsikan lagi dengan atribut-atribut nim, nama_mhs, alamat_mhs dan tanggal lahir. Atribut-atribut tersebut dapat dibatasi hingga di situ atau diperluas lagi dengan atribut-atribut lain seperti tempat_lahir, jurusan, nama_orang_tua, agama dan seterusnya. Namun demi efisiensi, pembatasan atribut yang akan disertakan pada suatu satuan data perlu dilakukan dengan tetap mempertimbangkan aspek kebutuhan.
Senin, 29 Desember 2008
PENERAPAN DATA DARI DUNIA NYATA KE DALAM BASIS DATA
Sabtu, 27 Desember 2008
MODEL DATA
Model data dapat didefinisikan sebagai kumpulan perangkat konseptual untuk menggambarkan data, hubungan data, semantic (makna) data dan batasan data. Oleh karena yang ingin ditunjukan makna dari data dan keterhubungannya dengan data lain, maka model data ini lebih tepat jika disebut model data lojik. Penyingkatannya menjadi model data dilakukan demi penyederhanaan penulisan. Ada sejumlah cara dalam merepresentasikan model data dalam perancangan basis data, yang secara umum dapat dibagi dalam 2 kelompok yaitu :
1. Model lojik data berdasarkan objek (object-based logical models) yang terdiri dari :
• Model Keterhubungan Entitas (Entity-Relationship Model).
• Model Berorientasi Objek (Entity-Relationship Model).
• Model Data Semantik (Semantic Data Model).
• Model Data Fungsional (Functional Data Model).
2. Model Lojik Data Berdasarkan Record (Record-Based Logical Models) yang terdiri dari :
• Model Relasional (Relational Model).
• Model Hierarkis (Hierarchical Model).
• Model Jaringan (Network Model).
BENTUK-BENTUK NORMAL FORM
1. Bentuk Normal Tahap Pertama (1st Normal Form).
Bentuk normal tahap pertama (1NF) terpenuhi jika sebuah tabel tidak memiliki atribut bernilai banyak atau lebih dari satu atribut dengan domain nilai yang sama.
2. Bentuk Normal Tahap Kedua (2nd Normal Form).
Bentuk normal tahap kedua (2NF) terpenuhi jika pada sebuah tabel, semua atribut yang tidak termasuk dalam key primer memiliki ketergantungan fungsional (KF) pada key primer secara utuh. Sebuah tabel dikatakan tidak memenuhi 2NF, jika ketergantungan hanya bersifat parsial (hanya tergantung pada sebagian dari key primer). Bentuk formal tahap kedua ini dianggap belum memadai, karena hanya meninjau sifat ketergantungan atribut terhadap key primer-nya.
3. Bentuk Normal Tahap Ketiga (3rd Normal Form).
Bentuk normal tahap ketiga (3NF) merupakan kriteria alternatif, jika kriteria BCNF yang ketat tidak dapat terpenuhi. Sebuah tabel dikatakan berada dalam bentuk normal tahap ketiga (3NF), jika untuk setiap KF dengan notasi X → A dimana A mewakili semua atribut tunggal di dalam tabel yang tidak ada di dalam X, maka :
• X haruslah superkey pada tabel tersebut.
• Atau A merupakan bagian dari key primer pada tabel tersebut
4. Bentuk Normal Tahap Keempat (4th Normal Form) dan Bentuk Normal Tahap kelima (5th Normal Form).
Penerapan aturan normalisasi sampai dengan tahap ketiga sesungguhnya sudah sangat memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Namun demikian dari sejumlah literatur dapat pula dijumpai adanya pembahasan tentang bentuk normal tahap keempat (4NF) dan bentuk normal tahap kelima (5NF). Bentuk normal tahap keempat berkaitan dengan sifat ketergantungan banyak nilai pada suatu tabel yang merupakan pengembangan dan ketergantungan fungsional. Sedangkan bentuk normal tahap kelima (merupakan nama lain dari Project-join normal form/PJNF) berkenaan dengan ketergantungan relasi antar tabel.
MENGENAL BCNF
Kriteria sebuah tabel dikatakan BCNF (Boyce Code Normal Form), jika untuk semua KF dengan notasi X → Y, maka X harus merupakan superkey pada tabel tersebut. Jika tidak demikian, maka tabel tersebut harus didekomposisi berdasarkan KF yang ada, sedemikian hingga X menjadi superkey dari tabel-tabel hasil dekomposisi.
Jika kita tinjau dari tabel universal yang merupakan rangkuman dari data mahasiswa, dosen, kuliah, nilai dan jadwal, maka jelas sekali tabel tersebut tidak memenuhi BCNF. Buktinya kita ambil salah satu KF, yaitu nim → nama_mhs, alamat_mhs, tgl_lahir. Maka seharusnya nim merupakan superkey di tabel tersebut. Tapi pada kenyataannya tidak demikian. Karena pada tabel tersebut nim tidak unik. Karena itu, tabel universal itu harus didekomposisi.
Dekomposisi aman yang dapat kita lakukan adalah dengan memilah berdasarkan KF minimum yang ada. Ada 4 buah contoh KF minimum pada tabel :
Nim → nama_mhs, alamat_mhs, tgl_lahir
Kode_kul → nama_kul, sks, semester, waktu, tempat, nama_dos
Nama_dos → alamat_dos
Nim, kode_kul → indeks_nilai
Dengan berbekal ke-4 KF di atas. Maka tabel universal itu kita dekomposisi menjadi 4 buah tabel. Yaitu :
1. Tabel Mahasiswa dengan atribut nim, nama_mhs, alamat_mhs dan tgl_lahir.
2. Tabel Kuliah dengan atribut kode_kul, nama_kul, sks, semester, waktu, tempat dan nama_dos.
3. Tabel Dosen dengan atribut nama_dos dan alamat_dos.
4. tabel Nilai dengan atribut nim, kode_kul dan indeks_nilai.
KETERGANTUNGAN FUNGSIONAL (Functional Dependency)
Diberikan sebuah tabel T berisi paling sedikit 2 buah atribut. Yaitu A dan B. kita dapat menyatakan notasi berikut ini :
A → B atribut A menentukan B
Yang berarti A secara fungsional menentukan B atau B secara fungsional tergantung pada A. jika dan hanya jika untuk setiap kumpulan baris data (row) yang ada di tabel T. pasti ada 2 baris data (row) di tabel T dengan nilai untuk A yang sama, maka nilai untuk B pasti juga sama.
Nama_kul nim Nama_mhs Indeks_nilai
Row 1 Struktur data 98001 Ali akbar A
Row 2 Struktur data 98004 Indah susanti B Row 3 Basis data 98001 Ali akbar
Row 4 Basis data 98002 Budi haryanto
Row 5 Basis data 98004 Indah susanti
Row 6 Bahasa Indonesia 98001 Ali akbar B
Row 7 Matematika 1 98002 Budi haryono C
Denagn melihat data di atas dan dengan pertimbangan intuisi kita, maka KF yang dapat kita ajukan adalah :
a. nim → nama_mhs
yang berarti bahwa atribut nama_mhs hanya tergantung pada atribut nim. Hal ini dibuktikan dari fakta : untuk setiap nilai nim yang sama, maka pasti nilai nama_mhs-nya juga sama.
b. nama_kul nim → indeks_nilai
yang berarti bahwa atribut indeks_nilai tergantung pada atribut nama_kul dan nim secara bersama-sama. Memang kita tidak dapat menunjukan fakta, bahwa untuk setiap nilai nama_kul dan nim yang sama, maka nilai indeks_nilai-nya juga sama, karena (nama_kul, nim) merupakan key (sehingga bersifat unik) untuk tabel tersebut.
Kita juga dapat mengajukan sejumlah ketidaktergantungan (non kf) dengan hanya melihat fakta yang ada, yaitu
a. nama_kul → nim
yang artinya atribut nim tidak tergantung pada atribut nama_kul. Buktinya terlihat pada row 1 dan row 2 : dengan nilai nama_kul yang sama, tapi nilai nim-nya berbeda.
b. nim → indeks_nilai
yang artinya atribut indeks_nilai tidak hanya tergantung pada atribut nim. Buktinya terlihat pada row 1 dan row 3 : dengan nilai nim yang sama, tapi nilai indeks_nilai-nya berbeda.
Kita sebenarnya tidak memerlukan kesimpulan tentang ketidak tergantungan tersebut, hanya saja,seringkali untuk mendapatkan seluruh KF dari sebuah tabel (karena bisa terdapat lebih dari satu KF di sebuah tabel), kita lebih dulu membuat daftar ketidaktergantungan yang ada.
MENGENAL BERBAGAI ATRIBUT
- Atribut Sederhana (simple attribute) dan Atribut Komposit (composite attribute).
Atribut sederhana adalah atribut atomik yang tidak dapat dipilah lagi. Sementara, atribut komposit merupakan atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. Jika dalam penerapannya kelak, tidak ada aktivitas pengolahan data yang hanya melibatkan sub-sub atribut tersebut secara khusus, maka pemakaian atribut komposit ini dapat terus dipertahankan demi kesederhanaan struktur tabel. Namun, jika kelak ada rencana/ kebutuhan untuk melakukan pengolahan data terhadap sub-sub atribut secara khusus. Maka atribut komposit dapat kita dekomposisi menjadi atribut-atribut sederhana secara tegas.
- Atribut Bernilai Tunggal (single-valued attribute) dan atribut bernilai banyak (multivalued attribute)
Atribut bernilai tunggal ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap baris data. Pada data mahasiswa. Semua atribut (nik, nama_mhs, alamat_mhs dan tgl_lahir) merupakan atribut bernilai tunggal. Karena atribut-atribut tersebut hanya dapat berisi 1 (satu) nilai. Jika ada seorang mahasiswa yang memiliki 2 (dua) tempat tinggal. Maka hanya salah satu saja yang boleh diisikan ke dalam atribut alamat_mahasiswa.
Sedangkan atribut bernilai banyak ditujukan pada atribut-atribut yang dapat kita isi dengan lebih dari 1(satu) nilai tetapi jenisnya sama. Atribut waktu pada tabel jadwal dapat digolongkan sebagai atribut bernilai banyak, karena ada mata kuliah yang hanya memiliki sebuah nilai waktu dan ada pula yang lebih dari satu nilai waktu.
- Atribut Harus Bernilai (mandatory Attribute) dan Nilai null.
Ada sejumlah atribut pada sebuah tabel yang kita tetapkan harus berisi data. Jadi, nilainya tidak boleh kosong. Atribut semacam ini disebut mandatory attribute. Nilai (konstanta) Null digunakan untuk menyatakan/ mengisi atribut-atribut demikian yang nilainya memang belum siap atau tidak ada. Nilai Null tidak sama dengan spasi, walaupun pada waktu nilainya ditampilkan, sama-sama tidak memperlihatkan apa-apa. Perbedaan tersebut dapat ditinjau dari segi makna maupun dari segi representasi fisik.
- Atribut Turunan (Derived Attribute).
Attribut turunan adalah attribute yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut atau tabel lain yang berhubungan. Atribut demikian sebetulnya dapat ditiadakan dari sebuah tabel, karena nilai-nilainya bergantung pada nilai yang ada di atribut lainnya.
MENGENAL KEY DALAM BASIS DATA
- Apakah key itu ?
Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam tabel secara unik. Artinya jika suatu atribut dijadikan sebagai key. Maka tidak boleh ada dua atau lebih baris data dengan nilai yang sama untuk atribut tersebut.
- Ada berapa macam key ?
Ada 3 macam key yang dapat diterapkan pada suatu tabel, yaitu :
1. Superkey
Superkey merupakan satu atau lebih atribut (kumpulan atribut) yang dapat membedakan setiap baris data dalam sebuah tabel secara unik. Bisa terjadi, ada lebih dari 1 kumpulan atribut yang bersifat seperti itu pada sebuah tabel. Di tabel mahasiswa, misalnya yang dapat menjadi superkey adalah :
• (nim, nama_mhs, alamat_mhs, tgl_lahir).
• (nim, nama_mhs, alamat_mhs).
• (nim, nama_mhs).
• (nama_mhs), jika kita bisa menjamin tidak ada nilai yang sama untuk atribut ini.
• (nim).
2. Candidate-key
Candidate key merupakan kumpulan atribut minimal yang dapat membedakan setiap baris data dalam sebuah tabel secara unik. Sebuah candidate key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah candidate key pastilah superkey, tapi belum tentu sebaliknya. Pada tabel mahasiswa yang dapat menjadi candidate key adalah :
• (nim).
• (nama_mhs), jika kita bisa menjamin tidak ada nilai yang sama untuk kolom ini.
3. Primary key
Primary key terbentuk dari candidate key, pemilihan key primer dari sejumlah candidate key tersebut umumnya didasari oleh :
• Key tersebut lebih sering (lebih natural) untuk dijadikan sebagai acuan.
• Key tersebut lebih ringkas.
• Jaminan keunikan key tersebut lebih baik.
Dengan pertimbangan- pertimbangan tersebut, dari kedua candidate-key yang ada di tabel mahasiswa, yaitu (nim) dan (nama_mhs), maka yang lebih cocok dipilih sebagai primary key adalah (nim).