Anda di halaman 1dari 21

LAPORAN PRAKTIKUM

Normalisasi dengan PostgreSQL

Disusun untuk Memenuhi Matakuliah Praktikum Basis Data 2


Yang Dibimbing oleh Ibu Annisa Puspa Kirana, S.Kom., M.Kom.

Disusun Oleh:
Nadiratin Jamilah

(150535601300)

Nimatu Rohmah

(150535602460)

S1 TI 2015OFF B

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
September 2016

MODUL III

NORMALISASI dengan POSTGRESQL


1.

Tujuan

Memahami konsep dasar normalisasi di dalam basis data.


Memahami implementasi normalisasi sebagai bentuk respon atau suatu

kejadian.
Mampu menyelesaikan kasus-kasus manipulasi data yang kompleks
dengan memanfaatkan normalisasi.

2.

Dasar Teori
A. BEBERAPA DEFINISI NORMALISASI
Normalisasi adalah suatu proses memperbaiki / membangun dengan
model data relasional, dan secara umum lebih tepat dikoneksikan

dengan model data logika.


Normalisasi adalah proses pengelompokan data ke dalam bentuk tabel
atau relasi atau file untuk menyatakan entitas dan hubungan mereka
sehingga terwujud satu bentuk database yang mudah untuk

dimodifikasi.
Normalisasi dapat berguna dalam menjawab 2 pertanyaan mendasar
yaitu: apa yang dimaksud dengan desain database logical? dan apa
yang dimaksud dengan desain database fisikal yang baik? What is

phisical good logical database design?.


Normalisasi adalah suatu proses untuk mengidentifikasi tabel
kelompok atribut yang memiliki ketergantungan yang sangat tinggi

antara satu atribut dengan atrubut lainnya.


Normalisasi bisa disebut jga sebagai proses pengelompokan atributatribut dari suatu relasi sehingga membentuk WELL STRUCTURED
RELATION.

WELL STRUCTURED RELATION adalah sebuah relasi yang jumlah


kerangkapan datanya sedikit (Minimum Amount Of Redundancy), serta
memberikan kemungkinan bagi used untuk melakukan INSERT,
DELETE, MODIFY, terhadap baris-baris data pada relasi tersebut, yang
tidak berakibat terjadinya ERROR atau INKONSISTENSI DATA, yang
disebabkan oleh operasi-operasi tersebut.
Contoh:

Terdapat sebuah relasi Mahasiswa, dengan ketentuan sebagai


berikut.
- Setiap Mahasiswa hanya boleh mengambil satu mata
-

kuliah saja.
Setiap matakuliah mempunyai uang kuliah yang standar
(tidak tergantung pada mahasiswa yang mengambil
matakuliah tersebut).
Tabel 9.1 Relasi Kuliah
NIM KODE-MTK BIAYA
92130 CS-200
75
92200 CS-300
100
92250 CS-200
75
92425 CS-400
150
92500 CS-300
100
92575 CD-500
50

Relasi Kuliah di atas merupakan sebuah relasi yang sederhana dan terdiri dari
kolom / atribut. Bila diteliti secara seksama, maka akan ditemukan redundancy
pada datanya, dimana biaya kuliah selalu berulang pada setiap mahasiswa.
Akibatnya besar kemungkinan terjadi error atau inkonsistensi data, bila dilakukan
update terhadap relasi tersebut dengan Anomaly. Anomaly merupakan
penyimpangan-penyimpangan atau error atau inkonsistensi data yang terjadi pada
saat dilakukan proses delete, insert ataupun modify dalam suatu basis data.
B. MACAM-MACAM PENYIMPANGAN (ANOMALY)
INSERTION ANOMALY
Insertion Anomaly, merupakan error atau kesalahan yang terjadi sebagai
akibat dari operasi menyisipkan (insert) tuple / record pada sebuah relasi.
Contoh: ada matakuliah baru (CS-600) yang akan diajarkan, maka matakuliah\
tersebut tidak bisa di insert / disisipkan ke dalam Relasi Kuliah di atas sampai ada
mahasiswa yang mengambil matakuliah tersebut.
DELETE ANOMALY
Delete Anomaly merupakan error atau kesalahan yang terjadi sebagai
akibat operasi penghapusan (delete) terhadap tupe / record dari sebuah relasi.
Contoh: mahasiswa dengan NIM 92425 (pada Relasi Kuliah di atas),
memutuskan untuk batal ikut kuliah CS-400, karena ia merupakan satu-satunya
peserta matakuliah tersebut, maka bila record / tuple tersebut dihapus / delete akan
berakibat hilangnya informasi bahwa mata kuliah CS400, biayanya 150.

UPDATE ANOMALY
Update Anomaly merupakan error atau kesalahan yang terjadi sebagai
akibat oerasi perubahan (update) tuple / record dari sebuah relasi.
Contoh: biaya kuliah untuk matakuliah CS-200 (pada relasi kuliah di atas) akan
dinaikkan dari 75 menjadi 100, maka harus dilakukan beberapa kali modifikasi
terhadap record-record atau tuple-tuple mahasiswa yang mengambil matakuliah
CS-200 tersebut, agar data teap konsisten.

