Rabu, 27 Juni 2012

LINGKUNGAN DATABASE LANJUTAN

CRASS DAN RECOVERY PENGERTIAN : Crass adalah suatu failure atau kegagalam dari suatu sistem PENYEBAB DARI KEGAGALAN ADALAH : 1. Disk Crash yaitu informasi yang ada di disk akan hilang 2. Power failure yaitu informasi yang disimpan pada memori utama dan register akan hilang 3. Software Error yaitu output yang dihasilkan tidak betul dan sistem databasenya sendiri akan memasuki suatu kondisi tidak konsisten KLASIFIKASI FAILURE Berdasarkan Jenis storage 1. Volatile storage, biasanya informasi yang terdapat pada volatile akan hilang, jika terjadi kerusakan sistem (system crash) contoh: RAM 2. Non Volatile Storage, biasanya informasi yang terdapat pada non volatile strorage tidak akan hilang jika terjadi kerusakan sistem contoh: ROM 3. Stable Storage, informasi yang terdapat dalam stable storage tidak pernah hilang. contoh: Harddisk RAID Jenis kegagalan : 1. Logical Error, program tidak dapat lagi dilaksanakan disebabkan oleh kesalahan input, data tidak ditemukan, over flow 2. System Error, sistem berada pada keadaan yang tidak diinginkan, seperti terjadi deadlock, sebagai akibat program tidak dapat dilanjutkan namun setelah beberapa selang waktu program dapat dijalankan kembali. 3. System Crash,kegagalan fungsi perangkat keras, menyebabkan hilangnya data pada volatile storage, tetapi data pada non volatile storage masih tetap ada. Disk Failure, hilangnya data dari sebuah blok disk disebabkan oleh kerusakan head atau kesalahan pada waktu pengoperasian transfer data SECURITY dan INTEGRITY SECURITY adalah suatu proteksi data terhadap perusakan data dan pemakaian oleh pemakai yang tidak mempunyai ijin. BEBERAPA MASALAH SECURITY SECARA UMUM : 1. Di dalam suatu perusahaan siapa yang diijinkan untuk mengakses suatu sistem 2. Bila sistem tersebut menggunakan password, bagaimana kerahasian dari password tersebut dan berapa lama password tersebut harus diganti 3. Di dalam pengontrolan hardware, apakah ada proteksi untuk penyimpanan data (data storage) DUA KATAGORI PENYALAHGUNAAN DATABASE : 1. Katagori yang tidak disengaja Contoh:Anomaliyangdisebabkanoleh pendistribusian data pada beberapa komputer 2. Katagori yang disengaja Contoh: Insert, Delete & Update oleh pihak yang tidak berwenang BEBERAPA TINGKATAN MASALAH SECURITY : 1. Phisical, berkaitan dengan pengamanan lokasi fisik database 2. Man, berkaitan dengan wewenang user 3. Sistem operasi, berkaitan dengan kemanan sistem operasi yang digunakan dalam jaringan 4. Sistem database, sistem dapat mengatur hak akses user PEMBERIAN WEWENANG DAN VIEW KONSEP VIEW adalah cara yang diberikan pada seorang pemakai untuk mendapatkan model database yang sesuai dengan kebutuhan perorangan Database relational membuat pengamanan pada level : Relasi, seorang pemakai diperbolehkan atau tidak mengakses langsung suatu relasi View, seorang pemakai diperbolehkan atau tidak mengakses data yang terdapat pada view Read Authorization, data dapat dibaca tapi tidak boleh dimodifikasi Insert Authorozation, pemakai boleh menambah data baru, tetapi tidak dapat memodifikasi data yang sudah ada Update Authorization, pemakai boleh memodifikasi tetapi tidak dapat menghapus data Delete Authorization, pemakai boleh menghapus data Index Authorization, pemakai boleh membuat atau menghapus index Resource Authorization, mengizinkan pembuatan relasi – relasi baru Alternation Authorization, mengizinkan penambahan atau penghapusan atribute dalam satu relasi Drop Authorization, pemakai boleh menghapus relasi yang ada INTEGRITY Berarti memeriksa keakuratan dan validasi data BEBERAPA JENIS INTEGRITY : 1. Integrity Konstains, memberikan suatu sarana yang memungkinkan pengubahan database oleh pemakai berwenang sehingga tidak akan menyebabkan data inkonsistensi Integrity Rule (pada basisdata relational), terbagi menjadi: - Integrity Entity, contoh: tidak ada satu komponen kunci primer yang bernilai kosong (null) - Integrity Referensi, suatu domain dapat dipakai sebagai kunci primer bila merupakan atribut tunggal pada domain yang bersangkutan 2.

LINGKUNGAN DATABASE

LINGKUNGAN DATABASE CONCURRENCY (KONKURENSI) Ada 3 masalah yang disebabkan oleh Concurrency : 1. Masalah kehilangan modifikasi (Lost Update Problem) Masalah ini timbul jika dua transaksi mengakses item database yang sama yang mengakibatkan nilai dari database tersebut menjadi tidak benar. Transaksi A = Baca R = = = Modifikasi R = = = Waktu t1 t2 t3 T4 Transaksi B = = = Baca R = = = Modifikasi R = Contoh Lost Update problem Data transaksi pada rekening bersama (Ika dan Susi) Waktu T1 T2 T3 T4 T5 T6 Transaksi Ika Read Saldo ………. Saldo:=Saldo-50.000 Write Saldo ………. ……… Transaksi Susi ……… Read Saldo …….. …….. Saldo:= saldo+100.000 Write Saldo Saldo 1.000.000 1.000.000 1.000.000 950.000 1.000.000 1.100.000 Nilai saldo menjadi tidak benar disebabkan transaksi Susi membaca nilai saldo sebelum transaksi Ika mengubah nilai tersebut dalam database, sehingga nilai yang sudah di update yang dihasilkancdari transaksi Ika menjadi hilang. 2. Masalah Modifikasi Sementara (uncommited Update Problem) Masalah ini timbul jika transaksi membaca suatu record yang sudah dimodifikasi oleh transaksi lain tetapi belum terselesaikan (uncommited), terdapat kemungkinan kalau transaksi tersebut dibatalkan (rollback). Transaksi A - Baca R - - - Modifikasi R - Waktu Transaksi B - Modifkasi R - - - Rollback - t1 t2 t3 Contoh uncommited Update Problem Waktu T1 T2 T3 T4 T5 T6 T7 Transaksi Simpanan Read Saldo Saldo:=saldo+1.000.0000 Write Saldo ………. ………. ……… ……… Transaksi Bunga ……… ……… …….. Read Saldo Saldo:= saldo*0.15 Write Saldo RollBack Saldo 1.000.000 1.000.000 2.000.000 2.000.000 2.000.000 2.300.000 2.300.000 Nilai saldo menjadi tidak benar disebabkan terjadi RollBack pada T7 yang membatalkan transaksi sebelumnya (T6), sehingga saldo seharusnya tetap 2.000.000 3. Masalah Analisa yang tidak konsisten (Problem of inconsistency Analysis) Masalah ini timbul jika sebuah transaksi membaca suatu nilai tetapi transaksi yang kedua mengupdate beberapa nilai tersebut selama eksekusi transaksi pertama Contoh Problem of inconsistency Analysis Transaksi A menjumlahkan nilai 1, nilai 2 dan nilai 3 Transaksi Bnilai 1 + 10, nilai 3 –10 LOCKING adalah salah satu mekanisme pengontrol concurrency KONSEP DASAR : Ketika sebuah transaksi memerlukan jaminan kalau record yang diinginkan tidak akan berubah secara mendadak, maka diperlukan kunci untuk record tersebut FUNGSI Locking berfungsi untuk menjaga record tersebut agar tidak dimodifikasi oleh transaksi lain. Jenis- Jenis Lock : 1. Share (S) Kunci ini memungkinkan pengguna dan para pengguna konkuren yang lain dapat membaca record tetapi tidak mengubahnya. 2. Exclusive (X) Kunci ini memungkinkan pengguna untuk membaca dan mengubah record. Sedangkan pengguna konkuren lain tidak diperbolehkan membaca ataupun mengubah record tersebut. •KASUS CARA KERJA LOCKING TIMESTAMPING Adalah salah satu alternatif mekanisme kontrol konkurensi yang dapat menghilangkan masalah dead lock Dua masalah yang timbul pada Timestamping : 1. Suatu transaksi memerintahkan untuk membaca sebuah item yang sudah di update oleh transaksi yang belakangan. 2. Suatu transaksi memerintahkan untuk menulis sebuah item yan nilainya sudah dibaca atau ditulis oleh transaksi yang belakangan

