Copyright © My Blog
Design by Dzignine
Minggu, 23 November 2014

Tugas Praktikum DBD Modul 8

LAPORAN PRAKTIKUM
FUNGSI,PL/PGSQL DAN TRIGGER

Dosen Pengampu: Aziz Musthofa, S.Kom
logoUIN
Oleh :
Badruz Zamanil Charis
13650120
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UIN MAULANA MALIK IBRAHIM MALANG
2014

MATERI

BENTUK PL/SQL PADA MySQL
PL/SQL MySQL adalah bahasa prosedural yang digunakan untuk mengoptimalkan pembuatanaplikasi database yang menggunakan database MySQL. Kata PL pada PL/SQL merupakan singkatan dari Procedural Language. Dalam PL/SQL dapat digunakan perintah untuk memanipulasi data yang ada dalam database MySQL. PL/SQL MySQL membentuk pemrograman terstruktur dalam memproses data. Pada PL/SQL ditambahkan beberapa hal yang dikenal pada dunia pemrograman, seperti variabel, loop, pemrosesan kondisi, operasi cursor, modularisasai, dan hal-hal lainnya. Semua tambahan itu bertujuan untuk meningkatkan kinerja operasi-operasi SQL pada database MySQL sehingga manfaat dari kehandalannya menjadi maksimal.

Struktur PL/SQL MySQL
         PL/SQL dapat dibagi menjadi tiga, yaitu: prosedur, fungsi, dan trigger. Prosedur dan fungsi bekerja berdasarkan eksekusi langsung dari user/program, sedangkan trigger akan bekerja secara otomatis apabila terjadi aktivitas insert, update atau delete data. Struktur dari bahasa pemrograman PL/SQL MySQL.

Trigger
Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Database triger merupakan sebuah program unit yang disimpan didalam database dan hanya dapat dieksekusi (fired) secara implisit oleh server (oracle server) menurut event yang terjadi pada object acuan dari trigger tersebut.
Triger dapat berisi SQL, PL/SQL, dan Java statement. Selain itu juga dapat memanggil method yang ditulis menggunakan bahasa C.

Kegunaannya Triger :
1.Menentukan nilai kolom – kolom tertentu secara otomatis
2.Menghindarkan transaksi yang tidak valid
3.Membuat autorisasi sekuriti yang kompleks
4.Membuat bussines rule yang kompleks

Event eksekusi trigger :
1.DML event (INSERT, UPDATE & DELETE) statement.
2.DDL event (CREATE, ALTER & DROP) statement
3.Database event (Startup/Shutdown, Error Message & User event (Logon/Logoff))

Tipe dari trigger adalah :
· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi
· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.
Trigger perlu dibuat pada saat :
· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :

· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.

HASIL PERCOBAAN

1. Buatlah fungsi konversi suhu dari Fahrenheit ke derajat celcius dengan rumus konversi 
Kemudian jalankan hasilnya dengan menSELECT fungsi tersebut !


2. Buatlah fungsi untuk mencari alamat mahasiswa dari tabel mahasiswa berdasarkan nama
mahasiswa. Kemudian jalankan dengan perintah SELECT !


3. Buatlah fungsi untuk menghitung nilai dengan menggunakan bahasa pl/sql !
Nilai > 100 atau Nilai<0 Nilai Salah
Nilai = 90 Nilai A
70 = Nilai < 90 Nilai B
60 = Nilai < 70 Nilai C
50 = Nilai < 60 Nilai D
0 = Nilai < 50 Nilai E



4. Buatlah fungsi menggunakan pl/pgsql untuk mencari bilangan ganjil atau genap dari
bilangan yang diinputkan. Kemudian jalankan dengan perintah SELECT !



