Anda di halaman 1dari 41

By : I Ngh Putu Mardika, S.

Pd

Perancangan basis data diperlukan, agar kita bisa memiliki basis data yang kompak dan efisien dalam penggunaan ruang penyimpanan, cepat dalam pengaksesan dan mudah dalam pemanipulasian (tambah, ubah, hapus) data. Dalam merancang basis data, kita dapat melakukannya dengan :
1. Menerapkan normalisasi pada struktur table yang telah diketahui. 2. Langsung membuat model ER (Entity Relationship)

Upaya pembentukan basis data yang baik akan bisa lebih mudah jika dilakukan dengan lebih dahulu membuat perencanaan basis data. Bagaimana upaca/cara yang baik itu melalui perencanaan basis data yang akan dibahas lebih mendalam dalam materi-materi selanjutnya. Perencanaan basis data dilaksanakan dengan menerapkan sejumlah teori terhadap data (fakta) yang telah dimiliki yang salah satunya adalah penerapan NORMALISASI DATA

Normalisasi Basis Data


Normalisasi adalah proses pembentukan struktur basis data sehingga sebagian besar ambiguity bisa dihilangkan. Tahap Normalisasi dimulai dari tahap paling ringan (1NF) hingga paling ketat (5NF) Biasanya hanya sampai pada tingkat 3NF atau BCNF karena sudah cukup memadai untuk menghasilkan tabel-tabel yang berkualitas baik.

Mengapa dilakukan normalisasi ?


Optimalisasi struktur-struktur tabel Meningkatkan kecepatan Menghilangkan pemasukan data yang sama Lebih efisien dalam penggunaan media penyimpanan Mengurangi redundansi Menghindari anomali (insertion anomalies, deletion anomalies, update anomalies). Integritas data yang ditingkatkan
Untuk dapat memahami dan mampu menerapkan teori NORMALISASI pada basis data, terlebih dahulu harus mengerti dan mamahami tetang komponen-komponen dasar yang terlibat di dalamnya yaitu, Key dan Attribut

Atribut Tabel (Table Attribute)