PERANCANGAN DAN IMPLEMENTASI BASIS DATA MENGGUNAKAN MYSQL

PERANCANGAN DAN IMPLEMENTASI BASIS DATA MENGGUNAKAN MYSQL Perangkat Lunak Bantu untuk Perancangan Basis Data Pada perangkat lunak bantu telah tersedia komponen- komponen (notasi-notasi) perancangan basis data. Salah satu perangkat lunak bantu untuk keperluan semacam itu adalah DBDesigner yang dioptimalkan untuk MySQL Database. jendela DBDesigner. Contoh penggunaan DBDesigner. Menggunakan Komponen TABEL dan RELASI Klik komponen Tabel pada toolbar seperti di gambar berikut. Letakan komponen tsb. pada page area sehingga muncul komponen Tabel (Table_01) pada page area, kemudian klik kanan komponen tsb sehingga muncul menu dan pilihlah Edit Object seperti berikut. Menu Edit Object akan menampilkan jendela Table Editor. Pada Table Editor kita bisa menentukan properties dari tabel seperti nama tabel, tipe data, primary key dsb. Ubah dan simpanlah properties tabel (Table _01) menjadi tabel faktur (struktur tabel seperti pada pembahasan LRS tanpa ada FK) seperti berikut. Ulangi langkah-langkah menggunakan komponen Table di atas (tabel faktur) untuk tabel barang dan langganan (struktur tabel seperti pada pembahasan LRS tanpa ada FK). Sehingga ada 3 komponen Table seperti gambar berikut Langkah berikutnya membuat relasi 1-M antara langganan dengan faktur dengan cara klik komponen 1-n Relation pada toolbar seperti di gambar berikut. Klik di tabel langganan kemudian klik di tabel faktur, sehingga muncul komponen relasi yang menghubungkan kedua tabel tsb. dan FK (NLgn) berada pada tabel faktur, seperti gambar berikut Langkah berikutnya membuat relasi M-M antara faktur dengan barang dengan cara klik komponen n-m Relation pada toolbar seperti di gambar berikut Klik di tabel faktur kemudian klik di tabel barang, sehingga muncul komponen relasi yang disertai munculnya tabel baru (faktur_has_barang) dan FK (Nfak & NBrg) berada pada tabel tsb, seperti gambar berikut. Edit properties tabel faktur_has_barang yaitu dengan mengganti nama menjadi tabel transaksi dan menambahkan field Qty dan HrgTran. Sehingga menjadi seperti gambar berikut. Untuk mengekspor hasil rancangan database ke dalam database digunakan Database Synchronization. Database yang digunakan pada contoh ini adalah MySQL. Sebelum melakukan sinkronisasi, kita perlu membuat koneksi ke database MySQL terlebih dahulu. Jika remote connection dengan root diperbolehkan maka gunakan user root. Jika tidak maka kita butuh membuat user baru terlebih dahulu. Berikut ini adalah cara bagaimana membuat user baru yaitu db_owner. Lakukan login terlebih dahulu ke MySQL dengan memasukkan password root. Buat user baru bernama dbo dengan password ”owner”. Ketikkan 3 perintah dibawah ini. s Buat Database baru yaitu dbpenjualan Mengekspor Tabel Hasil Rancangan Ke Server Database Mengekspor tabel ke server database bisa dilakukan dari menu DatabaseDatabase Sychronisastion seperti gambar berikut. Lalu pilih MySQL sebagai database dan kemudian klik New Database Connection Masukkan Nilai berikut: Connection Name : MySQL Hostname : localhost Database Name : dbpenjualan UserName : dbo Password : owner Lalu klik OK Klik Connect untuk terkoneksi ke MySQL Klik Execute untuk mengeksekusi sinkronisasi Setelah tampil jendela seperti di atas, selanjutnya klik tombol EXECUTE untuk mengekspor tabel ke server database MySQL dan akan tampil progress report seperti berikut Implementasi Basis Data Menggunakan SQLYog (MySQL GUI) SQLyog merupakan salah satu perangkat lunak yang berfungsi untuk mengelola database MySQL dengan menggunakan Graphical User interface (GUI). Berikut ini beberapa fungsi yang bisa digunakan pada SQLYog: Membuat koneksi ke server MySQL Klik menu File > New Connection akan tampil jendela koneksi berikut. Klik tombol New dan akan tampil jendela New Connection, isilah nama koneksi kemudian klik OK seperti gambar berikut. Pastikan Host Address, User Name dan yang lainya diisi dengan benar, kemudian klik Connect Membuat database Pilih menu DB > Create Database, kemudian tentukan nama database (data_penjualan). Membuat tabel Klik pada database untuk mengaktifkannya. Berikut ini untuk membuat tabel langganan (lgn), pilih menu DB > Create Table, kemudian tentukan field- fieldnya, kemudian klik Create Table dan tentukan nama tabel. Klik OK untuk menyimpan tabel. Klik OK. Klik Yes untuk membuat/menambah tabel. Tambahkan beberapa tabel-tabel yang lain sbb Tabel FAKTUR: Tabel TRANS: Tabel BARANG Melihat tabel yang telah terbentuk Melihat struktur tabel Mengubah struktur table Klik pada tabel yang akan diubah Pilih menu Table > Alter Table, kemudian ubahlah. Jika telah selesai klik Alter Manipulasi data pada tabel Untuk menambah, mungubah, menghapus dan melihat data pada tabel bisa dilakukan langsung pada tab Table Data seperti halnya pada MS-Access. Mengeksekusi perintah SQL Perintah-perintah SQL bisa dieksekusi dengan cara menuliskannya terlebih dahulu pada tab Query, . kemudian menjalankanya dengan menekan toolbar Latihan 1. Sebuahperusahaanyangmelayanipemesanan barang/produk umum memerlukan sebuah program aplikasi yang berfungsi untuk menyimpan data produk beserta suppliernya dan juga berfungsi untuk mencatat transaksi pemesananan produk dari customer. Setiap produk yang dipesan akan dikirim ke customer yang memesannya. Rancanglah database untuk program aplikasi tersebut dengan menggunakan DBDesigner dan ekspor hasilnya ke serverMySQL,untukmemenuhikeinginan perusahaantersebut. 2. Seorang kolektor mobil ingin mendata seluruh mobil miliknya dan memerlukan program aplikasi yang bisa berfungsi untuk menyimpan data koleksi mobilnya. Rancanglah database untuk program aplikasi tersebut dengan menggunakan Bdesigner dan ekspor hasilnya ke server MySQL, sehingga program yang dikembangkan bisa memenuhi keinginan kolektor tersebut.