A. Tugas Praktikum
Create Database
Query
Create database tokobuku;
Printscreen

Penjelasan
Membuat database dengan nama tokobuku1 pada SQL
editor pada database postgresql. Dengan mengetikkan query create
database tokobuku1; kemudian eksekusi query.

Create Table
Query
- Membuat tabel buku (table universal)
create table buku(id_buku int, judul varchar(50), penulis
name, jenis_buku varchar(20), harga int, penerbit
varchar(35));
select*from buku;
insert
harga,
values
55000,

into buku(id_buku, judul, penulis, jenis_buku,


penerbit)
(101, 'Divided in Dead', 'JD Robb', 'novel',
'PT Gramedia Pustaka Utama'),
(102, 'Tears Spring in Korea', 'Dwi Andhika',
'novel', 40000, 'Zettu'),
(131, 'Hujan Bulan Juni', 'Supardi Djoko Damono',
'puisi', 59000, 'PT Gramedia'),
(142, 'Dasar-Dasar Pemrograman Java', 'Frans',
'pelajaran', 157000, 'Sinar Terang'),
(150, 'Lilin-Lilin Kecil', 'Cilla Resita',
'cerpen', 25000, 'Gemilang'),
(161, 'Kuala Kumal', 'Raditya Dika', 'novel',
56000, 'PT Gramedia Pustaka'),
(172, 'Laskar Pelangi', 'Andrea Hirata', 'novel',
70000, 'PT Gramedia Pustaka');

Printscreen

Analisa
Membuat tabel dengan nama buku atau disebut dengan
table universal yang berasal dari gabungan tiga table. Dengan
kolom id_buku bertipe data integer karena data yang dimasukkan
berupa angka, judul bertipe data varchar(50) karena yang
dimasukkan berupa huruf. Penulis dengan tipe data name karena
nama orang. Jenis_buku bertipe data character varying(20), harga
bertipe data integer karena inputan berupa angka dapat dilakukan

penghitungan AVG, SAM, MAX, dan MIN. Penerbit memiliki tipe


data character varying dengan nilai 35. Ruang bertipe data
character varying.

Menghilangkan Anomali Data


Query
update buku
set penerbit = 'Sinar Muda Nusantara'
where penerbit = 'Sinar Terang';
select*from buku;
update buku
set penerbit = 'Zettu national'
where penerbit = 'Zettu';
select*from buku;

select distinct penerbit from buku order by penerbit;


Printscreen

Penjelasan
Menghilangkan data-data yang memiliki nilai sama dengan cara

mengupdate katena apabila data pada tabel universal tersebut ada yang
memiliki data sama pada tabel foreign key maka data tersebut tidak
dapat dinormalisasikan 1 nf. Anomaly data yang dimaksud tidak

termasuk pada tabel jenis_buku karena meskipun jenis buku sama


namun buku tersebut tetaplah berbeda.

1 nf
Kemudian masukkan data pada tiap-tiap kolom yang akan dilakukan
normalisasi.
Printscreen

Analisa
Table buku telah memenuhi 1nf karena sudah tidak ada lagi
baris yang bernilai ganda atau duplikat pada masing-masing baris
bernilai tunggal serta tidak bernilai null.

2nf
Query
- Memisahkan table dengan membuat table baru
- Membuat table penerbit
create table penerbit (id_penerbit serial, penerbit character
varying);
select*from penerbit;
-

Membuat table jenis_buku


create table jenis_buku (id_jenisbuku serial, jenis_buku
character varying);
select*from jenis_buku;

Membuat table buku1


create table buku1
(
id serial,
id_buku serial,
judul character varying,
penulis character varying,
id_jenisbuku serial,
harga int,

id_penerbit serial
);
select*from buku1;

Printscreen

Penjelasan

Pada proses 2nf memisahkan table yang bergantung pada atribut


bukan primary key. Dalam table ini membuat table baru penerbit
yang terdiri dari field id_penerbit dan penerbit. Dan jenis_buku,
yang terdiri dari field id_jenisbuku dan jenis_buku. serta table
universal atau table buku diubah menjadi table buku1, dan nanti
setelah proses normalisasi akan mereferences pada kedua table
yang baru saja dibuat.
3nf
Pada proses 3nf tidak ditemukan bergantungnya antar table,
sehinnga proses penormalisasian cukup sampai disini saja.
Migrating Data buku ke penerbit
Query
Klik execute arbitrary SQL queries ketik sintax dibawah ini
create sequence serial
start 1;
insert into penerbit
select nextval('serial')id_penerbit, penerbit as penerbit
from
(select distinct penerbit from buku order by penerbit) as p;
Ketik SELECT * FROM penerbit , untuk melihat output dari
eksekusi query