5. Tambahkan kolom modifikasi pada tabel mahasiswa. Dimana setiap ada insert atau
update maka tanggal pada kolom modifikasi akan menunjukkan tanggal perubahan
tersebut dilakukan.







 Perbedaan SQL dan PL/SQL
  • SQL adalah bahasa deklaratif untuk database yg sudah distandarkan secara internasional (ANSI dan ISO), jadi seharusnya semua database yg menggunakan SQL standar akan memiliki statement/syntax yg sama, baik di Oracle, MySQL atau database lainnya. Tetapi beberapa database memang memiliki statement/syntax proprietary yg hanya dikenali di database itu sendiri dan ini tentu saja bukan standar SQL.  
  • Sementara PL/SQL adalah ekstensi dari SQL dengan menambahkan fungsi bahasa prosedural. Berbeda dengan SQL yg hanya mementingkan bagaimana mendapatkan hasil, dengan PL/SQL juga akan diketahui bagaimana proses untuk mendapatkan hasil tsb. Karena PL/SQL merupakan bahasa prosedural, maka statement/syntax yg digunakan  sangat tergantung dari jenis bahasa yg diadopsi.

Maksud
Pada modul ini akan membahas tentang fungsi, Selain hal itu akan dibahas juga mengenai pl/pgsql dan triger

Tujuan
1.memahami dan menggunakan fungsi dalam database PostgreSQL
2.memahami dasar penggunaan PL/PGSQL dan TRIGER dan macam-macam nya

Manfaat Pembaca
1.Lebih Memahami tentang PL/ SQL,
2.Lebih Memahami tentang Trigger,
3.Lebih Cermat dalam membandingkan PostgreSql dengan MySql,
4.Lebih cepat mendapat informasi yang relevan,
5.Dapat mengambil pemahaman yang lebih dari sebelumnya. 

Saran
Diperlukan pembelajaran lebih lanjut mengenai PL/PGSQL dan TRIGER ini, serta diperlukan latihan dalam mencoba latihan soal yang lain agar praktikan lebih mahir dalam menggunakan kedua DBMS tersebut.Dalam proses TRIGER memerlukan ketelitian jika tidak maka mengulangi perintah dari awal lagi karena pada perintah TRIGER biasanya panjang dan rumit berbeda dengan PL/PGSQL yang cukup mudah diingat daripada TRIGER.

 Daftar Pustaka
http://abdurrahmanfattah.blogspot.com/2011/09/tugas-materi-stored-procedures-function.html
http://www.slideshare.net/haryjava/mengenal-pl-sql
http://www.mysqltutorial.org

Buku : Yakub, 2008, “ Sistem Basis Data : Tutorial Konsep “; Graha Ilmu: Yogyakarta
            Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi
            Sutanta Edhy, 2011, Basis Data Dalam Tinjauan Konseptual. Yogyakarta: Andi
Jumat, 14 November 2014

Tugas Praktikum DBD Modul 7

LAPORAN PRAKTIKUM
DESAIN BASIS DATA
SUBQUERY DAN INDEKS

Dosen Pengampu: Aziz Musthofa, S.Kom
 logoUIN
Oleh :
Badruz Zamanil Charis
13650120
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UIN MAULANA MALIK IBRAHIM MALANG
2014

Sub Query
Subquery adalah perintah SELECT yang berada di dalam perintah SELECT yang lain.MySQL yang mendukung konsep subquery mulai versi 4.1.x Contoh subquery adalah :
- Memungkinkan membuat query yang terstruktur, sehingga memudahkan pemisahan masing-masing bagian dari perintah/query yang dibuat.
- Sebagai alternatif menggantikan query yang memerlukan JOIN dan UNION yang kompleks.
- Query menjadi lebih mudah dibaca dan dikoreksi, memenuhi kaidah SQL “Structured Query Language.”
Beberapa batasan dalam membuat subquery :
Sintaks subquery secara umum adalah :
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2)
Pada contoh tersebut, SELECT * FROM t1 … adalah query utama/outer query dan(SELECT column1 FROM t2) adalah subquery. Subquery bersifat nested di dalam query utama. Subquery dapat dibuat secara bertingkat sampai 32 tingkat. Subquery harus dituliskan didalam tanda kurung.
Beberapa keuntungan menggunakan subquery adalah :
Sebuah subquery memberikan beberapa kemungkinan hasil, diantaranya
- Sebuah nilai tunggal (scalar) -> scalar subquery
- Sebuah baris -> row subquery
- Sebuah kolom ataupun -> coloumns subquery
- sebuah tabel. -> table subquery
Masing-masing tipe subquery (berdasarkan nilai yang dihasilkan) tersebut, dapat digunakan pada konteks tertentu yang sesuai.
Sub query dapat berupa salah satu dari : SELECTINSERTUPDATEDELETESET, orDO.
Subquery dapat mengandung opsi-opsi yang mendukung SELECT misalnya DISTINCT,GROUP BYORDER BYLIMIT, joins, index hints, UNION, komentar, fungsi, dll.
SELECT kolom1 FROM Tabel WHERE kolom2 [Operator Pembandingan] (SELECT kolom1 FROM Tabel WHERE [Condition])
[Operator Pembandingan] dapat berupa =, >, <, >=, <= Ataupun LIKE, ANY, SOME, ALL, IN, NOT IN dll
Contoh :
1.Sub Query Select