Yaitu identik dengan pemakaian istilah kolom data pada sebuah tabel. Istilah Atribut lebih umum dipergunakan dalam perancangan basis data karena istilah itu lebih imprensif menunjukkan fungsinya sebagai pembentuk karakteristik (sifat-sifat tabel.

Tabel Mahasiswa
NIM 10.02.0001 10.02.0002 10.02.0003 10.02.0004 10.02.0005 10.02.0006 10.02.0007 10.02.0008 Nama Mahasiswa Tri Apsari Pramudita Eliana Susanti Putu Septiana Putra Gede Agus Pradipta Tri Martini Putu Eka Dharma A.A. Gede Ngurah Gst Ayu Laksmi Alamat Mahasiswa Jl. Merdeka 10 Jl. Tunjung 23 Jl. Melati 30 Jl. Tamrin 19 Komp. Griya Asri D-2 Perum Dalung Permai D3 Jl. Sultan Agung 50 Jl. Hasanudin 25 Tgl. Lahir 2 Januari 1991 3 Maret 1990 7 Agustus 1991 29 Juni 1991 13 Mei 1990 6 Oktober 1991 7 Juli 1990 8 Juni 1990

10.02.0009

Ayu Putu Darmawati

BTN Taman Asri Blok M

12 Sept 1990

Memiliki 4 buah atribut: nim, nama_mahasiswa, alamat_mahasiswa, dan tgl_lahir

Data Mata Kuliah


Kdmk KK021 KK022 KU020 KU021 KK023 KK024 KK030 KK031 Mata Kuliah Struktur Data Basis Data Bahasa Indonesia Bahasa Inggris Pemrograman Visual Sistem Pakar Analisis dan Desain Sistem HTML dan Web Desain SKS 3 3 2 2 3 3 2 2 Semester 1 2 3 2 2 4 2 2

Memiliki 4 buah atribut: kdmk, mata_kuliah, sks, dan semester

Data Dosen
Nam Dosen Ir. Taufik Ismail Alamat Dosen Perum Dosen Griya Asri C-5 Semarapura

Dra. Yuni Patmasari, M.Pd


Dr. I Gede Bagus Pratama Dewi Sundari, S.Pd

Jl. Gunung Kawi No. 21 Denpasar


Jl. Garuda No. 21 Denpasar Jl. Gatot Kaca 17 Amlapura

I. A Putra Bimantara, S.Kom


Dr. Umar Hakim

Jl. Panda Amlapura


Jl. Garuda Gg Merak No. 1 Denpasar

Memiliki 2 buah atribut: nama_dosen, dan alamat_dosen

Data Nilai
Mata Kuliah NIM Nama Mahasiswa Index Nilai

Struktur Data
Struktur Data

10.02.0001
10.02.0002

Tri Apsari Pramudita


Eliana Susanti

A
A

Struktur Data
Basis Data

10.02.0003
10.02.0004

Putu Septiana Putra


Gede Agus Pradipta

Basis Data
Bahasa Indonesia Pemrograman Visual Pemrograman Visual

10.02.0005
10.02.0006 10.02.0001 10.02.0004

Tri Martini
Putu Eka Dharma Tri Apsari Pramudita Gede Agus Pradipta B C C

Memiliki 4 buah atribut: mata_kuliah, nim, nama_mahaiswa, dan index_nilai

Data Jadwal
Mata Kuliah Basis Data Bahasa Inggris Pemrograman Visual Analisis dan Desain Sistem Waktu Senin, 08.00 09.40 dan Kamis, 11.00 11.50 Selasa, 10.00 11.40 dan Jumat, 08.00 09.40 Rabu, 13.00 14.40 dan Jumat 14.00-15.50 Rabu, 09.00 15.50 Tempat Ruang A Ruang B Ruang C Ruang A Nama Dosen Ir. Taufik Ismail Dewi Sundari, S.Pd Dra Yuni Patmasari, M.Pd Dr. I Gede Bagus Pratama

Memiliki 4 buah atribut: mata_kuliah, waktu, tempat, dan nama_dosen

Dari 5 table di atas, masing-masing table memiliki field / atribut sebagai key, dan lainnya sebagai atribut deskriptif. Ada pula atribut yang tergolong atribut sederhana atau komposit dan lainnya.

Key dan Atribut Deskriptif


Key adalah satu atau gabungan dari beberapa atribut yang dapat membedakan semua baris data (row) dalam tabel secara unik. Ada 3 jenis key yaitu :
Super key Candidat key Primery key

Super Key
Satu atribut/kumpulan atribut yang secara unik mengidentifikasi sebuah tupel di dalam relasi Bisa terjadi, ada lebih dari 1 kumpulan atribut yang bersifat seperti itu pada sebuah table. Contoh : pada tabel Mahasiswa yang memiliki 4 buah field / atribut tersebut, yang dapat menjadi superkey adalah:
nim, nama_mahasiswa, alamat_mahasiswa, dan tgl_lahir nim, nama_mahasiswa, alamat_mahasiswa nim, nama_mahasiswa nim nama_mahasiswa

Basis Data Relasional

Candidate key
merupakan kumpulan field / atribut minimal yang dapat membedakan setiap baris data dalam sebuah table secara unik. Sebuah Candidate-key tidak boleh berisi atribut atau kumpulan atribut yang telah menjadi superkey yang lain. Jadi sebuah Candidate-key pasti superkey, tapi belum tentu sebaliknya Contoh :
nim nama_mahasiswa, jika kita bisa menjamin tidak ada nilai yang sama untuk atribut ini.

Pada sebuah table dimungkinkan ada lebih dari satu Candidate-key, seperti contoh diatas. Salah satu dari Candidatekey ini (jika memang lebih dari satu) dapat dijadikan sebagai Key Primer (Primary key).

Primary Key
Primary_key adalah candidate-key yang dipilih untuk mengidentifikasi tupel secara unik pada suatu relasi. Kunci utama dapat terbentuk dari satu atribut atau lebih. Pemilihan Key Primer dari sejumlah Candidate-key pada suatu table didasari pada ketiga hal berikut ini:
Key tersebut lebih sering (natural) untuk dijadikan acuan. Key tersebut lebih ringkas. Jaminan keunikan Key tersebut lebih baik.

Dengan pertimbangan tersebut, kedua Candidate-key pada table Mahasiswa, yaitu nim dan nama_mahasiswa, yang lebih cocok sebagai Key Primer adalah (nid). Hal ini dikarenakan bahwa jaminan keunikan daripada nid (nomor induk dosen) akan terjamin karena karena setiap nid pada suatu perguruan tinggi pastinya tidak akan sama nilainya, sedangkan kenapa tidak memilih nama_d, karena nama_d kemungkinan ada yang sama nilainya.

Foreign-Key
adalah satu atribut (satu set atribut) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya. Foreign key ditempatkan pada relasi anak dan sama dengan primary key induk direlasikan. Hubungan antara relasi induk dengan anak adalah satu lawan banyak (one to many relationship)

Relasi One to Many

Atribut Deskriptif
Atribut-atribut yang tidak menjadi atau merupakan anggota primary key Misalnya dalam tabel mahasiswa, atribut seperti : nama_mahasiswa, alamat_mahasiswa, dan tgl_lahir digolongkan sebagai atribut deskriptif

Basis Data Relasional

Atribut Sederhana & Komposit


Atribut Sederhana (Simple Attribute) adl atribut atomik yang tidak dapat dipilah lagi Atribut Komposit (Composite Attribute) merupakan atribut yang masih dapat diuraikan lagi menjadi sub-sub atribut yang masing-masing memiliki makna. Contoh : Pada tabel Mahasiswa, attribut nama_mahasiswa merupakan attribut sederhana, dan alamat_mahasiswa sebagai atribut komposit krn dapat diuraikan lagi menjadi beberapa sub attribut
Basis Data Relasional

Contoh Att. Sederhana & Att Komposit


nim ... ... Nama_mahasiswa Tri Apsari Pramudita Eliana Susanti alamat_mahasiswa Jl. Merdeka 10 Denpasar 80801 Jl. Tunjung 23 Amlapura 80811 Tgl_lahir 2 Januari 1991 3 Maret 1990

... ...

Putu Septiana Putra ...

Jl. Melati 30 Amlapura 80812 ...

7 Agustus 1991 ...

Dapat diuraikan menjadi 3 atribut

alamat Jl. Merdeka 10 Jl. Tunjung 23 Jl. Melati 30

kota Denpasar Amlapura Amlapura

kode_pos 80801 80811 80812

Atribut Bernilai Tunggal & Banyak


Atribut bernilai tunggal (Single-value Attribute) ditujukan pada atribut-atribut yang memiliki paling banyak satu nilai untuk setiap bari data. Attribut bernilai banyak (multivalued Attribute) ditujukan pada atribut yang dapat kita isi dengan lebih dari 1(satu) nilai, tetapi jenisnya sama.

Nim

Nama_mahasiswa

Alamat_maha Tgl_lahir siswa


Jl. Merdeka 10 2 Januari 1991

hobi
Sepakbola, voli, berenang, membaca Menari

10.02.0001 Tri Apsari Pramudita

10.02.0002 Eliana Susanti

Jl. Tunjung 23

3 Maret 1990

10.02.0002 ...

...

...

Musik, memancing

Atribut bernilai tunggal


Mata Kuliah Basis Data Bahasa Inggris Pemrograman Visual Waktu Senin, 08.00 09.40 dan Kamis, 11.00 11.50

Atribut bernilai banyak Tempat Ruang A .... Ruang B .... Ruang C .... Nama Dosen

Selasa, 10.00 11.40 dan Jumat, 08.00 09.40 Rabu, 13.00 14.40 dan Jumat 14.00-15.50

Atribut Harus Bernilai (Mandatory Attribute ) dan Nilai Null


Mandatory Attribute adalah merupakan sejumlah atribut yang ada pada suatu table yang harus berisi data dan tidak boleh kosong. Non Mandatory Attribute adalah sejumlah atribut yang ada pada suatu table yang boleh tidak diisi datanya / boleh kosong. Nilai Null digunakan untuk mengisi atribut atribut yang nilainya memang belum siap / tidak ada. Misalkan pada table mahasiswa yg telah kita tambahkan 1 (satu) record, seperti tampak pada gambar berikut:

Mandatory atribute nim 10.02.00 01 Nama_mahasisw a Tri Apsari Pramudita

Non Mandatory atribute

alamat_mahasiswa Jl. Merdeka 10 Denpasar 80801

Tgl_lahir 2 Januari 1991

hoby Sepakbola, voli, berenang, membaca

10.02.00 02
10.02.00 03 ... 10.02.00. 05

Eliana Susanti
Putu Septiana Putra ... Abdulah

Jl. Tunjung 23 Amlapura 3 Maret 80811 1990


Jl. Melati 30 Amlapura 80812 ... <null> <null> 7 Agustus 1991

Menari
Musik, memancing ... <null>

Nilai NULL

Atribut Turunan (Derived Attribute)


adalah atribut yang nilai-nilainya diperoleh dari pengolahan atau dapat diturunkan dari atribut atau table lain yang berhubungan. Penambahan atribut tahun_masuk pada table dosen merupakan contoh atribut turunan

Syarat Tabel Yang Baik...


Sebuah tabel dikatakan baik (efisien) atau normal jika memenuhi 3 kriteria sbb: 1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless-Join Decomposition). Artinya, setelah tabel tersebut diuraikan / didekomposisi menjadi tabel-tabel baru, tabel-tabel baru tersebut bisa menghasilkan tabel semula dengan sama persis. 2. Terpeliharanya ketergantungan fungsional pada saat perubahan data (Dependency Preservation). 3. Tidak melanggar Boyce-Code Normal Form (BCNF) Jika kriteria ketiga (BCNF) tidak dapat terpenuhi, maka paling tidak tabel tersebut tidak melanggar Bentuk Normal tahap ketiga (3rd Normal Form / 3NF).