FRAGMENTASI DATA

FRAGMENTASI DATA Merupakan sebuah proses pembagian atau pemetaan database dimana database dipecah-pecah berdasarkan kolom dan baris yang kemudian disimpan didalam site atau unit komputer yang berbeda dalam suatu jaringan data, sehingga memungkinkan untuk pengambilan keputusan terhadap data yang telah terbagi. Alasan-alasan diperlukannya fragmentasi, yaitu : 1. Penggunaan 2. Efisiensi 3. Paralleslisme 4. Keamanan BEBERAPA PERATURAN YANG HARUS DIDEFINISIKAN KETIKA MENDEFINISIKAN FRAGMENT : 1. Kondisi lengkap (Completeness) sebuah unit data yang masih dalam bagian dari relasi utama, maka data harus berada dalam satu fragmen. Ketika ada relasi, pembagian datanya harus menjadi satu kesatuan dengan relasinya. 2. Rekontruksi (Reconstruction) sebuah relasi asli dapat dibuat kembali atau digabungkan kembali dari sebuah fragmen. Ketika telah dipecah-pecah, data masih memungkinkan untuk digabungkan kembali dengan tidak mengubah struktur data. 3. Disjointness data didalam fragmen tidak boleh diikutkan dalam fragmen lain agar tidak terjadi redundancy data, kecuali untuk atribut primary key dalam fragmentasi vertikal Kerugian fragmentasi yaitu : 1. Kinerja yang dapat turun karena data tersebar dan butuh proses untuk penggabungan kembali 2. Integritas yang dapat terganggu dikarenakan kegagalan pada salah satu site database server TIGA JENIS FRAGMENTASI : 1. Fragmentasi horisontal terdiri dari tuple dari fragment global yang kemudian dipecah-pecah atau disekat menjadi beberapa sub-sets 2. Fragmentasi vertikal Membagi atribut-atribut dari fragment global yang tersedia menjadi beberapa grup. 3. Fragmentasi campuran Cara yang sederhana untuk membangun fragmentasi campuran sbb : a. Menggunakan fragmentasi horisontal pada fragmentasi vertikal b. Menggunakan fragmentasi vertical pada fragmentasi horisontal CONTOH KASUS JENIS-JENIS FRAGMENTASI Ujian (NIM,Nama_Mhs,Kode_MK,Mt_Kuliah,Nil_Akhir,Grade) NIM 123 124 125 126 127 128 129 Nama_Mhs Fathi Farah Sarah Salsabila Azizah Farhan Faiz Kode_MK 101 102 101 101 103 103 102 Mt_Kuliah Sistem Basis Data Peranc. Sistem Sistem Basis Data Sistem Basis Data Visual Basic Visual Basic Peranc. Sistem Nil_Akhir 78 60 40 90 70 40 80 Grade B C D A B D A Fragmentasi Horisontal terbagi menjadi 3 fragment yang berbeda berdasarkan Mt_Kuliah 1. Relasi Mt_Kuliah=“Sistem Basis Data” Mt_Kuliah=“Sistem Basis Data” (Ujian) NIM 123 125 126 Nama_Mhs Fathi Sarah Salsabila Kode_MK 101 101 101 Mt_Kuliah Sistem Basis Data Sistem Basis Data Sistem Basis Data Nil_Akhir 78 40 90 Grade B D A 2. Relasi Mt_Kuliah=“Peranc. Sistem” Mt_Kuliah=“Peranc. Sistem” (Ujian) NIM 124 129 Nama_Mhs Farah Faiz Kode_MK 102 102 Mt_Kuliah Peranc. Sistem Peranc. Sistem Nil_Akhir 60 80 Grade C A 3. Relasi Mt_Kuliah=“Visual Basic” Mt_Kuliah=“Visual Basic” (Ujian) NIM 127 128 Nama_Mhs Azizah Farhan Kode_MK 103 103 Mt_Kuliah Visual Basic Visual Basic Nil_Akhir 70 40 Grade B D Fragment di atas memenuhi kondisi jika Nama_Mhs dan Mt_Kuliah adalah hal-hal yang memenuhi syarat Fragmentasi vertical:berdasarkan dekomposisi-nya dengan menambahkan tupel id NIM 123 124 125 126 127 128 129 Nama_Mhs Fathi Farah Sarah Salsabila Azizah Farhan Faiz Kode_MK 101 102 101 101 103 103 102 Mt_Kuliah Sistem Basis Data Peranc. Sistem Sistem Basis Data Sistem Basis Data Visual Basic Visual Basic Peranc. Sistem Nil_Akhir 78 60 40 90 70 40 80 Grade B C D A B D A Tuple_ID 1 2 3 4 5 6 7 Relasi 1 = NIM, Nama_Mhs, Mt,Kuliah, Nil_Akhir, Grade, Tuple_ID NIM,Nama_Mhs,Mt,Kuliah,Nil_Akhir,Grade,Tuple_ID (UJian) NIM Nama_Mhs Mt_Kuliah Nil_Akhir Grade Tuple_ID 123 124 125 126 127 128 129 Fathi Farah Sarah Salsabila Azizah Farhan Faiz Sistem Basis Data Peranc. Sistem Sistem Basis Data Sistem Basis Data Visual Basic Visual Basic Peranc. Sistem 78 60 40 90 70 40 80 B C D A B D A 1 2 3 4 5 6 7 Relasi 2 = NIM,Kode_MK,Nil_Akhir,Grade,Tuple_ID NIM,Kode_MK,Nil_Akhir,Grade,Tuple_ID (Ujian) NIM 123 124 125 126 127 128 129 Kode_MK 101 102 101 101 103 103 102 Nil_Akhir Grade Tuple_ID 78 60 40 90 70 40 80 B C D A B D A 1 2 3 4 5 6 7 Fragmentasi Campuran Terdapat relasi berdasarkan Mata Kuliah yang sama Relasi 1a. NIM,Nama_Mhs,Mt_Kuliah,Nil_Akhir,Grade,Tuple_ID(σ Mt_Kuliah=“Sistem Basis Data” (Ujian)) NIM 123 125 126 Nama_Mhs Fathi Sarah Salsabila Mt_Kuliah Sistem Basis Data Sistem Basis Data Sistem Basis Data Nil_Akhir 78 40 90 Grade B D A Tuple_ID 1 3 4 Relasi 1b. NIM,Nama_Mhs,Mt_Kuliah,Nil_Akhir,Grade,Tuple_ID(σ Mt_Kuliah=“Peranc. Sistem” (Ujian)) NIM 124 129 Nama_Mhs Farah Faiz Mt_Kuliah Peranc. Sistem Peranc. Sistem Nil_Akhir 60 80 Grade C A Tuple_ID 2 7 Relasi 1c NIM,Nama_Mhs,Mt_Kuliah,Nil_Akhir,Grade,Tuple_ID(σ Mt_Kuliah=“Visual Basic” (Ujian)) NIM 127 128 Nama_Mhs Azizah Farhan Mt_Kuliah Visual Basic Visual Basic Nil_Akhir 70 40 Grade B D Tuple_ID 5 6 Bagaimana bentuk database untuk data yang telah mengalami proses fragmentasi? Fragmentasi data merupakan langkah yang diambil untuk menyebarkan data dalam database terdistribusi . Selanjutnya akan dibahas apa yang dimaksud Database terdistribusi. DATABASE TERDISTRIBUSI Yaitu kumpulan data yang digunakan bersama yang saling terhubung secara logik tetapi tersebar secara fisik pada suatu jaringan komputer. Karakteristik Database terdistribusi, yaitu : 1.Kumpulan data yang digunakan bersama secara logik tersebar pada sejumlah komputer yang berbeda 2.Komputeryangdihubungkanmenggunakanjaringan komunikasi 3.Data pada masing-masing situs dapat menangani aplikasi- aplikasi lokal secara otonom 4.Data pada masing situs dibawah kendali satu DBMS 5.Masing-masing DBMS berpartisipasi dalam sedikitnya satu aplikasi global BENTUK-BENTUK TOPOLOGI DISTRIBUSI DATA : a. Fully Connected network A B D C E F b. Partialy conneted network A B C F E D C. Tree Strutured Network A B C D E F G d. Ring network A B C D E F e. Star network A B C D E KEUNTUNGAN DAN KERUGIAN DATABASE TERDISTRIBUSI KEUNTUNGAN : 1. Secara alami mengikuti struktur organisasi 2. Adanya otonomi lokal 3. Sifatnya dapat dipakai secara bersama 4. Peningkatan ketersediaan 5. Peningkatan kehandalan 6. Peningkatan kinerja 7. Ekonomis 8. Pertumbuhan yang modular KERUGIAN : 1. 2. 3. 4. 5. 6. 7. Harga software mahal (Biaya) Kompleksitas Kelemahan dalam keamanan Sulitnya menjaga keutuhan data Kurangnya standar Kurangnya pengalaman Perancangan basisdata lebih kompleks Analisa kasus Perpustakaan Smart • Pembuatan Salah satu Topologi Jaringan Database Terdistribusi dari Perpustakaan Smart. • Implementasikan Perpustakaan Smart Fragmentasikan dengan 3 kondisi : F.Horizontal,F.Vertikal & F.Campuran Diharapkan Dosen untuk memberikan Analisa kasus Perpustakaan Smart dan Solusi dari permasalahannya.