SELECT id, nama_ruang, kapasitas_ruang
FROM ruangWHERE kapasitas_ruang = (SELECT MIN(kapasitas_ruang) FROM ruang);
FROM kelas
JOIN ruang ON kelas.id_ruang = ruang.id
WHERE ruang.nama_ruang IN (SELECT ruang.nama_ruang FROM ruang WHERE ruang.nama_ruang like ‘C%’)
GROUP BY ruang.nama_ruang;
guru.nip AS nip,
concat(guru.gelar_depan,’. ‘,guru.nama,’, ‘,guru.gelar_belakang) AS nama_guru,
mata_pelajaran.nama_mapel AS mapel,
kelas.nama_kelas AS kelas,
ruang.nama_ruang AS ruang,
ruang.kapasitas_ruang AS kapasitas_ruang
FROM guru
LEFT JOIN kelas ON guru.nip = kelas.nip_guru
LEFT JOIN mata_pelajaran ON kelas.id_mapel = mata_pelajaran.id
LEFT JOIN ruang ON kelas.id_ruang = ruang.id
WHERE
ruang.kapasitas_ruang IN (SELECT MAX(ruang.kapasitas_ruang)/2 FROM ruang);
(nama_kelas,hari,id_mapel,nip_guru,jam_mulai,jam_selesai,id_ruang)
VALUES
(
‘A’,
‘Kamis’,
(SELECT id FROM mata_pelajaran WHERE nama_mapel = ‘Biologi’),
(SELECT nip FROM guru WHERE nama LIKE ‘%Akhsan’),
’08:00:00′,
’10:00:00′,
(SELECT id FROM ruang WHERE nama_ruang = ‘C4′)
);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan IN (subquery);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ALL (subquery);
  • SELECT namakolom FROM namatabel WHERE kondisi opeatorperbandingan ANY (subquery);
  • SELECT namakolom FROM namatabel WHERE EXIST / NOT EXIST (subquery);
2. Ketika sering menggunakan ORDER BY pada bagian query.
3. Ketika memiliki banyak perbedaan nilai.
4. Ketika sering menggunakan JOIN pada bagian query.
2. UNIQUE
3. PRIMARY KEY.
4. FULLTEXT index
  • CREATE INDEX namaindex ON namatabel (nama kolom);
  • CREATE UNIQUE INDEX namaindex ON namatabel (nama kolom);
  • DROP INDEX namaindex;
Unique berfungsi untuk menjaga agar tidak terjadinya duplikasi nilai (kesamaan data) dalam sebuah kolom, hal ini dapat ditangani dengan membuat sebuah indeks unik atau fungsi unik sendiri pada kolom yang dimaksud. Unique ini sering digunakan dalam pembuatan bukan primary key namun membutuhkan cek dupikasi agar tidak ada yang sama, karena dalam primary key sudah otomatis mempunyai sifat unik. Berikut Struktur SQL saat pembuatan tabel baru :
  • CREATE TABLE namatabel (namakolom tipedata unique);
  • ALTER TABLE nama_tabel ADD UNIQUE (nama_kolom);
  • ALTER TABLE nama_table DROP CONSTRAINT NAMA_CONSTRAIN
- LTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri (Left) String.
- TRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kiri, kanan, maupun tengah String
———————————————————————————-
SELECT kelas.nama_kelas AS kelas, ruang.nama_ruang, ruang.kapasitas_ruang
———————————————————————————-
SELECT
2.Sub Query Indeks
INSERT INTO kelas
3.Sub query dengan IN
Jika operator ‘=’ hanya digunakan untuk hasil yang tepat satu, maka jika ingin menampilkan yang memiliki hasil lebih dari satu maka menggunakan perintah IN.
4.Sub query dengan ALL
Command ALL diikuti dengan operator perbandingan digunakan memiliki arti menampilkan nilai jika perbandingan bernilai benar untuk semua data. Operator perbandingan tersebut berupa ( <, >, =, != ). Berikut adalah query dasar dari sub query all
5.Sub query dengan ANY
Command ANY diikuti dengan operator perbandingan memiliki arti menampilkan nilai yang sesuai dengan apapun yang dihasilkan oleh sub query. Contoh query dasar dari sub query ANY
6.Sub query dengan EXISTS
Perintah EXISTS disini berguna untuk mengartur penampilan hasil query, Query Utama akan dijalankan jika Sub Query bernilai TRUE (ada hasilnya) jika hasilnya kosong maka Query utama tidak akan dijalankan. Lawan dari statement EXISTS adalah NOT EXISTS
INDEKS
INDEKS adalah suatu bagian yang special dari system database yang digunakan untuk peningkatan kemampuan menyeluruh dari proses yang ada. MySQL mengijinkan antara 16 sampai 64 indexes untuk setiap table, akan tetapi ini tergantung storage engine yang digunakan.
Setiap indeks dapat diletakan di field (kolom) mana saja, mulai dari field 1 sampai field 15. Walaupun penggunaan beberapa field (multicolumn) index tidak terlihat nyata, akan tetapi penggunaan ini akan memberikan kemudahan untuk kemampuan pencarian pada sebuah atau banyak field (column).
Pada lain hal, ada sebuah hal yang menjadikan kelemahan dari penggunaan indeks. Dimana dengan index kita dapat meningkatkan kecepatan dalam membaca data dari database, tetapi akan membuat lambat proses perubahan data dalam database, karena perubahan akan berpengaruh pada data yang di indeks. Anda akan mendapat hasil yang normal ketika hanya menampilkan data dari database jika dibandingkan anda melakukan proses tambah (insert) data atau ubah (update) data yang sudah ada.
Pengguna indeks, baik digunakan pada field (column) :
1. Ketika sering menggunakan WHERE pada bagian query.
MySQL memiliki beberapa tipe dari Indeks yang berbeda, yaitu :
1. INDEX.
Contoh Penggunaan Macam Indeks
1. Indentifikasi suatu field menggunakan PRIMARY KEY
2. Indentifikasi suatu field harus UNIQUE
UNIQUE tidak dapat digunakan dalam jumlah banyak. Sebagian besar digunakan seperti nilai tanggal, angka, nama, kota, kode pos yang berulang, terutama sekali pada table dengan ribuan baris (record). Tetapi semua tergantung pada aplikasi yang anda buat, apakah anda hanya menggunakan sekali-kali pada field yang benar-benar harus unik, seperti alamat email, username dari sistem aplikasi registrasi (sistem login). Anda tidak dapat mendefinisikan sekaligus PRIMARY KEY dan UNIQUE dalam sebuah field, karena PRIMARY KEY sudah didesain harus mengikut aturan unik.
3. Identifikasi suatu field akan mendapatkan keuntungan dari sebuah INDEX
Pada rekomendasi ada adalah ketika index akan membantu dan berfikir tentang apa informasi akan disajikan. Jika anda memerlukan untuk melihat daftar dari invoices berdasarkan tanggal atau total jumlah order, maka INDEX akan membuat logical indexes. Jika sebuah table registrasi/login akan menggunakan kombinasi pada username dan password untuk verifikasi suatu proses login, maka akan dibuat index. Anda juga membuat index pada field foreign key anda.
Disini akan akan diberikan SQL bebrapa tipe dari indeks berupa penggunaan INDEX dan UNIQUE INDEKS Berikut struktur SQL untuk membuat indeks pada suatu kolom
Sedangkan Unique indexmirip dengan indeks tetapi lebih digunakan untuk mencegah duplikasi nilai yang terdapat dalam tabel. Jadi dengan adanya unique index berarti pembaca tidak dapat meng-insert nilai yang sama dalam sebuah tabel. Berikut struktur SQL nya :
Untuk menghapus index berikut strukturnya :

 KOLOM UNIK