Functional Dependency (4)


Functional Dependency dari tabel nilai
NIM NamaMhs Karena untuk setiap nilai nim yang sama, maka nilai NamaMhs juga sama {Matakuliah, NIM} NilaiHuruf Karena attribut NilaiHuruf tergantung pada Matakuliah dan NIM secara bersama-sama. Dalam arti lain untuk Matakuliah dan NIM yang sama, maka NilaiHuruf juga sama, karena Matakuliah dan NIM merupakan key (bersifat unik). Matakuliah NIM NIM NilaiHuruf

BENTUK NORMAL PERTAMA (First Normal Form - 1NF)


Tidak diperboleh adanya : Atribut yang bernilai banyak (Multivalued attribut). Attribut komposit atau kombinasi dari keduanya. Jadi : Harga domain atribut harus merupakan harga atomik

Contoh (1)
Misal Data Mahasiswa sbb :

Atau

Tabel-tabel di atas tidak memenuhi syarat 1NF

Contoh (2)
Dekomposisi menjadi :
Tabel Mahasiswa :

Tabel Hobi :

BENTUK NORMAL KEDUA (Second Normal Form - 2NF) (1)


Bentuk normal 2NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk 1NF, dan semua atribut selain primary key, secara utuh memiliki Functional Dependency pada primary key Sebuah tabel tidak memenuhi 2NF, jika ada atribut yang ketergantungannya (Functional Dependency) hanya bersifat parsial saja (hanya tergantung pada sebagian dari primary key) Jika terdapat atribut yang tidak memiliki ketergantungan terhadap primary key, maka atribut tersebut harus dipindah atau dihilangkan

