MODUL II NORMALISASI DATA Tujuan : Mampu membangun desain logika basis data relasional untuk menghasilkan struktur tabel yang normal. PrePraktikum 1. Apakah yang anda ketahui tentang normalisasi? 2. Mengapa suatu tabel perlu dinormalisasikan? 3. Aturan-aturan normalisasi dinyatakan dalam istilah bentuk normal. Apa yang disebut dengan bentuk normal? 4. Sebutkan dan jelaskan macam-macam dari bentuk normal agar dapat dimanfaatkan untuk memperoleh tabel dan basis data yang lebih baik? 1. Dasar Teori Normalisasi Normalisasi merupakan cara pendekatan dalam membangun desain logika basis data relasional yang tidak secara langsung berkaitan dengan model data, tetapi dengan menerapkan sejumlah aturan dan kriteria standar untuk meghasilkan struktur tabel yang normal. Pada dasarnya desain logika basis data relasional dapat menggunakan prinsip normalisasi maupun transformasi dari model ER ke bentuk fisik. Pada pembahasan tentang normalisasi data, digunakan istilah baru yang disebut dengan functinal dependencies atau ketergantungan fungsional. Ketergantungan Fungsional (Functional Dependencies) Functional Dependency menggambarkan hubungan attributes dalam sebuah relasi. Suatu atribut dikatakan functionally dependant pada yang lain jika kita menggunakan harga atribut tersebut untuk menentukan harga atribut yang lain. Simbol yang digunakan adalah untuk mewakili functional dependency ( dibaca secara fungsional menentukan). 6
Notasi: A B A dan B adalah atribut dari sebuah tabel. Berarti secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A yang sama, maka nilai B juga sama. Diberikan 2 baris r1 dan r2 dalam tabel T dimana A B Jika r1(a)=r2(a), maka r1(b) = r2(b) Dimisalkan relasi nilai_mhs memiliki empat buah atribut/field yaitu nama_kul, nim, nama_mhs dan nilai. Maka ketergantungan fungsional pada relasi tersebut adalah: a. nim nama_mhs yang artinya 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 nilai yang berarti bahwa atribut nilai tergantung pada atribut nama_kull dan nim secara bersama-sama. Untuk ketergantungan fungsional seperti ini sesuai dengan pengertian bahwa setiap nilai diperuntukkan pada mahasiswa tertentu untuk matakuliah tertentu yang diambil. Dalam arti lain untuk nama_kul dan nim yang sama, maka nilai juga sama, karena nama_kul dan nim merupakan key (bersifat unik). Notasi: A non B atau A x B Adalah kebalikan dari notasi sebelumnya, dengan hanya melihat fakta yang ada, yaitu: a. nama_kul non nim yang artinya atribut nim tidak tergantung pada atribut nama_kul. b. nim non nilai yang artinya atribut nilai tidak hanya tergantung pada atribut nim, karena tergantung pula pada atribut nama_kul yaitu nama kuliah yang diambil oleh nim. Bentuk-Bentuk Normalisasi Bentuk-bentuk normal dapat dimanfaatkan untuk memperoleh tabel dan basis data yang lebih baik. Bentuk Normal Pertama (1NF) Suatu tabel dikatakan dalam bentuk normal pertama hanya kalau setiap kolom bernilai tunggal untuk setiap baris. Sehingga tidak diperboleh adanya : Atribut yang bernilai banyak (Multivalued attribut). Attribut komposit atau kombinasi dari keduanya. 7
Berikut ini akan dicontohkan normalisasi dari tabel kuliah yang memiliki atribut: Kode_kul Nama_kul Sks Smstr Waktu Ruang Nama_d C1234 Matematika 1 2 1 1 RKB-3 Devie C1243 Riset Operasi 2 5 1 RKB-1 Rosa C1342 ADSI 2 3 2 RKB-3 Anamisa Tabel kuliah tersebut tidak memenuhi normalisasi pertama, karena terdapat atribut waktu yang tergolong ke dalam atribut bernilai banyak. Agar tabel tersebut dapat memenuhi 1NF, maka solusinya adalah mendekomposisi tabel kuliah menjadi: 1. Tabel Kuliah Kode_kul Nama_kul Sks Smstr Nama_dosen C1234 Matematika 1 2 1 Devie C1243 Riset Operasi 2 5 Rosa C1342 ADSI 2 3 Anamisa 2. Tabel Jadwal Kode_kul Waktu Ruang C1234 1 RKB-3 C1243 1 RKB-1 C1342 2 RKB-3 Bentuk Normal Kedua (2NF) Suatu tabel disebut dalam bentuk normal kedua, jika : 1. Tabel berada dalam bentuk normal pertama 2. Semua kolom yang bukan primary key tergantung sepenuhnya terhadap primary key 3. Disebut tergantung sepenuhnya terhadap primary key jika suatu kolom selalu bernilai sama untuk nilai primary key yang sama. Sebuah tabel dikatakan tidak memenuhi 2NF, jika ketrgantungan hanya bersifat parsial (hanya tergantung pada sebagian dari primary key). Bentuk normal kedua akan dicontohkan pada tabel nilai berikut ini: Kode_kul Nim Nilai C1234 7402030007 A C1243 7402030008 B+ C1342 7402030009 B Jika pada tabel nilai, misalnya kita tambahkan sebuah atribut yang bersifat redudan yaitu nama_mhs, maka tabel nilai ini dianggap melanggar 2NF. Primary key pada tabel nilai adalah [kode_kul, nim]. Penambahan atribut baru (nama_mhs) akan menyebabkan adanya ketergantungan fungsional yang baru 8
yaitu nim nama_mhs. Karena atribut nama_mhs ini hanya memiliki ketergantungan parsial pada primary key secara utuh (hanya tergantung pada nim, padahal nim hanya bagian dari primary key). Bentuk normal kedua ini dianggap belum memadai karena meninjau sifat ketergantungan atribut terhadap primary key saja. Bentuk Normal Ketiga (3NF) Suatu tabel dikatakan dalam bentuk normal ketiga, jika : 1. Berada dalam bentuk normal kedua 2. Setiap kolom bukan primary key tidak memiliki ketergantung transitif terhadap primary key Suatu kolom Z memiliki ketergantungan transitif terhadap kolom X, jika : 1. Y memiliki ketergantungan fungsional terhadap X, dan 2. Z memiliki ketergantungan fungsional terhadap Y Misalkan pada tabel Mahasiswa, atribut alamat_mhs dipecah ke dalam alamat_jalan, alamat_kota dan kode_pos. Bentuk ini tidak memenuhi 3NF karena terdapat ketergantungan fungsional baru yang muncul pada tabel tersebut yaitu: alamat_jalan nama_kota kode_pos Dalam hal ini (alamat_jalan, nama_kota) bukan superkey sementara kode_pos juga bukan bagian dari primary key pada tabel mahasiswa. Jika tabel mahasiswa didekomposisi menjadi tabel mahasiswa dan tabel alamat, maka telah memenuhi 3NF. Hal ini dapat dibuktikan dengan memeriksa dua ketergantungan fungsional pada tabel alamat tersebut, yaitu: alamat_jalan nama_kota kode_pos kode_pos nama_kota Bentuk Normal Tahap Keempat dan Kelima Penerapan aturan normalisasi sampai bentuk normal ketiga sudah memadai untuk menghasilkan tabel berkualitas baik. Namun demikian, terdapat pula bentuk normal keempat (4NF) dan kelima (5NF). Bentuk Normal Keempat berkaitan dengan sifat ketergantungan banyak nilai (multivalued dependency) pada suatu tabel merupakan pengembangan dari ketergantungan fungsional. Sedangkan bentuk normal tahap kelima merupakan nama lain dari Project Join Normal Form (PJNF). Boyce Codd Normal Form (BCNF) Bentuk normal ketiga 3NF dapat dikatakan BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik. Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb: 1. Jika ada dekomposisi (penguraian ) tabel, maka dekomposisinya harus dijamin aman ( Lossless-Join Decomposition). Artinya, setelah tabel 9
tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis. 2. Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation). 3. Tidak melanggar Boyce-Code Normal Form (BCNF). Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3r d Normal Form / 3NF). Relasi R dengan ketergantungan fungsional F termasuk dalam bentuk BCNF jika untuk semua X A yang ada dalam F. Dengan kata lain, R berada dalam BCNF jika ketergantungan fungsional non-trivial pada R memiliki key constraint. 2. Kegiatan Praktikum 1. Terdapat suatu bentuk tabel informasi seperti berikut ini : Tabel 9.1. Informasi Buku ISBN Judul Halaman Topik 979-533- 791-2 978-532- 792-3 977-534- 793-4 Basisdata 60 Data Definition Language Data Manipulation Language Data Control Language Matematika 90 Probabilitas Permutasi dan Kombinasi PHP 90 Pemrograman Internet Bagaimana bentuk tabel-tabel yang menyimpan data pada informasi tersebut dengan menggunakan normalisasi untuk verifikasi tabel? 2. Terdapat suatu bentuk tabel informasi seperti beikut ini: Tabel 9.2. Informasi mahasiswa no_mhs nama matakuliah nip dosen Nilai 11879 Ali Basis data Fisika I 32000011 32000012 Devie Rosa A A 11897 Siti Basis data Fisika I Pascal 32000011 32000012 16785 Devie Rosa Anamisa A B A 11898 Edi Fisika I 32000011 Devie A Bagaimana bentuk tabel-tabel yang menyimpan data pada informasi tersebut dengan menggunakan normalisasi untuk verifikasi tabel? 1. Tugas tambahan (ditentukan oleh asisten praktikum)! 10
3. Tugas Dari kasus ke-i dan ke-ii pada kegiatan praktikum maka bagaimana solusi pemecahan tabel yang didapatkan? Kasus I: T= ---------------------- Permasalahan : ----------------------- Solusi pemecahan tabel : I. Tabel ----------------------- II. Tabel ----------------------- III. Tabel ----------------------- Kasus II: T= ---------------------- Permasalahan : ----------------------- Solusi pemecahan tabel : IV. Tabel ----------------------- V. Tabel ----------------------- Tabel ----------------------- 11
MODUL III STRUCTURED QUERY ANGUAGE (SQL) Tujuan : 1. Memahami tentang sistem database 2. Memahami instalasi MySQL di lingkungan Windows 3. Memahami dasar-dasar MySQL. Tugas Pendahuluan 1. Apa yang anda ketahui tentang mysql, jelaskan 2. Apa perbedaan instalasi mysql dilingkungan windows dengan linux 3. sebutkan operator dan fungsi dalam mysql! 1. Dasar Teori Basis data adalah sekumpalan informasi yang diatur agar mudah dicari. Dalam arti umum basis data adalah sekumpulan data yang diproses dengan bantuan komputer yang memungkinkan data dapat diakses dengan mudah dan tepat, yang dapat digambarkan sebagai aktifitas dari satu atau lebih organisasi yang berelasi. Pengertian MYSQL Database MYSQL merupakan sistem manajemen basis data SQL yang sangat terkenal dan bersifat Open Source. MySQL dibangun, didistribusikan dan didukung oleh MYSQL AB. MYSQL AB merupakan perusahaan komersial yang dibiayai oleh pengembang MYSQL Tipe Data Data yang terdapat dalam sebuah tabel berupa field-field yang berisi nilai dari data tersebut. Nilai data dalam field memiliki tipe sendiri-sendiri. MYSQL mengenal beberapa tipe data field yaitu : Tipe data numerik 1
Tipe data numerik dibedakan dalam dua macam kelompok, yaitu integer dan floating point. Integer digunakan untuk data bilangan bulat sedangkan floating point digunakan untuk bilangan desimal. Tipe data string String adalah rangkaian karakter. Tipe-tipe data yang termasuk dalam tipe data string dapat dilihat pada tabel 8.1.2.b berikut: Tabel 8.1.2.b Tipe Data String Tipe Data Kisaran Nilai CHAR 1-255 karakter VARCHAR 1-255 karakter TINYTEXT 1-255 karakter TEXT 1-65535 karakter MEDIUMTEXT 1-16777215 karakter LONGTEXT 1-424967295 karakter Tipe data char() dan varchar() Tipe data char() dan varchar() pada prinsipnya sama, perbedaannya hanya terletak pada jumlah memori yang dibutuhkan untuk penyimpanannya. Memori yang dibutuhkan untuk tipe data char() bersifat statis, besarnya bergantung pada berapa jumlah karakter yang ditetapkan pada saat field tersebut dideklarasikan. Pada tipe data varchar() besarnya memori penyimpanan tergantung pada jumlah karakter ditambah 1 byte, dapat dilihat pada tabel 8.1.2.c berikut ini: Tabel 8.1.2.c Letak Perbedaan Jumlah Memori Nilai Char(4) Memori Penyimpanan Varchar (4) 4 bytes 1 byte ab ab 4 bytes ab 3 bytes abcd abcd 4 bytes abcd 5 bytes abcdefgh abcd 4 bytes abcd 5 bytes Memori Penyimpanan Tipe data tanggal Untuk tanggal dan jam, tersedia tipe-tipe data field berupa DATETIME, DATE, TIMESTAMP, TIME dan YEAR. Masing-masing tipe mempunyai kisaran nilai tertentu. MYSQL akan memberikan peringatan kesalahan (error) apabila tanggal atau waktu yang dimasukkan salah. Kisaran nilai dan besar memori penyimpanan yang diperlukan untuk masing-masing tipe dapat dilihat pada tabel 8.1.2.d berikut ini: 2
Tabel 8.1.2.d Tipe Data Tanggal Tipe Data Kisaran Nilai Memori Penyimpanan DATETIME 1000-01-01 00:00 sampai 9999-12-31 3 byte 23:59:59 DATE 1000-01-01 sampai 9999-12-31 8 byte TIMESTAMP 1970-01-01 00:00:00 sampai 2037 4 byte TIME -839:59:59 sampai 838:59:59 3 byte YEAR 1901 sampai 2155 1 byte Operator MYSQL MYSQL mendukung penggunaan operator-operator dan fungsi-fungsi diantaranya: Operator Aritmetika Suatu ekspresi yang melibatkan tipe data bilangan (NUMERIK) dan tanggal (DATE) menggunakan ekspresi aritmatika. Dapat dilihat pada tabel 8.1.3.a berikut ini: Tabel 8.1.3.a Operator aritmatika MYSQL Operator Keterangan + Tambah - Kurang * Kali / Bagi Mod () Modulus Operator Pembandingan Suatu ekspresi yang dapat digunakan pada klausa WHERE dan mempunyai sintax sebagai berikut: WHERE expr operator value. Tabel 8.1.3.b menunjukan operator pembanding pada MYSQL berikut ini: Tabel 8.1.3.b Operator Pembanding MYSQL Operator Keterangan = Sama Dengan > Lebih Besar < Lebih Kecil >= Lebih Besar atau Sama Dengan <= Lebih Kecil atau Sama Dengan <> Tidak Sama Dengan Operator Logika Operator ini digunakan untuk membandingkan dua nilai variabel yang bertipe boolean. 3
Operator Karakter Operator untuk membentuk pencarian string yang sesuai dengan nilai yang mencantumkan pada kondisi. Kondisi pencarian dapat berisi karakter, ada 3 symbol khusus berikut ini dapat dilihat pada tabel 8.1.3.d berikut ini: Tabel 8.1.3.d Tabel Operator Karakter Operator Keterangan % Sembarang karakter berapapun jumlahnya _ Sembarang satu karakter [] Sembarang karakter yang terletak dalam kurung siku Operator Lain-lain Operator yang digunakan untuk menguji nilai-nilai yang ada dalam list (tanda kurung) dan dapat juga untuk menampilkan baris berdasarkan suatu jangkauan (range) nilai. Ada 2 symbol tersebut dapat dilihat pada tabel 8.1.3.e berikut ini: Tabel 8.1.3.e Operator lain-lain Operator Keterangan IN Dalam BETWEEN Diantara 2. Kegiatan Praktikum : Instalasi MySQL-5.0.22-WIN32 : 1. Jalankan file setup mysql, yaitu mysql-5.0.22-win32.exe, maka akan muncul dialog instalasi sebagai berikut : 2. Pilih tombol Next, kemudian muncul dialog tipe instalasi sebagai berikut : 4
3. Pilih Custom, kemudian pilih tombol Next. Kemudian tampil dialog fitur program sebagai berikut : 4. Klik tanda silang pada Developer Components, kemudian pilih This feature will be installed on local hard drive seperti gambar berikut : 5
5. Kemudian pilih tombol Change..., pada folder name ubah menjadi sesuai dengan gambar berikut ini : 6. Pilih OK, kemudian pilih tombol Next, dan pilih tombol Install, maka proses instalasi dimulai. 6
7. Berikutnya muncul dialog account, pilih Skip Sign-Up dan klik tombol Next, maka akan muncul dialog sebagai berikut : 8. Klik tombol Finish dan tombol Next, maka akan muncul dialog sebagai berikut : 7
9. Pilih Standard Configuration dan klik tombol Next, lalu muncul gambar berikut : 8
10. Pilih tombol Next. Kemudian muncul gambar berikut ini. Masukkan password yang diinginkan pada kota isian New root password dan Confirm berikut ini untuk sekuritas, misalnya 123456. Klik tombol Next. 11. Klik tombol Execute sebagai tahap akhir. 12. Klik Finish. 9
Melakukan Koneksi ke MySQL : Cara 1 : 1. Melalui DOS Prompt, masuk ke direktori utama MySQL dengan cara sebagai berikut (yang diketik hanya yang digaris bawah) : C:\>cd \mysql\bin 2. Setelah itu ketikkan perintah berikut (yang diketik hanya yang digaris bawah) : C:\>mysql\bin\mysql u root p maka akan diminta untuk memasukkan passoword, isikan password yang digunakan pada saat instalasi, yaitu 123456. 3. Selanjutnya akan ada respon dari server seperti gambar berikut : Tampilan tersebut di atas menandakan bahwa telah berhasil melakukan koneksi ke server. Cara 2 : 1. Dari menu Start > All Programs > MySQL > MySQL Server 5.0 > MySQL Command Line Client, maka akan muncul tampilan seperti berikut ini : 10
2. Masukkan password yang telah ditentukan pada saat instalasi, yaitu : 123456 kemudian tekan enter. Menuliskan perintah pada mysql Bentuk prompt mysql> adalah tempat menuliskan perintah-perintah MySQL. Setiap perintah SQL harus diakhiri dengan tanda titik-koma ;. Cara untuk membuat sebuah database baru adalah dengan perintah: create database namadatabase; Misalkan anda ketikkan : create database modul1; Untuk membuka sebuah database dapat menggunakan perintah berikut ini: use namadatabase; Contoh: use modul1; Perintah untuk membuat tabel baru adalah: create table namatabel ( struktur ); Constraint Constraint adalah batasan atau aturan yang ada pada table. MySQL menyediakan beberapa tipe constraint berikut : NOT NULL Suatu kolom yang didefinisikan dengan constraint NOT NULL tidak boleh berisi nilai NULL. Kolom yang befungsi sebagai kunci primer (primary key) otomatis tidak boleh NULL. UNIQUE Mendefinisikan suatu kolom menjadi bersifat unik, artinya antara satu data dengan data lainnya namanya tidak boleh sama, misal alamat email. 11