Printscreen

Penjelasan
Memindahkan data dari table universal ke table baru yang
belum terisi dengan pemindahan data pada field penerbit di tabel
buku ke tabel penerbit, dengan menggunakan Sequence yang
dimasukkan pada table buku dan tipe datanya adalah

serial.

Menggunakan serial agar perhitungan dimulai dari 1 sampai


seterusnya terurut.
Output yang dihasilkan dari table yang berisi 6 penerbit
yang berasal pada table universal.
Migrating Data buku ke jenis_buku
Query
Klik execute arbitrary SQL queries ketik sintax dibawah ini
create sequence serial_jen
start 1;
insert into jenis_buku
select nextval('serial_jen')
jenis_buku

id_jenisbuku,

jenis_buku

as

from
(select distinct jenis_buku from buku order by jenis_buku) as j;
Ketik SELECT * FROM jenis_buku , untuk melihat output dari
eksekusi query.

Printscreen

Penjelasan

Memindahkan data dari table universal ke table baru yang


belum terisi dengan pemindahan buku (jenis_buku), dengan
menggunakan Sequence yang dimasukkan pada table jenis_buku
dengan tipe data id_jenisbuku serial, dan jenis_buku character
varying dimana data berasal dari table buku atau table universal.
Menggunakan serial baru yakni (serial_j) karena jika memakai
serial awal id yaitu serialakan meneruskan perhitungan serial
pada table sebelumnya.
Output yang dihasilkan dari table yang berisi 4 jenis_buku
yang berada pada table universal buku.
Migrating Data buku ke buku1
Query
Klik execute arbitrary SQL queries ketik sintax dibawah ini
create sequence serial_per
start 1;
insert into buku1
select nextval('serial_per')id_buku, judul as nama, penulis,
j.id_jenisbuku id_jenisbuku, harga,
p.id_penerbit id_penerbit
from buku b
inner join jenis_buku j on j.jenis_buku = b.jenis_buku
inner join penerbit p on p.penerbit = b.penerbit;
Ketik SELECT * FROM buku1 , untuk melihat output dari perintah

Printscreen

Penjelasan
Memindahkan data dari table universal ke table baru yang
belum terisi dengan pemindahan id_buku yang telah diforeign key
dengan table buku1, maka semua data pada tabel buku yang
memiliki foreign key dengan tabel buku1 akan otomatis termigrasi
sesuai dengan field dan tipe data masing-masing. Id_jenisbuku
tidak terurut yang terurut adalah id yang ditambahkan pada tabel
buku.
Output yang dihasilkan adalah semua data dalam tabel buku1
yang meski berulang memiliki id yang berbeda (id sebagai primary
key).

Relasi Antar Table


Langkah-langkah
- Klik execute arbitrary SQL queries Grapical Query Builder
drag table pada Scemas, Public Hubungkan relasi antar
-

table
Sebelum Dilakukan Normalisasi

Setelah Dilakukan Normalisasi

Penjelasan
Pada proses relasi tabel, table yang dibuat direlasikan pada
table yang lain dengan foreign key yang terdapat antar table. Pada
tabel buku1 terpadat foreign key id_jenisbuku yang dihubungkan
pada table jenis_buku, id_penerbit yang dihubungkan dengan table
penerbit. Ketiganya terhubung setelah terjadinya normalisasi.
B. Kesimpulan
Normalisasi database merupakan suatu pendekatan sistematis untuk
meminimalkan redundansi data pada suatu database agar database tersebut
dapat bekerja dengan optimal.
Normalisasi merupakan teknik analisis data yang mengorganisasikan
atribut-atribut data dengan cara mengelompokkan sehingga terbentuk
entitas yang non-redundant, stabil, dan fleksible
Normalisasi dilakukan sebagai uji coba pada suatu relasi secara
berkelanjutan untuk menentukan apakah relasi itu sudah baik, yaitu dapat
dilakukan proses insert,update,delete, dan modifikasi pada satu atau
beberapa atribut tanpa mempengaruhi integritas data dalam relasi tersebut.
Jenis-jenis Normalisasi umumnya ada 9 yaitu 1NF, 2NF, 3NF, EKNF,
BCNF, 4NF, 5NF, DKNF, dan 6NF

Tidak semua tabel dapat di normalisaikan sesuai dengan tingkat


bergantungnya antar tabel lainnya.
C. Daftar Pustaka
Kirana, Annisa Puspa, S.kom, M.Kom. 2016. Modul Praktikum Basis Data 2
Pertemuan 4 : Normalisasi dalam Postgresql. Malang : Universitas Negeri
Malang
Basofi, Arif, S.Kom. 2005. Normalisasi Database: Database I Chapter 5.
(Online),(https://staff.blog.ui.ac.id/r-suti/files/2010/03/bab_05__normalisasi_database.pdf), (diakses pada tanggal 20 September 2016)

Anda mungkin juga menyukai