BENTUK NORMAL KEDUA (Second Normal Form - 2NF) (2)


Ketergantungan fungsional X Y dikatakan penuh jika menghapus suatu atribut A dari X berarti Y tidak lagi bergantung fungsional. Ketergantungan fungsional X Y dikatakan partial jika menghapus suatu atribut A dari X berarti Y masih bergantung fungsional. Skema relasi R dalam bentuk 2NF jika setiap atribut non primary key A R bergantung penuh secara fungsioanl pada primary key R.

Contoh (1)
Tabel berikut ini memenuhi 1NF, tetapi tidak termasuk 2NF

Contoh (2)
Tidak memenuhi 2NF, karena {NIM, KodeMk} yang dianggap sebagai primary key sedangkan:
{NIM, KodeMk} NamaMhs {NIM, KodeMk} Alamat {NIM, KodeMk} Matakuliah {NIM, KodeMk} Sks {NIM, KodeMk} NilaiHuruf

Tabel tersebut perlu didekomposisi menjadi beberapa tabel yang memenuhi syarat 2NF

Contoh (3)
Functional dependencynya sbb:
{NIM, KodeMk} NilaiHuruf (fd1) NIM {NamaMhs, Alamat} (fd2) KodeMk {Matakuliah, Sks} (fd3)

Sehingga :
fd1 (NIM, KodeMk, NilaiHuruf) Tabel Nilai fd2 (NIM, NamaMhs, Alamat) Tabel Mahasiswa fd3 (KodeMk, Matakuliah, Sks) Tabel MataKuliah

BENTUK NORMAL KETIGA (Third Normal Form - 3NF) (1)


Bentuk normal 3NF terpenuhi jika telah memenuhi bentuk 2NF, dan jika tidak ada atribut non primary key yang memiliki ketergantungan terhadap atribut non primary key yang lainnya (ketergantungan transitif).

BENTUK NORMAL KETIGA (Third Normal Form - 3NF) (2)


Untuk setiap Functional Dependency dengan notasi X A, maka:
X harus menjadi superkey pada tabel tersebut. Atau A merupakan bagian dari primary key pada tabel tersebut.

Ketergantungan fungsional X Y dalam relasi R dikatakan bergantung transitif jika terdapat kumpulan atribut Z himpunan primary key R sehingga X Z dan Z Y.

Contoh (1)
Tabel mahasis berikut ini memenuhi syarat 2NF, tetapi tidak memenuhi 3NF

Karena masih terdapat atribut non primary key (yakni Kota dan Provinsi) yang memiliki ketergantungan terhadap atribut non primary key yang lain (yakni KodePos) : KodePos {Kota, Provinsi}

Contoh (2)
Sehingga tabel tersebut perlu didekomposisi menjadi :
Mahasiswa (NIM, NamaMhs, Jalan, KodePos) KodePos (KodePos, Provinsi, Kota)

Latihan
Berikut ini contoh basis data yang belum ternormalisasi :

Masalah :
Tidak perlu berulang-ulang kali menyimpan data alamat, nama barang, dan harga. Redundancy dapat menimbulkan masalah, yaitu data yang tidak konsisten (pensile)

Anda mungkin juga menyukai