Ketika tabel sudah ada kita bisa menggunakan ALTER TABLE. Berikut Struktur SQL
Untuk menghapus unique berikut caranya :

PENGGUNAAN TRIM
Menghilangkan beberapa karakter di MySQL terkadang sangat kita perlukan. Terutama dalam mengupdate data dalam bentuk karakter/teks yang bertipe varchar, text dan sebangsanya. Contoh simplenya misalnya menghilangkan tanda tertentu seperti menghilangkan tanda koma di belakang kata “Rabu” pada ” Senin,Selasa,Rabu,”. Jika ada masalah seperti ini, kita dapat membersihkannya dengan menggunakan fungsi TRIM. Fungsi TRIM dibagi menjadi 3, yaitu TRIM, LTRIM dan RTRIM.  Ketiga fungsi ini memiliki bentuk penggunaan sebagai berikut :
- RTRIM : digunakan untuk membersihkan spasi kosong yang ada di bagian kanan (Right) String.


PERCOBAAN MENGGUNAKAN MYSQL

1. Tampilkan nama fakultas dan jumlah mahasiswa yang mampunyai ketentuan nama fakultas yang dimunculkan dengan jumlah mahasiswanya terkecil!

2. Tampilkan nama mahasiswa, nama fakultas, alamat dengan syarat nama fakultas sama dengan edi dan alamatnya tidak sama dengan luki!

3. Buatlah index di tabel mahasiswa(alamat). Kemudian buat lagi index yang bersifat unik pada tabel fakultas(fak_nama) kemudian amati perbedaannya ketika memasukkan data yang sama!

4. Buat kolom nama di mahasiswa menjadi unik dan inputkan 2 data yang sama. Kemudian amati perbedaannya !

5. Pindahkan data dari tabel mahasiswa, fakultas ambil kolom nim, nama mahasiswa, alamat, nama fakultas ke tabel baru yang dinamai „tabel identitas‟.

6. Buatlah contoh penggunaan check pada sub bab pembahasan CHECK. Kemudian masukkan beberapa data baik yang sesuai dengan criteria check maupun yang bukan dan amati perbedaannya.

7. Inputkan data di tabel mahasiswa dimana pada kolom nama sebelum inputkan 
karakter dahulukan dengan spasi dan di akhiri dengan tanda “+” seperti berikut : “ andi cahyono++++”. kemudian munculkan seluruh data dan hilangkan spasi didepan!


8. Munculkan data mahasiswa dengan hilangkan karakter “+” di akhir data dan karakter “a” di awal kata pada kolom nama!