BAHASA QUERY KOMERSIAL

BAHASA QUERY KOMERSIAL STRUKTUR QUERY LANGUAGE (SQL) SQL dipublikasikan oleh E.F. CODD (1970) mengenai model relational. Kemudian pada tahun 1974, D. Chamberlin dan R.F. Boyce mengembangkan bahasa query untuk memanipulasi dan mengekstraksi data dari basisdata relational. Sasaran SQL a. b. c. d. e. Menciptakan basis data dan struktur relasi Melakukan menajemen data tingkat dasaar Membentuk query sederhana dan kompleks Melakukan tugas-tugas dengan seminimal mungkin memakai struktur dan sintaks perintah relatif mudah dipelajari Harus portabel Jenis SQL : 1. 2. 3. Interactive SQL Static SQL Dynamic SQL Subdivisi SQL 1. DDL (Data Definition Language) Query-query ini digunakan untuk mendefinisikan struktur atau skema basis data DML (Data Manipulation Language) Query-query ini digunakan untuk manajemen data dalam basis data DCL ( Data Control Language) Query-query ini berhubungan dengan pengaturan hak akses dan wewenang. 2. 3. PENGELOMPOKAN STATEMEN SQL 1. Data Definition Language (DDL) CREATE DATABASE DROP DATABASE CREATE TABELDROP TABEL CREATE INDEXDROP INDEX CREATE VIEWDROP VIEW ALTER TABLE 2. Data Manipulation Language INSERT, SELECT, UPDATE, DELETE 3. Data Access GRANT , REVOKE 4. Data Integrity RECOVER TABLE 5. Auxiliary SELECT INTO OUTFILE, LOAD, RENAME TABLE KASUS DATA DEFINITION LANGUAGE (DDL) A. CREATE 1.Pembuatan Database Nama Database adalah yang dapat mewakili suatu kejadian dapat berupa nama organisasi atau perusahaan. Sintaks : CREATE DATABASE nama_database Contoh : Buat database dengan nama PT.ABC CREATE DATABASE PT.ABC 2. Pembuatan Tabel Sintaks : CREATE TABLE nama_table ( nama_kolom1 tipe_data_kolom1, nama_kolom2,tipe_data_kolom2,….) Contoh : Buat struktur tabel dengan nama tabel MHS dengan data NIM char(8), NAMA char(25), ALAMAT char(30) CREATE TABLE MHS (NIM char(8) not null, NAMA char(25) notnull, ALAMAT char(30) notnull) 3. Pembuatan Index Sintaks : CREATE [UNIQUE] INDEX nama_index ON nama_table (nama_kolom) ; Contoh : Buat index data mahasiswa berdasarkan NIM dengan nama MHSIDX Dimana NIM tidak boleh sama CREATE UNIQUE INDEX MHSIDX ON MHS(NIM) 4. Pembuatan View Sintaks : CREATE VIEW nama_view [ (nama_kolom1,….) ] AS SELECT statement [WITH CHECK OPTION] ; Contoh : Buat view dengan nama MHSVIEW yang berisi semua data mahasiswa CREATE VIEW MHSVIEW AS SELECT * FROM MHS B. DROP (MENGHAPUS) 1. Menghapus Database Sintaks : DROP DATABASE nama_db ; 2. Menghapus Tabel Sintaks : DROP TABLE nama_table ; 3. Menghapus Index Sintaks : DROP INDEX nama_index ; 4. Menhapus View Sintaks : DROP VIEW nama_view ; Contoh : DROP DATABASE Mahasiswa; DROP TABLE MHS; DROP INDEX MHSIDX; DROP VIEW MHSVIEW; C. ALTER TABLE (MERUBAH STRUKTUR TABEL) Sintaks : ALTER TABLE nama_tabel ADD nama_kolom jenis_kolom [FIRST | AFTER nama_kolom] CHANGE [COLUMN] oldnama newnama MODIFY nama_kolom jenis kolom, … DROP nama_kolom RENAME newnama_tabel Contoh : 1. Tambahkan kolom JKEL dengan panjang 1 char pada tabel MHS ALTER TABLE MHS ADD JKEL char(1); 2. Ubah panjang kolom MTKULIAH menjadi 30 char ALTER TABLE MKUL MODIFY COLUMN MTKULIAH char(30); 3. Hapus kolom JKEL dari data table MHS ALTER TABLE MHS DROP JKEL; DATA MANIPULATION LANGUAGE (DML) 1. INSERT Sintaks : INSERT INTO Nama_tabel [(nama_kolom1,…)] Contoh : Masukan data matakuliah Berkas Akses dengan kode KK222 besarnya 2 INSERT INTO MKUL VALUES(“KK222”,”Berkas Akses”, 2); dan 2. UPDATE Sintaks : UPDATE nama_tabel SET nama_kolom = value_1 WHERE kondisi ; Contoh : Ubah alamat menjadi “Depok” untuk mahasiswa yang memiliki NPM “50096487” UPDATE MHS SET ALAMAT=”Depok” WHERE NPM=”50096487”; 3. DELETE Sintaks : DELETE FROM nama_table WHERE kondisi Contoh : Hapus data nilai matakuliah “KK021” bagi mahasiswa yang mempunyai NPM “ 10296832” DELETE FROM NILAI WHERE NPM=”10296832” AND KDMK=”KK021” Tabel dibawah ini untuk mengerjakan Select (tampilan) dari SQL Tabel Nilai Tabel Mahasiswa NIM 10296832 10296126 31296500 41296525 50096487 21196353 10296001 21198002 NAMA_MHS Nurhayati Astuti Budi Prananigrum Pipit Quraish Fintri Julizar ALAMAT_MHS Jakarta Jakarta Depok Bogor Bekasi Bogor Depok Jakarta NIM 10296832 10296126 31296500 41296525 21196353 50095487 NO_MK KK021 KD132 KK021 KU122 KU122 KD132 MID 60 70 55 90 75 80 FINAL 75 90 40 80 75 0 Tabel MataKuliah KD_MK KK021 KD132 KU122 NAMA_MK Sistem Basis Data Sistem Informasi Manajemen Pancasila SK S 2 3 2 4. SELECT Sintaks : SELECT [DISTINCT | ALL] nama_kolom FROM nama_tabel [ WHERE condition ] [ GROUP BY column_list ] [HAVING condition ] [ ORDER BY column_list [ASC | DESC]] Contoh : a. Tampilkan semua data mahasiswa SELECT NIM,NAMA,ALAMAT FROM MAHASISWA; Atau SELECT * FROM MAHASISWA; Maka hasilnya adalah : NIM 10296832 10296126 31296500 41296525 NAMA_MHS Nurhayati Astuti Budi Prananingrum ALAMAT_MHS Jakarta Jakarta Depok Bogor b. Tampilkan Mata Kuliah yang SKSnya 2 Select NAMA_MK from matakuliah Where sks = 2 Maka Hasilnya : NAMA_MK Sistem Basis Data Pancasila c. Tampilkan semua data nilai dimana nilai MID lebih besar sama dengan 60 atau nilai finalnya lebih besar 75. maka penulisannya : SELECT * FROM NILAI WHERE MID >= 60 OR FINAL > 75 Hasilnya : NIM 10296832 10296126 41296525 21196353 NO. MK KK021 KD132 KU122 KU122 MID 60 70 90 75 FINAL 75 90 80 75 JOIN 1. JOIN atau INNER JOIN Menggabungkan dua tabel dimana diantara dua tabel datanya bersesuaian. 2. LEFT JOIN atau LEFT OUTER JOIN Menggabungkan dua tabel dimana diantara dua tabel datanya bersesuaian dan juga semua record pada tabel sebelah kiri. 3. RIGHT JOIN atau RIGHT OUTER JOIN Menggabungkan dua tabel dimana diantara dua tabel datanya bersesuaian dan juga semua record pada tabel sebelah kanan. SELECT Nilai.NIM, NAMA_MHS, KD_MK, MID FROM Nilai INNER JOIN Mahasiswa ON Nilai.NIM = Mahasiswa.NIM Hasil : NIM 10296832 10296126 31296500 41296525 21196353 50095487 NAMA_MHS Nurhayati Astuti Budi Prananigrum Quraish Pipit KD_MK KK021 KD132 KK021 KU122 KU122 KD132 MID 60 70 55 90 75 80 SELECT Mahasiswa.NIM, NAMA_MHS, KD_MK, MID FROM Mahasiswa LEFT OUTER JOIN Nilai ON Nilai.NIM = Mahasiswa.NIM Hasil : NIM 10296832 10296126 31296500 41296525 21196353 50095487 10296001 21198002 NAMA_MHS Nurhayati Astuti Budi Prananigrum Quraish Pipit Fintri Julizar KD_MK KK021 KD132 KK021 KU122 KU122 KD132 - - MID 60 70 55 90 75 80 - - SELECT Mahasiswa.NIM, NAMA_MHS, KD_MK, MID FROM Nilai RIGHT OUTER JOIN Mahasiswa ON Nilai.NIM = Mahasiswa.NIM Hasil : NIM 10296832 10296126 31296500 41296525 21196353 50095487 10296001 21198002 NAMA_MHS Nurhayati Astuti Budi Prananigrum Quraish Pipit Fintri Julizar KD_MK KK021 KD132 KK021 KU122 KU122 KD132 - - MID 60 70 55 90 75 80 - - DATA ACCESS 1. GRANT Sintaks : GRANT hak_akses ON nama_db TO nama_pemakai [IDENTIFIED BY] [PASSWORD] ‘Password’ [WITH GRANT OPTION] ; GRANT hak_akses ON [nama_db.]nama_tabel TO nama_pemakai [IDENTIFIED BY] [PASSWORD] ‘Password’ [WITH GRANT OPTION]; Contoh : Berikan hak akses kepada Adi untuk menampikan nilai final test pada tabel Nilai. GRANT SELECT (FINAL) ON NILAI TO ADI 2. REVOKE Sintaks : REVOKE hak_akses ON nama_db FROM nama_pemakai ; REVOKE hak_akses ON nama_tabel FROM nama_pemakai ; Contoh : Tarik kembali dari Adi hak akses untuk menampilkan nilai final test REVOKE SELECT (FINAL) ON NILAI FROM ADI DATA INTEGRITY RECOVER TABLE Sintaks : RECOVER TABLE nama_tabel Contoh : Kembalikan keadaan data mahasiswa seperti pada saat sebelum terjadi kerusakan RECOVER TABLE MAHASISWA ; AUXILIARY 1. SELECT … INTO OUTFILE ‘filename’ Sintaks ini digunakan untuk mengekspor data dari tabel ke file lain. Sintaks : SELECT … INTO OUTFILE ‘Nama File’ [FIELDS | COLUMNS] [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] Contoh : Ubah semua data mahasiswa ke bentuk ASCII dan disimpan ke file teks di directory/home/adi dengan pemisah antar kolom ‘|’ SELECT * FROM MAHASISWA INTO OUTFILE “/home/adi/teks” FIELDS TERMINATED BY “  2. LOAD Sintaks query ini digunakan untuk mengimpor data dari file lain ke tabel. Sintaks : LOAD DATA INFILE “ nama_path” INTO TABLE nama_tabel [ nama_kolom] ; [FIELDS | COLUMNS] [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] Contoh : Memasukkan data-data dari file teks yang berada pada direktori “/home/adi” ke dalam tabel MHS_2. Dimana pemisah antara kolom dalam file teks adalah tab (\t) : LOAD FROM “/home/adi/teks” INTO MHS_2 FILELDS TERMINATED BY ‘\t’; 3. RENAME TABLE Sintaks : RENAME TABLE OldnamaTabel TO NewNamaTabel Contoh : RENAME TABLE MAHASISWA TO MHS MENGGUNAKAN FUNGSI AGGREGATE : 1. COUNT digunakan untuk menghitung jumlah. Menghitung jumlah record mahasiswa dari tabel MAHASISWA SELECT COUNT(*) FROM MAHASISWA SUM digunakan untuk menghitung total dari kolom yang mempunyai tipe data numerik. SELECT SUM(SKS) AS ‘TOTAL SKS’ FROM MATAKULIAH 2. 3. AVG digunakan untuk menghitung rata-rata dari data-data dalam sebuah kolom. SELECT AVG(FINAL) AS ‘FINAL’ FROM Nilai 4. MIN digunakan untuk menghitung nilai minimal dalam sebuah kolom. SELECT MIN(FINAL) FROM Nilai 5. MAX diguankan untuk menghitung nilai maksismum dalam sebuah kolom SELECT MAX(MID) FROM Nilai SUBQUERY Adalah subselect yang dapat digunakan di klausa WHERE dan HAVING dipernyataan select luar untuk menghasilkan tabel akhir. Aturan-aturan untuk membuat subquery, yaitu : 1.Klausa Order By tidak boleh digunakan di subquery, Order By hanya dapat digunakan di pernyataan Select luar. 2.Klausa subquery Select harus berisi satu nama kolom tunggal atau ekspresi kecuali untuk subquery-subquery menggunakan kata kunci EXIST 3.Secara default nama kolom di subquery mengacu ke nama tabel di klausa FROm dari subquery tersebut. 4.Saat subquery adalah salah satu dua operan dilibatkan di pembandingan, subquery harus muncul disisi kanan pembandingan Penggunanaan ANY dan ALL Jika subquery diawali kata kunci ALL, syarat hanya akan bernilai TRUE jika dipenuhi semua nilai yang dihasilkan subquery itu. Jika subquery diawali kata kunci ANY, syaratnya akan bernilai TRUE jika dipenuhi sedikitnya satu nilai yang dihasilkan subquery tersebut. Penggunanaan EXIST DAN NOT EXIST EXIST akan mengirim nilai TRUE jika dan hanya jika terdapat sedikitnya satu baris di tabel hasil yang dikirim oleh subquery dan EXIST mengirim nilai FALSE jika subquery mengirim tabel kosong. Untuk NOT EXIST kebalikan dari EXIST. (Masing-masing dosen membuat contoh untuk subquery) CONTOH SUBQUERY : 1. Coba ambil nilai mid dan final dari mahasiswa yang bernama Astuti. SELECT MID, FINAL FROM NILAI WHERE NIM=( SELECT NIM FROM MAHASISWA WHERE NAMA_MHS=‘Astuti’) 2. Ambil nilai kode matakuliah, mid dan final dari mahasiswa yang tinggal di jakarta. SELECT KD_MK, MID, FINAL FROM NILAI WHERE NIM IN(SELECTNIMFROMMAHASISWAWHERE ALAMAT_MHS = ‘Jakarta’) 3. Ambil nama-nama mahasiswa yang mengikuti ujian. SELECT NAMA FROM MAHASISWA WHERE EXISTS (SELECT NIM FROM NILAI WHERE NILAI.NIM= MAHASISWA.NIM) 4. Ambil nama-nama mahasiswa yang tidak mengikuti ujian. SELECT NAMA FROM MAHASISWA WHERE NOT EXISTS (SELECT NIM FROM NILAI WHERE NILAI.NIM= MAHASISWA.NIM) Aplikasi yang digunakan sebagai contoh adalah phptriad-mysql front Dari Address ketik : http://localhost/phpmyadmin Tampilan password ketik root dan untuk password ketik password Latihan Soal 1. Sistem Basis Data Dibawah ini terdapat perintah dalam DDL (Data Definition Language), Kecuali…. a. Created. Drop b. Alter Tablee. Create View c. Insert Perintah dalam DDL untuk menghapus suatu tabel yang telah terbentuk, adalah… a. Drop Index Table d. Drop Table Index b. Drop Indexe. Delete from table c. Drop Table 2. Latihan Soal Sistem Basis Data 2. Perintah dalam DDL untuk menghapus suatu tabel yang telah terbentuk, adalah… a. Drop Index Tabled. Drop Table Index b. Drop Indexe. Delete from table c. Drop Table 3. Perintah dalam DDL untuk menghapus suatu tabel index yang telah terbentuk, adalah …. a. Drop Tabled. Drop Table Index b. Drop Indexe. Create Index on c. Drop Index on TableName Latihan Soal Sistem Basis Data 3. Perintah dalam DDL untuk menghapus suatu tabel index yang telah terbentuk, adalah …. a. Drop Tabled. Drop Table Index b. Drop Indexe. Create Index on c. Drop Index on TableName 4. Perintah SQL yang digunakan untuk membuat suatu database Perguruan Tinggi adalah a. Create [Perguruan Tinggi] b. Create Database [Perguruan Tinggi] c. Create Tabel [Perguruan Tinggi] d. Use Database [Perguruan Tinggi] e. Create View PerguruanTinggi Latihan Soal Sistem Basis Data 4. Perintah SQL yang digunakan untuk membuat suatu database Perguruan Tinggi adalah a. Create [Perguruan Tinggi] b. Create Database [Perguruan Tinggi] c. Create Tabel [Perguruan Tinggi] d. Use Database [Perguruan Tinggi] e. Create View PerguruanTinggi 5. Yang merupakan clause Data Access pada struktur Query Language adalah a. Recover Tabled. Insert b. Revokee. Update c. Create View Latihan Soal Sistem Basis Data 5. Yang merupakan clause Data Access pada struktur Query Language adalah a. Recover Tabled. Insert b. Revokee. Update c. Create View 1. Dibawah ini terdapat perintah dalam DDL (Data Definition Language), Kecuali…. a. Created. Drop b. Alter Tablee. Create View c. Insert

