Bab I
Entity Relationship Diagram
Dalam merancang basis data dapat dilakukan melalui dua pendekatan yaitu:
a. Model Entity Relationship Diagram (ERD)
b. Menerapkan normalisasi terhadap struktur tabel yang telah diketahui
1.1 Definisi ERD
Sebelum membangun sebuah database, pertama kali yang dilakukan adalah
merancang struktur basis data tersebut. Jikat basis data yang dibuat tidak dirancang
secara benar, maka data yang dimiliki akan kacau sehingga terjadi kesulitan dalam
pengelolaannya. Dalam merancang basis data kita harus memodelkan data yang ada.
Hal ini agar penyajian data lebih mudah karena lebih terstruktur. Selain itu, proses
perancangan juga lebih mudah. Salah satu metode untuk perancangan suatau basis
data adalah Entity Relationship Model.
Entity Relationship Model (E-R Model) adalah contoh model data berbasis
objek. E-R Model mendeskripsikan isi suatu basis data dalam bentuk entitas, atribut,
dan relationship antar entitas. Apabila kumpulan entitas dalam E-R Model
dihubungkan lengkap dengan atribut dan relationshipnya, maka kita akan
mendapatkan Entity Relationship Diagram (ERD).
Entitas adalah “kata benda” yang merepresentasikan bentuk nyata, misalnya
“Nasabah”, “Buku”, “Penjual”, “Pemilik”, “Penerbit”, atau sebagai abstraksi seperti
“Pesanan”, “Rincian Pesanan” dan lainnya dalam terminologi software engineering.
Contoh 2 buah Entitas yang dinyatakan dalam sebuah kotak (boks).
Karyawan Mobil
Entitas seperti “Karyawan” mempunyai banyak atribut seperti nama, alamat,
umur dan sebagainya.
1
1.2 Hubungan Antar Entitas (Relationship)
ERD merupakan diagram yang menggambarkan hubungan/relasi antar dua atau
beberapa entitas. Hubungan antar Entitas dinyatakan dalam bentuk 2 arah.
Hubungan apa yang dapat terjadi antara “Karyawan” dan “Mobil” ?
- Karyawan mempunyai mobil
- Mobil dimiliki oleh karyawan
Pada gambar dapat dilukiskan sebagai berikut:
Karyawan Mobil
1.3 Kardinalitas
Kardinalitas adalah batasan untuk relationship yang menyatakan “berapa
banyak” entitas mempunyai relasi satu dengan lainnya. Mapping cardinality adalah
banyaknya entitas yang bersesuaian dengan entitas lain melalui relationship.
Kata “berapa banyak” ini diartikan :
0 - bisa tidak ada
1 - satu
N – banyak
Diartikan pada 2 entitas diatas adalah sebagai berikut:
Karyawan bisa tidak mempunyai mobil (secara matematis mempunyai mobil
sebanyak 0 buah)
Karyawan mempunyai 1 mobil
Karyawan mempunyai lebih dari 1 mobil (banyak)
Untuk menentukan “berapa banyak”, tergantung atas kondisi nyata atau
disebut juga sebagai “aturan bisnis” yang ada. Umumnya dapat dijawab dengan
pertanyaan sebagai berikut:
Haruskah setiap Karyawan mempunyai mobil ?
Bolehkan seorang Karyawan mempunyai lebih dari 1 mobil ?
2
Pertanyaan diatas melahirkan kardinalitas minimum dan maksimum pada relasi 2
entitas.
Arti dari simbol Single Line pada hubungan entitas menunjukkan satu dan
hanya satu.
Gambar berikut mengekspresikan (1:n atau 1:M):
Seorang Karyawan memiliki minimal 0 mobil, maksimal banyak mobil
Setiap Mobil dimiliki oleh satu Karyawan (min=1, max=1):
Bila aturan bisnis lain, maka relasi dapat terjadi misalnya:
Setiap Karyawan memiliki minimal 1 mobil, maksimal banyak mobil.
Setiap mobil dimiliki oleh 1 Karyawan saja (min=1, max=1)
3
Selanjutnya model relationship ini akan diterjemahkan kedalam schema
database (physical).
1.4 Arti Kardinalitas pada Atribut
Atribut merepresentasikan elemen data dari entitas. Menentukan atribut adalah
dengan menjabarkan entitas dalam bentuk alur data (data flow) yang didefinisikan
melalui DFD (Data Flow Diagram).
Melalui kardinalitas dapat diketahui bahwa setiap atribut mempunyai minimum
kardinalitas yaitu 0 atau 1 dan maksimum kardinalitas yaitu 1 atau banyak.
Minimum:
0 : atribut tersebut adalah optional, boleh ada boleh tidak
1 : atribut tersebut harus ada (NOT NULL)
Maksimum:
1 : atribut normal
N : atribut tersebut melakukan pengulangan (repeating), sehingga proses normalisasi
dapat segera dilakukan.
4
1.5 Pengembangan Diagram Entitas
Entitas Mobil:
NoPolisi 1:1
NamaPemilik 1:1
Tipe 1:1
Manufaktur 1:1
Warna 1:1
NoChasis 1:1
TglService 0:N
BiayaService 0:N
……
…..
Perhatikan bahwa Service Mobil adalah entitas yang diciptakan oleh Mobil.
Tanpa Entitas Mobil, maka tidak ada Entitas Servie. Oleh karena itu Entitas Mobil
adalah Parent, Entitas Service adalah Child (disebut juga sebagai Entitas Lemah /
Weak Entity). Weak Entity adalah entitas yang kemunculannya tergantung pada
eksistensinya dalam sebuah relasi. Weak Entity termasuk entity set yang dependent
terhadap strong entity set.
Adapun Simbol Child (Weak Entity): Persegi panjang bertumpuk.
5
Perubahan Atribut pada Entitas:
Entitas Mobil:
NoPolisi 1:1
NamaPemilik 1:1
Tipe 1:1
Manufaktur 1:1
Warna 1:1
NoChasis 1:1
……
Entitas Servis:
TglService 1:1
BiayaService 1:1
……
1.6 Domain Atribut
Nilai dari atribut mempunyai domain, yaitu “validasi” dari nilai yang
diberikan. Batasan ini antara lain:
Range: Berupa nilai awal dan nilai akhir yang berlaku
Unit Ukuran: Misalnya inchi, cm, kg dan lainnya
Presisi: Apakah pembulatan diijinkan untuk angka pecahan dan lain sebagainya
Seleksi: Nilai yang hanya dapat diambil dari satu daftar (list) yang berlaku (valid),
misalnya daftar kota, daftar fasilitas. Nilai diluar daftar ini adalah tidak
valid.
1.7 Many-to-Many Relationship
Tujuan dari ERD antara lain untuk melihat hubungan releasi “Banyak-ke-
Banyak” dan memecahnya menjadi lebih sederhana, yaitu “Satu ke Banyak (One to
Many)”, “Banyak ke Satu (Many to One)” atau “Satu ke Satu (One to One)”.
6
Seperti diketahui bahwa kata “Banyak” mengandung “repeating groups”
yang harus disederhanakan menjadi Entitas tersendiri.
Entitas ini disebut sebagai Entitas Asosiatif dengan simbol:
Perhatikan entitas berikut antara Peserta dan Kursus.
Peserta dapat mengikuti lebih dari 1 Kursus, dan setiap Kursus dapat diikuti
oleh 0 Peserta (kosong) atau banyak.
Entitas Peserta:
KdPeserta
NamaPeserta
AlamatPeserta
KdKursus
TglKursus
Nilai Peserta
…..
Entitas Kursus:
KdKursus
NamaKursus
Periode
7
Hasilnya adalah “many-to-many” yang harus dipecah dengan entitas
asosiatif.
Peranan relasi antara Peserta dan “Kursus Berjalan” adalah “Pesera
mengikuti kursus yang berjalan” sedangkan “Kursus Berjalan” adalah dibuat
berdasarkan “Kursus”.
Entitas Peserta:
KdPeserta
NamaPeserta
AlamatPeserta
…..
Entitas KursusBerjalan:
KdPeserta
KdKursus
Periode
TglKursus
NilaiPeserta
Entitas Kursus:
KdKursus
NamaKursus
8
Bab II
Normalisasi
2.1 Teori Normalisasi
Tujuan Normalisasi:
Identifikasi Hubungan antar Atribut
Mengkombinasikan Atribut untuk membentuk Relasi
Mengkombinasikan Relasi untuk membentuk Database
Definisi:
Attribut: Elemen data (disebut juga Field)
Relasi: Kumpulan Atribut (disebut juga Table)
Database: Kumpulan Relasi
Normalisasi menghindari anomali, yaitu kejanggalan yang dapat terjadi
(inkonsistensi) bila dilakukan transaksi, yaitu:
penambahan baris (atau record)
modifikasi isi atribut
menghapus baris
Contoh:
9
Untuk memasukkan model baru, maka record harus diciptakan dengan Nama
Pemesan yang masih kosong.
Jika baris dengan nama pemesan Hasan dihapus, maka otomatis informasi
tentang BMW320i juga ikut terhapus.
Contoh anomali pada modifikasi:
Anomali terjadi bila Manajer diganti, misalnya “Juwita” diganti dengan
“Yanto”. Maka semua baris yang berisi “Juwita” harus diganti dengan “Yanto”.
Untuk menghindari anomali, umumnya dilakukan dekomposisi dari kumpulan
atribut, dipecah hingga menjadi beberapa tabel baru.
2.2 Struktur Sebuah Relasi
Properti: sebuah relasi terdiri atas sebuah tabel 2-dimensi dengan kolom (atribut) dan
baris (record).
Union dua buah relasi R1 dan R2 adalah gabungan kedua tabel tersebut dan ditulis
sebagai R1 R2.
R1 R2 , adalah gabungan semua atribut R1 dan R2
Intersection (perpotongan) dua buah Relasi R1 dan R2 dinyatakan dengan:
R1 ∩ R2 , adalah kumpulan atribut yang sama pada kedua relasi tersebut.
10
2.2.1 Kolom
Disebut juga atribut, merepresentasikan Field pada Tabel.
Setiap kolom mempunyai nama yang unique (tunggal)
Kolom berisi nilai yang homogen, artinya mempunyai tipe yang sama
Setiap kolom mempunyai Domain, yaitu nilai yang konsisten (nilai yang
berlaku untuk Field tersebut)
Kolom tidak perlu tersusun
2.2.2 Baris (row)
Disebut juga record, merepresentasikan tupel (tuple) pada Tabel.
Dalam tabel tidak boleh terdapat baris yang sama isinya.
Baris-baris tidak perlu tersusun
2.2.3 Kunci Kandidat (candidate key)
adalah satu atau beberapa atribut yang secara unique dapat
mengindentitaskan sebuah baris.
Bila beberapa atribut (gabungan) adalah kunci kandidat, maka bila salah satu
atribut dilepas, maka gabungan atribut tersebut tidak lagi bisa
mengidentifikasikan baris secara unique.
2.2.4 Kunci Primer (primary key)
adalah kunci kandidat yang dipilih sebagai “penentu tunggal”. Setiap relasi
harus mempunyai kunci primer.
Bila tidak ada satupun kunci kandidat pada sebuah relasi, maka harus
diciptakan atribut baru untuk tujuan tersebut.
Primary key bersifat unique dan not null
Relasi (Tabel) dikatakan menunjukkan entity integritas jika di dalam relasi
(table), kunci utama harus unique sehingga akan mengidentifikasi setiap
baris.
11
2.2.5 Kunci luar (foreign key)
adalah atribut pada sebuah relasi, dimana atribut tersebut bukan kunci utama
relasi tersebut, melainkan kunci utama (atau bagian dari kunci utama) pada
relasi yang lain.
Suatu field pada sebuah relasi (tabel) yang menunjukan relasi (hubungan) ke
relasi (tabel) induknya
2.2.6 Composite key
Atribut composite adalah jenis atribut yang masih dapat diuraikan lagi
Composite key adalah kunci yang merupakan gabungan beberapa atribut.
2.3 Ketergantungan Fungsional
Relasi dengan Atribut ditulis sebagai:
R ( A1, A2, …, An )
R = Nama Relasi
Ai = Nama Atribut
Pada sebuah relasi R (A, B) atribut B tergantung secara fungsional atas atribut A,
Contoh:
Bandara ( NamaBandara, Kota)
NamaBandara Kota
NamaBandara menentukan Kota, diartikan bahwa Kota tergantung secara
fungsional pada NamaBandara. Sebaliknya Kota tidak menentukan NamaBandara,
yaitu pada contoh Kota Jakarta.
12
2.4 Ketergantungan Fungsional Penuh
Sebuah Relasi R (A,B,X), dimana X tergantung fungsional pada A B.
ABX
X dinyatakan tergantung fungsional penuh (fully functional dependent) bila tidak
terjadi:
A X atau B X
melainkan hanya:
ABX
X dinyatakan tergantung fungsional penuh (fully functional dependent) pada
sekelompok Atribut Y, bila X tergantung fungsional pada seluruh atribut Y dan
bukan subset dari Y.
Beberapa aturan awal (Axiom) ketergantungan fungsional:
1. Refleksif: X X
2. Pengembangan: X Y lalu X Z Y
3. Union: X Y dan X Z maka X Y Z
4. Dekomposisi: X Y dimana Y adalah Z1 Z2 Z3
maka X Z1 X Z2 X Z3
5. Transitivitas: X Y dan Y Z maka X Z
6. PseudoTransitivitas: X Y dan Y Z W maka X Z W
Contoh:
Bila Anda menemukan ketergantungan atribut sebagai berikut:
AB
CDA
CE
EC
BDC
13
Maka beberapa implikasi yang dapat ditulis adalah:
A A (axiom 1)
A C B (axiom 2)
C D AE (axiom 2 dan 3)
A D C (axiom 6)
D E A (axiom 6)
C D B (axiom 5)
B D E (axiom 5)
E D A (axiom 6)
A D E (axiom 5 dan 6)
D E B (axiom 5 dan 6)
Contoh Axiom 4:
Nopeg NamaPegawai
Nopeg AlamatPegawai
Bila AlamatPegawai terdiri atas (Jalan, Kota) maka:
Nopeg Kota
Nopeg Jalan
Catatan:
Penulisan primary key pada relasi ditandai dengan garis bawah pada atribut.
Contoh: R (A,B,C,D,E)
A B adalah primary key.
14
2.5 Normal Form
Inti dari normalisasi adalah eliminasi anomali pada saat insert, delete atau
update record. Well Structure Relation adalah ebuah relation yang jumlah
kerangkapan datanya sedikit (minimum amount of redudancy), serta memberikan
kemungkinan bagi user untuk melakukan insert, delete, dan update.
2.5.1 1NF (First Normal Form)
Sebuah relasi berada dalam 1NF jika relasi tersebut tidak berisi atribut yang
berulang-ulang (repeating groups).
2.5.2 2NF (Second Normal Form)
Sebuah Relasi adalah dalam 2NF, jika Relasi tersebut dalam 1NF dan untuk
setiap non key attribut adalah tergantung fungsional penuh kepada primary key.
Perhatikan Relasi dibawah ini:
Apa primary key (PK) relasi tersebut ?
NoInduk Nama
15
NoInduk KdKursus
KdKursus NoInduk
KdKursus Nama
NoInduk KdKursus Nama
NoInduk KdKursus NoInduk
NoInduk KdKursus KdKursus
Kunci kandidat adalah NoInduk dan KdKursus:
Relasi (NoInduk, KdKursus, Nama)
Namun Nama tidak tergantung fungsional penuh pada Primary Key karena
Nama tergantung fungsional pada NoInduk, karena itu Relasi tidak di 2NF.
NoInduk Nama
Pemecahannya adalah membentuk 2 Relasi, yaitu:
Relasi1 (NoInduk, Nama)
Relasi2 (NoInduk, KdKursus)
Sebuah Relasi berada pada 1NF dan 2NF jika salah satu syarat dibawah terpenuhi:
1. Primary Key hanya terdiri atas 1 atribut
2. Tidak terdapat atribut yang bukan Primary Key
3. Setiap atribut yang non-key tergantung penuh atas seluruh atribut di primary key.
16
2.5.3 3NF (Third Normal Form)
Sebuah relasi berada pada 3NF, bila relasi adalah 1NF dan 2NF, dan
tidak ada non-key atribut yang tergantung fungsional kepada non-key atribut
yang lainnya
Contoh:
Proyek(NoPeg, Honor, KdProyek, TglSelesaiProyek)
Relasi menggambarkan karyawan yang terlibat pada sebuah proyek.
Relasi berada pada 1NF dan 2NF, tapi tidak pada 3NF, karena:
KdProyek adalah non-key
TglSelesaiProyek adalah non-key
KdProyek TglSelesaiProyek
Pemecahannya adalah membagi menjadi 2 relasi:
Proyek(KdProyek, TglSelesaiProyek)
PegProyek(NoPeg, Honor, KdProyek)
Petunjuk mengembang 3NF pada Relasi
1. Tentukan atribut – atribut
2. Kelompokan atribut tersebut yang secara logis mempunyai hubungan dalam relasi
3. Pilih kunci kandidat
4. Bila ada repeating group, normalisasikan
5. Pilih kunci utama
6. Identifikasikan ketergantungan fungsional
7. Dekomposisi relasi sejauh ada atribut bukan kunci (non-key) yang belum
tergantung sepenuhnya atas kunci-utama
8. Kombinasikan relasi dengan kunci utama yang identik
9. Temukan ketergantungan transitif
10. Dekomposisi relasi sampai tidak ada ketergantungan transitif
17
18