BAB I
TEKNIK NORMALISASI
DALAM PERANCANGAN BASIS DATA RELASIONAL
I.1. PENDAHULUAN
Perancangan merupakan suatu hal yang sangat penting dalam pembuatan basis data.
Permasalahan yang dihadapi pada waktu perancangan yaitu bagaimana basis data yang akan
dibangun ini dapat memenuhi kebutuhan saat ini dan masa yang akan datang. Untuk itu diperlukan
perancangan basis data baik secara fisik maupun secara konseptualnya. Perancangan konseptual
akan menunjukkan entity dan relasinya berdasarkan proses yang diiginkan oleh organsisasinya.
Untuk menentukan entity dan relasinya perlu dilakukan analisis data tentang informasi yang ada
dalam spesifikasi di masa yang akan datang.
Suatu basis data dibangun berdasarkan kebutuhan informasi dalam suatu organisasi, oleh
sebab itu pada umumnya perancangan basis data dimulai dari pengamatan kebutuhan informasi.
Proses perancangan basis data , dibagi menjadi tiga tahapan yaitu :
1. Perancangan basis data secara konseptual, tahapan ini merupakan upaya untuk membuat
model yang masih bersifat konsep.
2. Perancangan basis data secara logis, merupakan tahapan untuk memetakan model
konseptual kemodel basis data yang akan dipakai (modal relasional, hirarkis, atau jaringan).
Perancangan ini tidak bergantung pada DBMS yang akan dipakai, itulah sebabnya
perancangan basis data secara logis terkadang disebut pemetaan model data.
3. Perancangan basis data secara fisis, merupakan tahapan untuk menuangkan perancangan
basis data yang bersifat logis menjadi basis data fisis yang tersimpan pada media
penyimpanan eksternal (yang spesifik terhadap DBMS yang dipakai ).
Kroenke mendefinisikan normalisasi sebagai proses untuk mengubah suatu relasi yang
memiliki masalah tertentu ke dalam dua buah relasi atau lebih yang tida memiliki
masalah tersebut. Masalah yang dimaksud oleh kroenke ini sering disebut dengan istilah
anomali.
Normalisasi merupakan sebuah teknik dalam logical desain sebuah basis data/database,
teknik pengelompokkan atribut dari suatu relasi sehingga membentuk struktur relasi
yang baik (tanpa redudansi).
Normalisasi adalah suatu proses memperbaiki/membangun dengan model data
relasional, dan secara umum lebih tepat dikoneksikan dengan model data logika.
Proses normalisasi adalah proses pengelompokan data elemen menjadi tabel-tabel yang
menunjukkan entity dan relasinya. Pada proses normalisasi dilakukan pengujian pada beberapa
kondisi apakah ada kesulitan pada saat menambah/menyisipkan, menghapus, mengubah dan
mengakses pada suatu basis data. Bila terdapat kesulitan pada pengujian tersebut maka perlu
dipecahkan relasi pada beberapa tabel lagi atau dengan kata lain perancangan basis data belum
optimal.
Tujuan dari normalisasi itu sendiri adalah untuk menghilangkan kerangkapan data,
mengurangi kompleksitas, dan untuk mempermudah pemodifikasian data.
Relasi KHS
3. Buat Bentuk Normal Kedua ( 2 NF )
Bentuk Normal kedua mempunyai syarat yaitu bentuk data telah memenuhi kriteria bentuk
Normal Pertama. Atribut bukan kunci haruslah bergantung secara fungsi pada kunci utama ,
sehingga untuk membentuk Normal Kedua haruslah sudah ditentukan kunci-kunci field.
Kunci field harus unik dan dapat mewakili atribut lain yang menjadi anggotanya.
Dari Relasi KHS di atas dapat dibuatkan diagram ketergantungan data seperti berikut :
a. Atribut PRODI, NAMA_MHS, NPM dan JENJANG
Atribut PRODI memiliki ketergantungan kepada atribut NPM, karena seorang mahasiswa
pasti memiliki satu Program Studi/Jurusan.
Akan tetapi dari contoh di atas, isi/nilai data dari atribut prodi adalah Teknik
Informatika, yang tentunya belum merupakan isi atau nilai data yang UNIK (tidak dapat
dijadikan atribut kunci). Oleh sebab itu perlu ditambahkan atribut lain yang isi/nilai
datanya unik, misalnya KODE_PRODI. Dan atribut JENJANG akan bergantung juga pada
atribut KODE_PRODI. Sehingga PRODI sudah dapat menjadi Relasi sendiri, misalnya
menjadi RELASI PRODI.
Diagram ketergantungannya sebagai berikut :
KODE_PRODI
PRODI
JENJANG
Dengan demikian, dari penjelasan awal di atas bahwa atribut PRODI bergantung kepada
atribut NPM, sedangkan PRODI sudah menjadi RELASI sendiri, maka atribut PRODI yang
bergantung kepada atribut NPM tadi berganti dengan atribut KODE_PRODI.
Jadi atribut KODE_PRODI bergantung kepada atribut NPM. Dan atribut NAMA_MHS
juga bergantung kepada atribut NPM. Ketergantungan ini dapat menjadi RELASI baru,
misal RELASI MAHASISWA.
Diagram ketergantungannya sebagai berikut :
NPM NAMA_MHS
KODE_PRODI
KODE_MTK NAMA_MTK
SKS
Dan Relasinya sebagai berikut :
RELASI MATA_KULIAH
KODE_MTK NAMA_MTK SKS
255KP011 Pendidikan Agama Islam 2
255KP061 Bahasa Inggris 2
355KK011 Kalkulus I 3
255KK141 Fisika I 2
255KK211 Pengantar Ekonomi 2
255KK181 Sistim Informasi 2
355KK061 Algoritma I 3
155KK071 Prak. Algoritma I 1
255KP071 Pendidikan Pancasila 2
NUP_BAK
KA_BAK
RELASI BAK
NUP_BAK KA_BAK
777.0904.308 Marlinah Umar, S.Kom
Jadi, dari Bentuk Normal Kedua ( 2 NF ) ini, telah menghasilkan Struktur Relasi dan
Relational-nya sebagai berikut :
BAK KHS
#NUP_BAK PERIODE
KA_BAK NPM
SEMESTER
KODE_MTK
NIL_HURUF
NUP_BAK
Dari hasil bentuk Normal Kedua (2NF) di atas, tampak pada RELASI KHS masih ada atribut-
atribut yang mempunyai nilai/isi data berulang, dimana sebenarnya hal itu masih bisa
disederhanakan. Atribut-atribut tersebut adalah atribut SEMESTER dan atribut NUP_BAK.
Untuk itu kita lanjutkan ketahap Bentuk Normal Ketiga (3NF).
KHS
PERIODE
NPM
SEMESTER
KODE_MTK
NIL_HURUF
NUP_BAK
Di sederhanakan menjadi :
HDR_KHS KHS
#PERIODE PERIODE
#NPM NPM
SEMESTER KODE_MTK
NUP_BAK NIL_HURUF
Dan dari RELASI BAK, lebih baik dikembangkan menjadi relasi PEGAWAI dan relasi JABATAN.
Karena, jika tetap seperti relasi BAK di atas, maka relasi tersebut berarti hanya akan berisi
data BAK saja. Sementara jabatan yang ada bukan hanya BAK saja. Apakah setiap jabatan
akan dijadikan relasi sendiri. Tentu tidak.
Pengembangan relasi tersebut dapat dibuat menjadi :
Struktur Relasi BAK
BAK
#NUP_BAK
KA_BAK
Dikembangkan menjadi :
PEGAWAI JABATAN
#NUP #KODE_JABATAN
NAMA_PEGAWAI NAMA_JABATAN
KODE_JABATAN
Sehingga hasil akhir dari Bentuk Normal Ketiga (3 NF) adalah :
HDR_KHS KHS
#PERIODE PERIODE
#NPM NPM
SEMESTER KODE_MTK
NUP_BAK NIL_HURUF
PEGAWAI JABATAN
#NUP #KODE_JABATAN
NAMA_PEGAWAI NAMA_JABATAN
KODE_JABATAN
Hasil dari Bentuk Normal Ketiga (3 NF) di atas sudah merupakan hasil akhir dari perancangan
database menggunakan Teknik Normalisasi.
Tampak bahwa, sampai dengan Bentuk Normal Ketiga (3 NF) saja disain database yang ideal
sudah dapat dicapai.
HARGA JUMLAH
NO NAMA BARANG JUMLAH
SATUAN HARGA
1 Semen 10 Sak 65.000 650.000
2 Pasir Cor 3 m3 80.000 240.000
3 Coral 1 m3 100.000 100.000
TOTAL HARGA Rp. 990.000
Kasir
( AMOY )
BAB II
MEMBUAT DISAIN DATABASE
DENGAN ORACLE DATABASE DESIGNER
Berikutnya pilih menu File, dilanjutkan dengan pilihan New, maka akan terbuka kotak dialog
New Diagram seperti berikut :
Pilih pilihan “Create a new empty” diagaram seperti tampak pada gabar di atas, lalu kilik
tombol OK, maka akan terbuka lembar kerja untuk New Diagram.
Berikutnya klik ikon Table (yang dilingkari merah pada gambar di bawah ini), dan klik pada
canvas (lembar kerja warna putih), sehingga menjadi seperti gambar ini :
Pada tampilan seperti gambar di atas, double klik (klik dua kali) pada TABLE1 yang
berwarnya kuning, sehingga akan terbuka kotak dialog Edit Table seperti berikut :
Pada bagian Name seperti yang dilingkari merah pada gambar di atas, ganti nama table,
misal PRODI. Lalu klik tab Column Defn, dan isikan Column name, Seq, Datatype, Max Len dan Opt
seperti gambar berikut :
Keterangan :
1. Column Name : nama atribut/field/item
2. Seq : nomor urut untuk atribut, sebaiknya kelipatan 10, agar mudah
untuk menyisipkan sebuah atribut.
3. Datatype : tipe data untuk atribut, terdiri atas :
a. Varchar2 : untuk tipe data Teks
b. Number : untuk tipe data Angka
c. Date : untuk tipe data Tanggal/Jam
d. Longraw : untuk tipe data Image (gambar/foto)
4. Max Len : maksimal jumlah digit/karakter yang dapat disimpan dalam
sebuah atribut
5. Opt : sifat dari sebuah atribut, dimana jika pilihan Opt di ceklist, berarti
atribut tersebut bersifat NULL (boleh tidak diisi data/nilai),
sedangkan jika pilihan Opt tidak di ceklist maka berarti atribut
tersebut bersifat NOT NULL (harus diisi data/nilai)
Lengkapi Column Name dan seterusnya untuk atribut lain pada PRODI, sehingga tampak seperti
gambar berikut :
II.3. Membuat Primay Key
Untuk memulai membuat Primary Key, maka dari gambar di atas, klik Tab
Constraints (yang dilingkari merah), akan terbuka layar editor Constraint seperti berikut :
Klik Tab Primary (yang dilingkari merah pada gambar di atas), isikan Constraint
Name, Seq dan Columen Name, selanjutnya bagian Datatype dan Len akan terisi otomatis.
Selanjutnya klik tombol OK yang terdapat dibagian kanan bawah layar Edit Table
PRODI, akan tampak hasil seperti berikut :
Keterangan :
Tanda “*” (bintang) pada setiap atribut menandakan sifat
atribut tersebut adalah NOT NULL, bila atribut bersifat
NULL, maka tandanya adalah “0” (nol)
Tanda “#” berarti atribut tersebut merupakan Primary Key
2. Isikan Constraint Name, Join Table, Seq, Column Name dan Join Column seperti gambar di
atas.
3. Klik tombol OK, tampak hasil seperti berikut :
Lanjutkan pembuatan TABLE, PRIMARY KEY dan FOREIGN KEY lainnya, sehingga tampak hasil akhir
seperti berikut :
Muncul kotak dialog Generation Wizard, langsung klik tombol Finish, seperti gambar berikut :
Jika tidak ada kesalahan dalam disain database kita, maka akan muncul kotak dialog seperti berikut :
Sampai disini berarti proses disain database dengan menggunakan Oracle Database Designer sudah
selesai. Hasil akhirnya setelah kita klik tombol OK dari gambar di atas adalah akan terbuka langsung
sebuah file .SQL pada NotePad dengan nama file AKADEMIK.SQL.
BAB III
MENNGUNAKAN DATABASE SQL ORACLE
Mydb pada Host String merupakan nama database yang dibuat diwaktu meng-install Database
Oracle.
Dari gambar di atas, setelah di klik tombol OK, maka akan muncul PROMPT SQL seperti yang digaris
bawah merah pada gambar berikut :
Pada prompt SQL itu lah kita ketikkan perintah-perintah SQL. Dimana untuk tulisan perintah di SQL
bisa menggunakan huruf besar atau kecil ataupun kombinasi huruf besar dan kecil. Dan umumnya
setiap perintah di SQL diakhiri dengan tanda “ ; ” (titik koma)
III.2. Membuat User
Syarat utama untuk dapat menggunakan SQL Oracle adalah harus mempunyai USER. Untuk
dapat membuat User, kita Login ke SQL Oracle sebagai Admin User, seperti point III.1 di atas.
Bentuk umum perintah untuk membuat User adalah :
CREATE USER nama_user IDENTIFIED BY password;
Contoh :
SQL>create user akademik identified by akademik;
Dari contoh di atas, berarti user adalah AKADEMIK dan password adalah AKADEMIK.
Contoh :
SQL>grant dba to akademik;
Jika tidak ada kesalahan sejak dari membuat user (III.2) sampai dengan memberi hak akases (III.3),
maka tampilannya lebih kurang seperti berikut ini :
III.4. Membuat DataBase
Berikutnya kita akan membuat database pada user yang sudah kita buat di atas. Dari hasil
akhir disain database pada BAB II, telah menghasilkan file .SQL yaitu file AKADEMIK.SQL. Buka file
tersebut :
Bagian yang digaris merah dari gambar di atas, yaitu : “C:\ODD\AKADEMIK.SQL” ganti menjadi :
“@C:\ODD\AKADEMIK.SQL;” dan copykan perintah tersebut ke Editor SQL pada user AKADEMIK
yang sudah dibuat tadi, tentunya dengan koneksi ke SQL dengan user akademik :
SQL> @C:\ODD\AKADEMIK.SQL;
Maka semua perintah yang ada pada file AKADEMIK.sql akan dijalankan oleh SQL dan akan tercipta
database seperti yang sudah kita disain pada BAB II.
Perintah di atas adalah untuk membuat Foreign Key (me-relasi-kan) table MAHASISWA ke
table PRODI.
B. Perintah UPDATE
Perintah ini digunakan untuk merubah isi data suatu atribut/field/item pada suatu table
Contoh :
Kita akan merubah field JENJANG pada table PRODI dari “S-1” menjadi “D-3”, maka
perintahnya :
SQL>UPDATE PRODI
SET JENJANG=’D-3’
;
Isi table PRODI :
KODE_PRODI PRODI JENJANG
55201 TEKNIK INFORMATIKA D-3
26201 TEKNIK INDUSTRI D-3
Tampak bahwa, perintah ini akan mengakibatkan semua isi data filed JENJANG pada table
PRODI berubah menjadi D-3.
SQL>UPDATE PRODI
SET JENJANG=’S-1’
WHERE KODE_PRODI=’55201’
;
C. Perintah DELETE
Perintah ini digunakan untuk menghapus data dari suatu table.
Contoh :
Hapus record pada table PRODI dengna KODE_PRODI 26201
SQL>DELETE PRODI
WHERE KODE_PRODI=’26201’
;
SQL>DELETE PRODI
;
D. Perintah ROLLBACK
Digunakan untuk membatalkan perintah terakhir pada SQL. Dengan catatan perintah ini
hanya bisa dilakukan sebelum ada perintah COMMIT.
Contoh :
SQL>DELETE PRODI
;
SQL>ROLLBACK;
Dari contoh di atas, perintah DELETE PRODI akan batal dengan sendirinya.
E. Perintah COMMIT
Digunakan untuk mengeksekusi perintah INSERT, UPDATE dan DELETE. Maksudnya, perintah
INSERT, UPDATE dan DELETE tidak akan merubah apa-apa pada suatu table secara
PERMANEN sebelum dilakukan perintah COMMIT;
Contoh :
SQL>COMMIT;
III.7. QUERY
Query biasanya dimaksudkan adalah perintah untuk menampilkan data dari satu atau
beberapa table. Dimana perintah yang biasanya digunakan adalah perintah SELECT.
A. Menampilkan Data dari Satu Table
Contoh :
Berikut table PRODI dengan isi datanya :
KODE_PRODI PRODI JENJANG
55201 TEKNIK INFORMATIKA S-1
26201 TEKNIK INDUSTRI S-1
Perintah select kode_prodi, dan seterusnya di atas sama hasilnya dengan perintah berikut :
SQL>select * from prodi;
Tampak bahwa hasilnya sama saja dengan hasil pada point A di atas. Namun pemakaian alias
ini akan sangat membantu jika kita akan menampilkan data pada lebih dari satu table.
Tampilkan data mahasiswa dengan PRODI dari prodi masing-masing, yang berjenis
kelamin Perempuan :
Keterangan :
1. m merupakan alias dari table MAHASISWA, sendangkan p merupakan alias dari table
PRODI.
2. substr(m.nama_mhs,1,20) berarti menampilkan isi data FIELD nama_mhs sebanyak 20
karakter, dimulai dari karakter 1.
3. nama merupakan alias dari substr(m.nama_mhs,1,20).