BAHASA QUERY FORMAL

BAHASA QUERY FORMAL ALJABAR RELATIONAL Adalah kumpulan operasi terhadap relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru OPERATOR YANG DIGUNAKAN A. OPERATOR HIMPUNAN 1. Union atau gabungan ( ∪) Union dari relasi A dan B dinyatakan sebagai A ∪B a b 2. Intersection atau irisan ( ∩) Intersection dari relasi A dan B dinyatakan sebagai A ∩B a b 3. Difference Difference dari relasi A dan B dinyatakan dengan A - B a b 4. Cartesian product Product cartesian dari relasi A dan B dinyatakan dengan A X B contoh : A = { 1,2,3} B = { 5,7 } A X B = { ( 1,5), (1,7), ( 2,5), (2,7), (3,5),(3,7) } B. OPERATOR RELATIONAL 1. Restrict ( ) adalah Pemilihan tupel atau record 2. Project ( ) adalah pemilihan attribute atau field 3. Divide ( ) adalah membagi 4. Join ( ) adalah menggabungkan ALJABAR RELASIONAL Operator pada aljabar relationaldibagi menjadi 2 kelompok : 1. Operator dasar untuk fundamental operational 2. Operator tambahan untuk additional operasional Tabel dibawah ini adalah contoh untuk mengerjakan perintah – perintah Relation Algebra: RELASI : MATA KULIAH KD_MK 207 310 360 545 547 305 544 NAMA_MK LOGIKA & ALGO STRUKTUR DATA SISTEM BASIS DATA IMK APSI PEMR. PASCAL DISAIN GRAFIS 4 3 3 2 4 4 2 SKS NIP 199910486 200109655 200209817 200209818 200109601 200703073 200010490 RELASI : MAHASISWA NIM NAMA_MHS ALAMAT J_KEL 1105090222 HAFIDZ 1105091002 RAFFA 1105095000 NAIA 1104030885 ARIF 1206090501 LENI 1206090582 WAHYUNI 1205097589 ARIS 1106094586 YANI 110709 KD_MK DEPOK DEPOK DEPOK P.LABU KMP. MELAYU TANGERANG DEPOK CILEDUG SALEMBA LAKI-LAKI LAKI-LAKI PEREMPUAN LAKI-LAKI PEREMPUAN PEREMPUAN LAKI-LAKI PEREMPUAN LAKI-LAKI BAMBANG NIM RELASI : REGISTRASI 360 545 547 1105090222 1206090501 1105095000 NIP NAMA_DOS GAJI 199910486 BILLY 200109655 MARDIANA 200209817 INDRIYANI 200209818 SURYANI 200109601 DWINITA 200703073 MALAU 200010490 IRFIANI 3500000 4000000 4500000 4250000 3500000 2750000 3500000 RELASI : DOSEN OPERATOR DASAR a. Selection ( ) Lower Case Omega Operasi selection menyeleksi tupel-tupel pada sebuah relation yang memenuhi predicate/syarat yang sudah ditentukan Contoh : 1. Mencari tuple-tuple dari MAHASISWA yang memiliki jenis kelamin laki-laki, Ekspresi aljabar relational : σ J_KEL=“LAKI-LAKI” (MAHASISWA) 2. Tampilkan data mata kuliah yang memiliki kode 360 atau yang memilki sks 4 σ KD_MK=“306” V SKS=4 (MATAKULIAH) b. Projection ( ) Operator projection beroperasi pada sebuah relation, yaitu membentuk relation baru dengan mengcopy atribute- atribute dan domain-domain dari relation tersebut berdasarkan argumen-argumen pada operator tersebut. Contoh : Tampilkan nama beserta gaji dari dosen nama_dos,gaji (DOSEN) c. Cartesian product ( X ) Operator dengan dua relasi untuk menghasilkan tabel hasil perkalian kartesian. Contoh : Tampilkan nid,nama_d (dari relasi Dosen), nama_mk (dari relasi Matakuliah), thn_akademik,smt,hari,jam_ke,waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester ‘1’. nid, nama_d, nama_mk, thn_akademik,smt, hari,jam_ke, waktu, kelas ( smt=1 ∧Dosen.nid = Mengajar.nid ∧mengajar.kdmk = Matakuliah.kdmk (DosenxMatakuliahxMengajar)) d. Union ( ∪) Operasi untuk menghasilkan gabungan tabel dengan syarat kedua tabel memiliki atribut yang sama yaitu domain atribut ke-i masing-masing tabel harus sama RUS={ X I X E R atau X E S} Contoh : Penggabungan berdasarkan kolom mahasiswa dengan tabel dosen kota dari tabel kota (mahasiswa) ∪kota (Dosen) e. Set diference ( - ) Operasi untuk mendapatkan tabel dis uatu relasi tapi tidak ada di relasi lainnya. R – S = { X I X E R dan X E S } Contoh : Tampilkan nama dari mahasiswa yang tinggal di depok tetapi bukan berjenis kelamin perempuan Query I : tampilkan nama yang tinggal di depok (MAHASISWA)) Query II : tampilkan nama yang berjenis kelamin perempuan =“PEREMPUAN” (MAHASISWA)) Tampilkan query I minus query II : (MAHASISWA))- (MAHASISWA)) OPERATOR TAMBAHAN 1. SET INTERSECTION ( ∩) Operasi untuk menghasilkan irisan dua tabel dengan syarat kedua tabel memiliki atribut yang sama, domain atribut ke-i kedua tabel tersebut sama. 2. THETA JOIN Operasi yang menggabungkan operasi cartesian product dengan operasi selection dengan suatu kriteria. 3. NATURAL JOIN Operasi menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama 4. DIVISION Merupakan operasi pembagian atas tuple-tuple dari 2 relation Contoh: B Sno S1 S1 S1 S1 S2 S2 A Pno P1 P2 P3 P4 P1 P2 Pno P2 A/B Sno S1 S2 Analisa Perpustakaan Smart • Diharapkandosenuntukmembuat tambahankasusterbarudari PerpustakaanSmartyang diimplementasikan dengan solusi Query bahasa Formal.