Perbandingan antaa PostgreSQL dengan MySQL


    1. Perbedaan PostgreSQL dengan MYsql pada Penggunakan trim Pada penggunaan query trim, trim yang menggunakan spasi pada kolom yang akan di jalankan tidak berpengaruh pada postgreSQL. tetapi pada MySQL, jika kita menyelipkan spasi antara perintah trim dengan kolom yang akan di eksekusi dengan perintah trim, maka terjadi keslahan. karena spasi trim akan diartikan sebagai fungsi. penggunaan trim tidak boleh dipisahkan dengan nama kolom yang akan dieksekusi.
    2. Memindah data pada tabel ke sebuah tabel yang lain.
      1. PostgreSQL : SELECT nama_kolom INTO tabel_baru from tabel_asal;
        mySQL : CREATE tabel_baru SELECT nama_kolom from nama_tabel;

      2. Perbedaan Pada nomor lima dimana postgre hanya dengan perintah select dapat menyalin informasi yang ada pada tabel satu ke tabel yang lain sedangkan pada mysql harus membuat temporary table terlebih dahulu 

        Kesimpulan

        •  Select into digunakan untuk menduplikat tabel
        • SQL subquery adalah query dalam query yang digunakan untuk menghapus baris dari satu tabel berdasarkan baris tabel lain, menyelesaikan pesoaln dimana terdapat suatu nilai yang tidak diketahui
        • indeks digunakan untuk meng-effisienkan pencarian data
        • kolom unique, digunakan agar data yang diinputkan tidak boleh sama dalam satu kolom
        • check berfungsi untuk melakukan pembatasan nilai masukan dalam sebuah kolom
        • trim digunakan untuk menghapus spasi yang tidak diperlukan
        • Sub Query merupakan query yang digunakan untuk mempermudah dalam mengolah sebuah database. Yang mana memiliki konsisi tertentu dengan cara memberikan perintah SELECT di dalam SELECT ini yang dinamakan query

        Manfaat dan Tujuan

        Semoga ini bermanfaat bagi pembaca. Dan semoga postingan kali ini dapat membantu pembaca dalam menyelesaikan masalah yang berhubungan dengan subquery dan indeks dan bertujuan untuk memahami antara PostgreSQL dengan MySQL pada materi Sub Query dan Indeks.

        Saran


        Diperlukan pembelajaran lebih lanjut mengenai subquery dan indeks ini, serta diperlukan latihan dalam mencoba latihan soal yang lain agar praktikan lebih mahir dalam menggunakan kedua DBMS tersebut.Dalam pengguaan query  juga harus melihat macam-macam query yang variatif atau yang tidak.

        Daftar Pustaka

        http://irpantips4u.blogspot.com
        http://www.webtechniques.com

        codeoke.blogspot.com/2012/12/sub-query-mysql.html

        http://risnotes.com/2011/12/subqueries/ 

        Buku : Yakub, 2008, “ Sistem Basis Data : Tutorial Konsep “; Graha Ilmu: Yogyakarta
                     Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi


        Senin, 03 November 2014

        Tugas Praktikum DBD Modul 6

        LAPORAN PRAKTIKUM
        DESAIN BASIS DATA
        NORMALISASI

        Dosen Pengampu: Aziz Musthofa, S.Kom
         logoUIN
        Oleh :
        Badruz Zamanil Charis
        13650120

        JURUSAN TEKNIK INFORMATIKA
        FAKULTAS SAINS DAN TEKNOLOGI
        UIN MAULANA MALIK IBRAHIM MALANG
        2014

        Maksud
        1. Memahami pengertian dan tujuan dari Normalisasi.
        2. Memahami langkah-langkah dalam Normalisasi

        Tujuan
        1. Memahami Normalisasi sebagai teknik analisis database. 
                    2. Memahami Langkah-Langkah dalam Normalisasi

         Landasan Teori
                Perancangan basis data menghasilkan sekumpulan relasi yang saling berkerelasian dalam lingkup sebuah sistem. Untuk memenuhi batasan dalam definisi basis data maka setiap rancangan relasi perlu diuji untuk menentukan apakah relasi tersebut telah optimal. Pengujian dilakukan berdasarkan kriteria tertentu. Jika relasi belum optimal maka perlu dilakukan proses normalisasi. Perwujudan normalisasi adalah dekomposisi relasi menjadi relasi-relasi baru yang lebih sederhana.
                    Normalisasi diartikan sebagai suatu teknik yang menstrukturkan/mendekomposisikan data dalamm cara-cara tertentu untuk mencegah timbulnya permasalahan pengolahan data dalam basis data. Permasalahan yang dimaksud adalah berkaitan dengan penyimpangan-penyimpangan(anomalies) yang terjadi akibat adanya kerangkapan data dalam relasi dan in-efisiensi pengolahan (martin.1975).
                    Proses Normalisasi menghasilkan relasi yang optimal, yaitu :
        1. Memiliki struktur record yang konsisten secara logic;
        2. Memiliki struktur record yang mudah untuk dimengerti;
        3. Memiliki struktur record yang sederhana dalam pemeliharaan;
        4. Memiliki struktur record yang mudah ditampilkan kembali untuk memenuhi kebutuhkan pengguna;
        5. Minimalisasi kerangkapan data guna meningkatkan kinerja sistem.

        Normalilasi adalah teknik perancangan yang banyak digunakan sebagai pemandu dalam perancangan basis data relasional. Teori normalisasi didasarkan pada konsep bentuk normal. Sebuah table relasional diakatan pada bentuk normal tertentu jika table memenuhi himpunan batasan tertentu.

        Normalisasi
        Pada proses normalisasi terhadap tabel pada database dapat dilakukan dengan tiga tahap normalisasi antara lain :

        1.Bentuk tidak normal (Unnormalized Form) 
        Kondisi Relasi tidak normal (unnormalized) adalah kondisi data apa adanya, tidak mengikuti suatu format tertentu termasuk ketidak lengkapan ataupun redundansi
        Bentuk ini merupakan kumpulan data yang akan direkam, tidak ada keharusan mengikuti format tertentu, dapat saja data tidak lengkap atau terduplikasi. Data di kumpulkan apa adanya sesuai dengan saat menginput. Arti lain bentuk yang tidak normal di maksudkan suatu kumpulan data yang akan diolah yang diperoleh dari format-format yang beraneka ragam, masih terdapat duplikasi, bisa saja tidak sempurna atau tidak lengkap, dan sesuai fakta lapangan.
        2. Bentuk Normal ke Satu(1NF)
        Syarat :
        a. Tidak ada set atribut yang berulang atau bernilai ganda.
        b. Telah ditentukannya primary key untuk tabel atau relasi.
        c. Tiap atribut hanya memiliki satu pengertian.
        d. Tiap atribut yang dapat memiiki banyak nilai sebenarnya menggambarkan entitas atau relasi yang terpisah.

        3. Bentuk Normal ke Dua(2NF)
        Syarat :
        a. Bentuk data telah memenuhi kriteria bentuk normal ke satu.
        b. Atribut bukan kunci(non-key attribute) haruslah memiliki ketergantungan fungsional sepenuhnya pada primary key

        4. Bentuk Normal ke Tiga(3NF)
        Syarat :
        a. Bentuk data telah memenuhi kriteria bentuk normal ke dua.
        b. Atribut bukan kunci(non-key attribute) tidak boleh memiliki ketergantungan fungsional terhadap atribut bukan kunci lainnya.            Seluruh atribut bukan kunci pada suatu  relasi hanya memiliki ketergantungan fungsional terhadap primary key di relasi itu saja.

        Hasil Praktikum

        SOAL 1



        1. Tahap Unnormalization Form

        2. Tahap First Normal Form (1NF)

        3. Tahap Second Normal Form (2NF)

        4. Tahap Third Normal Form (3NF)



        SOAL 2


        1. Tahap Unnormalization Form

        2. Tahap First Normal Form (1NF)


        3. Tahap Second Normal Form (2NF)


        4. Tahap Third Normal Form (3NF)


        Kritik dan Saran
        Pada modul ini  membahas sampai 3NF. Padahal diperlukan juga contoh untuk 4NF dan 5NF. Modul juga tidak membahas tentang BCNF. Mahasiswa juga perlu memahami anomali anomali yang tetap ada walaupun sudah dilakukan normalisasi hingga 3NF.Selain itu ada materi lanjutan dari normalisasi yaitu denormalisasi.

        KESIMPULAN 




        ·      Normalisasi adalah proses penormalan data yang disebabkan oleh adanya redudansi data dan multivalue data
        ·      Normalisasi data ada 5 bentuk yaitu, 1 NF, 2 NF, 3 NF, BCNF, 4 NF dan 5 NF
        ·      Normalisasi  memiliki banyak langkah dan salah ssatu utamanya yaitu unNormalisasi data, karena unNormalisasi data membuat langkah 1 NF lebih mudah
        ·      3 jenis Anomalisasi yaitu: Delete Anomal, Insert Anomal dan Update


        MANFAAT PEMBACA 




        ·      Memahami apa itu Normalisasi data pada database
        ·      Memahami langkah-langkah Normalisasi data pada database
        ·      Memahami istilah-istilah penting pada Topik Normalisasi
        ·      Memmahami percabangan field ketergantungan
        ·      Memahami ERD



        Daftar Pustaka


        Buku :
        Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi
        Sutanta Edhy, 2011, Basis Data Dalam Tinjauan Konseptual. Yogyakarta: Andi

        http://nanikkartika1.blogspot.com/2013/03/contoh-normalisasi-dalam-basis-data.html
        http://www.slideshare.net/adherianto/normalisasi-data
        http://irpantips4u.blogspot.com
        http://www.webtechniques.com