TEHNIK NORMALISASI LANJUTAN

LANGKAH - LANGKAH PEMBENTUKAN NORMALISASI: BENTUK TIDAK NORMAL UNNORMALIZED MENGHILANGKAN ELEMEN DATA BERULANG FIRST NORMAL FORM (INF) MENGHILANGKAN KETERGANTUNGAN PARTIAL SECOND NORMAL FORM (2NF) MENGHILANGKAN KETERGANTUNGAN TRANSITIF THIRD NORMAL FORM (3NF) Menghilangkan kunci kandidat yg bkn merupakan determinan BOYCE-CODD NORMAL FORM (BCNF) FOURTH NORMAL FORM (4NF) Menghilangkan ketergantungan multi value yg bkn merup. Ketergantungan fungsional Menghilangkan ketergantungan join yg bkn merupakan kunci kandidat FIFTH NORMAL FORM (5NF) 1. Bentuk tidak normal (Unnormalized Form): Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti suatu format tertentu. Dapat saja data tidak lengkap atau terduplikasi. Data dikumpulkan apa adanya sesuai dengan saat menginput. Contoh data : no_siswa Nama PA kelas1 kelas2 kelas3 22890100 22890101 Rafi Thoriq Rachmat Adi 1234 1234 1543 1775 1543 Ket : PA = Penasehat Akademik Siswa yg punya nomor siswa, nama, dan PA mengikuti 3 mata pelajaran/kelas. Disini ada perulangan kelas 3 kali ini bukan bentuk 1 NF 2. Bentuk Normal Ke Satu (1 NF/First Normal Form) Suatu relasi 1NF jika dan hanya jika sifat dari setiap relasi atributnya bersifat atomik. Atom adalah zat terkecil yang masih memiliki sifat induknya, bila dipecah lagi maka ia tidak memiliki sifat induknya. Ciri-ciri 1 NF : •Setiap data dibentuk dalam flat file, data dibentuk dalam satu record demi satu record nilai dari field berupa “atomic value” •Tidak ada set atribute yang berulang atau bernilai ganda •Tiap field hanya satu pengertian no_siswa Nama Pa kode_kelas 22890100 22890100 22890101 22890101 22890101 Rafi Rafi Thoriq Thoriq Thoriq Rachmat Rachmat Adi Adi Adi 1234 1543 1234 1775 1543 3. Bentuk Normal Ke Dua (2 NF /Second Normal Form) Bentuk normal kedua mempunyai syarat yaitu bentuk data telah memenuhi kriteria bentuk normal kesatu. Atribute bukan kunci haruslah bergantung secara fungsi pada kunci utama/primary key. Sehingga untuk membentuk normal kedua haruslah sudah ditentukan kunci-kunci field. Kunci field haruslah unik dan dapat mewakili atribute lain yg menjadi anggotanya. Misal : Dari contoh relasi Siswa pada I NF terlihat bahwa kunci utama/primary key adalah nomor siswa. Nama siswa dan PA bergantung fungsi pada no_siswa, tetapi kode_kelas bukanlah fungsi dari siswa, maka file siswa dipecah menjadi 2 relasi Relasi Siswa No-siswa 22890100 22890101 Nama Rafi Thoriq Pa Rachmat Adi dan Relasi ambil_kelas No-siswa 22890100 22890100 22890101 22890101 22890101 Kode_kelas 1234 1543 1234 1775 1543 4. Bentuk Normal Ke Tiga (3 NF / Third Normal Form) Untuk menjadi bentuk normal ketiga maka relasi haruslah dalam bentuk normal kedua dan semua atribute bukan primer tidak punya hubungan yang transitif. Dengan kata lain, setiap atribute bukan kunci haruslah bergantung hanya pada primary key dan pada primary key secara menyeluruh. Contoh pada bentuk normal kedua di atas termasuk juga bentuk normal ke tiga karena seluruh atribute yang ada disitu bergantung penuh pada kunci primernya 5. Boyce-Codd Normal Form ( BCNF) BCNF mempunyai paksaan yg lebih kuat dari bentuk normal ketiga. Untuk menjadi BCNF, relasi harus dalam bentuk normal kesatu dan setiap atribute harus bergantung fungsi pada atribute superkey Pada contoh di bawah ini terdapat relasi seminar dengan ketentuan sbb : a. kunci primer adalah no_siswa+seminar. b. Siswa boleh mengambil satu atau dua seminar. c. Setiap siswa dibimbing oleh salah satu diantara 2 instruktur seminar tsb. d. Setiap instruktur boleh hanya mengambil satu seminar saja. Pada contoh ini no_siswa dan seminar menunjuk seorang instruktur : Relasi seminar no_siswa Seminar Instruktur 22890100 22890101 22890102 22890101 22890109 2281 2281 2291 2291 2291 Si doel Pak tile Mandra Basuki Basuki Bentuk relasi seminar adalah bentuk normal ketiga, tetapi tidak BCNF karena nomor seminar masih bergantung fungsi pada instruktur, jika setiap instruktur dapat mengajar hanya pada satu seminar. Seminar bergantung fungsi pada satu atribute bukan superkey seperti yg disyaratkan oleh BCNF. Maka relasi seminar haruslah dipecah menjadi dua yaitu : Relasi pengajar Instruktur Seminar no_siswa Instruktur Si doel Pak tile Mandra Basuki 2281 2281 2291 2291 22890100 22890101 22890102 22890101 22890109 Si doel Pak tile Mandra Basuki Basuki 6. Bentuk Normal Ke Empat (4 NF) Relasi R adalah bentuk 4 NF jika dan hanya jika relasi tersebutjugatermasukBCNFdansemua ketergantungan multivalue adalah juga ketergantungan fungsional 7. Bentuk Normal Ke Lima (5 NF) Disebut juga PJNF (Projection Join Normal Form) dari 4 NF dilakukan dengan menghilangkan ketergantungan join yang bukan merupakan kunci kandidat. KASUS PENERAPAN NORMALISASI PT. SANTA PURI Jalan senopati 11 yogyakarta Kode Suplier Nama Suplier Kode A01 A02 FAKTUR PEMBELIAN BARANG : G01 : Gobel Nustra Nama Barang Qty 10.0 10.0 Tanggal : 05/09/2000 Nomor : 998 Harga 135,000 200,000 Total Faktur Jumlah 1,350,000 2,000,000 3,350,000 AC SPLIT ½ PK AC SPLIT 1 PK Jatuh tempo faktur : 09/09/2000 1.Step 1 bentuk unnormalized no fac kode supp nama supp kode brg nama barang tanggal jatuh tempo qty harga jumlah Total 779 998 S02 G01 Hitachi Gobel N R02 A01 A02 RICE COOKER AC SPLIT ½ PK AC SPLIT 1 PK 02/09/00 05/09/00 08/09/00 09/09/00 10 10 10 15000 135000 200000 150000 1350000 2000000 150000 3350000 2. Step 2 bentuk 1 NF nofac 779 998 998 kode supp S02 G01 G01 nama supp Hitachi Gobel N Gobel N Kode brg R02 A01 A02 nama barang RICE COOKER AC SPLIT ½ PK AC SPLIT 1 PK tanggal 02/09/00 05/09/00 05/09/00 jatuh tempo 08/09/00 09/09/00 09/09/00 qty 10 10 10 harga 15000 135000 200000 jumlah 150000 1350000 2000000 Total 150000 3350000 3350000 3. Step 3 bentuk 2 NF Kode Supplier * Nama Supplier Kode barang * Nama barang No Nota * Tanggal Tempo Qty harga Total KodeSupplier ** KodeBarang ** 4. Step IV Bentuk 3 NF Tabel Supplier Kode Supplier * Nama Supplier Tabel Barang Kode barang * Nama barang Tabel Nota No Nota * Tanggal Tempo Total kode Supplier ** Keterangan: * Kunci primer dari tabel. ** Kunci tame/penghubung dari tabel thp induknya Tabel Transaksi Brg No Nota ** Kode Barang ** Qty Harga Latihan Buatlah bentuk Normalisasi dari dokumen berikut ini : Kartu pengobatan masyarakat No Pasien : 1234/PO/IV/99 Data Pasien dari, NOPEN : 1000019999 Alamat Pasien, Jalan : Kebon Jeruk No. 27 Kecamatan : Kemanggisan Kode Pos :11530 NoRM RM001 RM002 RM003 RM004 Tgl periksa 1/5/99 4/7/99 4/4/99 7/8/99 Kode Dokter D01 D01 D02 D04 Nama Dokter Dr Zurmaini Dr Zurmaini Dr Harjono Dr Mahendra KodeSakit S11 S12 S12 S12 Tanggal Pendaftaran : 1 Mei 1999 Nama Pasien : Bachtiar Jose Kelurahan : Palmerah Wilayah : Jakarta Barat Telepon : 5350999 Diskripsi sakit Tropicana Ulcer Triombis Ulcer Triombis Ulcer Triombis Kode obat B01 B02 B01 B03 B04 B01 B02 B03 Nama obat Sulfa Anymiem Sulfa Supralin Adrenalin Sulfa Anymiem Supralin Dosis 3dd1 4dd1 3dd2 3dd1 4dd2 3dd2 4dd2 3dd1 Penerima Pasien Ttd ( Udin ) Buatlah bentuk un normal form, 1NF, 2NF dan 3NF