Kamis, 31 Mei 2012

Normalisasi Database


Normalisasi Database

Normalisasi merupakan sebuah upaya untuk memperoleh sebuah base data dengan struktur yang baik dengan cara menerapkan sejumlah aturan pada setiap tabel agar ruang penyimpanan efisien.
Normalisasi database biasanya jarang dilakukan dalam database skala kecil, dan dianggap tidak diperlukan pada penggunaan personal. Namun seiring dengan berkembangnya informasi yang dikandung dalam sebuah database, proses normalisasi akan sangat membantu dalam menghemat ruang yang digunakan oleh setiap tabel di dalamnya, sekaligus mempercepat proses permintaan data. Berikut ini dipaparkan metodologi logis sederhana untuk menormalkan model data dalam sebuah database, diiringi contoh pembuatan database untuk tugas-tugas matakuliah dalam sebuah fakultas (fiktif) dengan atribut yang disederhanakan.
Proses normalisasi model data dapat diringkas sebagai berikut:
1. Temukan entitas-entitas utama dalam model data.
2. Temukan hubungan antara setiap entitas.
3. Tentukan atribut yang dimiliki masing-masing entitas.
Normalisasi model data dilakukan dengan mengikuti langkah-langkah sederhana, mengubahnya agar memenuhi apa yang disebut sebagai bentuk normal pertama, kedua, lalu ketiga secara berturutan.
Istilah penting dalam teknik normalisasi
  • Field / atribut kunci
Setiap file selalu terdapat kunci dari file berupa satu field atau satu field yang dapat mewakili record.
  • Candidate key
Kumpulan atribut minimal yang secara unik mengidentifikasi sebuah baris fungsinya sebagai calon primary key.
  • Composite key
Kunci kandidat yang berisi lebih dari satu atribut
  • Primary key
Candidate key yang dipilih untuk mengidentifikasi baris secara unik
  • Alternate key
Candidate key yang tidak dipilih sebagai primary key
  • Foreign key
Key di tabel lain yang terhubung dengan primary key pada sebuah tabel
Misalkan terdapat sebuah tabel siswa dengan field sebagai berikut
Maaf kalo gambar kurang jelas
Atribut kunci      -> NIS
Candidate key   -> NIS dan Nama
Composit key    -> Nama bisa dibagi menjadi nama depan dan nama belakang
                                     Alamat bisa dibagi menjadi jalan, kota, propinsi
Primary key        -> NIS
Alternate key    -> Nama
Foreign key        -> NIS pada tabel nilai merupakan foreign key

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 (FD)
Notasi: A  B
A dan B adalah atribut dari sebuah tabel. Berarti secara fungsional A menentukan B atau B tergantung pada A, jika dan hanya jika ada 2 baris data dengan nilai A yang sama, maka nilai B juga sama
Notasi: A  –> B           atau  A   x –> B
            Adalah kebalikan dari notasi sebelumnya
Aturan normalisasi
  1. Bentuk Normal Tahap Pertama (1st Normal Form / 1NF)
  2. Bentuk Normal Tahap Kedua (2nd Normal Form / 2NF)
  3. Bentuk Normal Tahap Ketiga (3rd Normal Form / 3NF)
  4. Boyce-Code Normal Form (BCNF)
  5. Bentuk Normal Tahap Keempat(4th Normal Form / 4NF)
  6. Bentuk Normal Tahap Kelima(5th Normal Form / 5NF)


Aturan Normalisasi

1.      Normalisasi Pertama (1st Normal Form)
·         Mendefinisikan atribut kunci
·         Tidak adanya group berulang
·         Semua atribut bukan kunci tergantung pada atribut kunci

2.      Normalisasi Kedua (2nd Normal Form)
·         Sudah memenuhi dalam bentuk normal kesatu
·         Sudah tidak ada ketergantungan parsial, dimana seluruh field hanya tergantung pada sebagian field kunci.

3.      Normalisasi Ketiga (3rd Normal Form)
·         Sudah berada dalam bentuk normal kedua
·         Tidak ada ketergantungan transitif (dimana field bukan kunci tergantung pada field bukan kunci lainnya).

4.      Boyce-Code Normal Form (BCNF)
·         Bentuk BCNF terpenuhi dalam sebuah tabel, jika untuk setiap functional dependency terhadap setiap atribut atau gabungan atribut dalam bentuk:  X à Y
·         tabel tersebut harus di-dekomposisi berdasarkan functional dependency yang ada, sehingga X menjadi super key dari tabel-tabel hasil dekomposisi
·         Setiap tabel dalam BCNF merupakan 3NF. Akan tetapi setiap 3NF belum tentu termasuk BCNF . Perbedaannya, untuk functional dependency X à A, BCNF tidak membolehkan A sebagai bagian dari primary key.

5.      Normalisasi Keempat (4rd Normal Form)
·         Bentuk normal 4NF terpenuhi dalam sebuah tabel jika telah memenuhi bentuk BCNF, dan tabel tersebut tidak boleh memiliki lebih dari sebuah multivalued atribute
·         Untuk setiap multivalued dependencies (MVD) juga harus merupakan functional dependencies

6.      Normalisasi Kelima (5rd Normal Form)
·         Bentuk normal 5NF terpenuhi jika tidak dapat memiliki sebuah lossless decomposition menjadi tabel-tabel yg lebih kecil.
·         Jika 4 bentuk normal sebelumnya dibentuk berdasarkan functional dependency, 5NF dibentuk berdasarkan konsep join dependence. Yakni apabila sebuah tabel telah di-dekomposisi menjadi tabel-tabel lebih kecil, harus bisa digabungkan lagi (join) untuk membentuk tabel semula


CONTOH KASUS
Perancangan Basis data pengolahan nilai












Senin, 28 Mei 2012

ERD (Entity Relationship Diagram)


ERD (Entity Relationship Diagram)
Sejarah ERD
Model Entity Relationship diperkenalkan pertama kali oleh P.P. Chen  pada tahun 1976. Model ini dirancang untuk menggambarkan persepsi dari pemakai  dan berisi obyek-obyek dasar yang disebut entity dan hubungan antar entity-entity tersebut yang disebut relationship.

Data Modeling
Data Modeling merupakan cara untuk menyusun dan mengorganisasikan data sehingga dapat digunakan dengan mudah oleh database.  ERD adalah salah satu cara permodelan data (data modeling).

Definisi ERD
Entity-Relationship Model (ERM) merupakan abstrak dan konseptual representasi data. Entity-Relationship adalah salah satu metode pemodelan basis data yang digunakan untuk menghasilkan skema konseptual untuk jenis/model data semantik sistem. Dimana sistem seringkali memiliki basis data relasional, dan ketentuannya bersifat top-down. Diagram untuk menggambarkan model Entitiy-Relationship ini disebut Entitiy-Relationship diagram, ER diagram, atau ERD.

Komponen ERD
}  Entity (Entitas)
Entity adalah segala sesuatu yang dapat digambarkan oleh data. Entitas juga dapat diartikan sebagai individu yang mewakili sesuatu yang nyata (eksistensinya) dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999). Ada dua macam entitas yaitu entitas kuat dan entitas lemah. Entitas kuat merupakan entitas yang tidak memiliki ketergantungan dengan entitas lainnya. Contohnya entitas anggota. Sedangkan entitas lemah merupakan entitas yang kemunculannya tergantung pada keberadaaan entitas lain dalam suatu relasi.
}  Attribute (Atribut)
Atribut merupakan pendeskripsian karakteristik dari entitas. Atribut digambarkan dalam bentuk lingkaran atau elips. Atribut yang menjadi kunci entitas atau key diberi garis bawah.

 Jenis Atribut:

-          Nilai Atribut :
Data actual atau informasi yang disimpan pada suatu atribut di dalam suatu entity atau relationship
-          Key
Atribut yang digunakan untuk menentukan suatu Entity secara unik
-          Atribut Simple
Atribut yang bernilai tunggal
Contoh:

-          Atribut Multivalue
Atribut yang memiliki sekelompok nilai untuk setiap instant Entity
Contoh Atribut : Atribut Multivalue




-          Atribut composite
Suatu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu

Contoh:

}  Relationship (Relasi)
Relasi atau Hubungan, Relasi menunjukkan adanya hubungan diantara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Penghubung antara himpunan relasi dengan himpunan entitas dan himpunan entitas dengan atribut dinyatakan dalam bentuk garis.
-     Relationship Set
Kumpulan Relationship yang sejenis

Contoh:

 
-     Derajat dari Relationship
Menjelaskan jumlah Entity yang berpartisipasi dalam suatu Relationship

§  Unary Degree (Derajat Satu)
§  Binary Degree (Derajat Dua)



§  Ternary Degree (Derajat Tiga)

}  Kardinality (Kardinalitas)
Hubungan yang terjadi antara satu atau lebih entity. Menunjukkan jumlah maksimum entitas yang dapat berelasi dengan entitas pada himpunan entitas yang lain. Macam-macam kardinalitas adalah:

Satu ke Satu (One to One), Setiap anggota entitas A hanya boleh berhubungan dengan satu anggota entitas B, begitu pula sebaliknya.

Satu ke banyak (one to many), Setiap anggota entitas A dapat berhubungan dengan lebih dari satu anggota entitas B tetapi tidak sebaliknya.

Banyak ke banyak (many to many), Setiap entitas A dapat berhubungan dengan banyak entitas himpunan entitas B dan demikian pula sebaliknya.


Banyak ke Satu (Many to One), Yang berarti setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan  entitas B, tetapi tidak sebaliknya, dimana setiap himpunan entitas pada himpunan entitas B berhubungan banyak entitas pada himpunan entitas A

Notasi ERD
Ada sejumlah konvensi mengenai Notasi ERD. Notasi klasik sering digunakan untuk model konseptual. Berbagai notasi lain juga digunakan untuk menggambarkan secara logis dan fisik dari suatu basis data, salah satunya adalah IDEF1X.




Notasi-notasi simbolik yang digunakan dalam Entity Relationship Diagram adalah sebagai berikut :
 

Tahapan Pembuatan ERD
·         Mengidentifikasi dan menetapkan seluruh himpunan entitas yang akan terlibat
·         Menentukan atribut-atribut key dari masing-masing himpunan entitas
·         Mengidentfikasi dan menetapkan seluruh himpunan relasi diantara himpunan entitas-himpunan entitas yang ada beserta foreign key-nya
·         Menentukan derajat/kardinalitas relasi untuk setiap himpunan relasi
·         Melengkapi himpnan entitas dan himpunan relasi dengan atribut deskriptif (non key)
Contoh Pembuatan ERD

A.  Permasalahan:
Membuat database yang sederhana untuk suatu sistem informasi akademis.


B.  Tahap 1: Penentuan Entities
·         mahasiswa: menyimpan semua informasi pribadi mengenai semua mahasiswa
·         dosen: menyimpan semua informasi pribadi mengenai semua dosen
·         mata_kuliah: menyimpan semua informasi mengenai semua mata kuliah yang ditawarkan
·         ruang: menyimpan semua informasi mengenai ruang kelas yang digunakan


C.  Tahap 2: Penentuan Attributes
·         mahasiswa:
·         nim: nomor induk mahasiswa (integer) PK
·         nama_mhs: nama lengkap mahasiswa (string)
·         alamat_mhs: alamat lengkap mahasiswa (string)
·         dosen:
·         nip: nomor induk pegawai (integer) PK
·         nama_dosen: nama lengkap dosen (string)
·         alamat_dosen: alamat lengkap dosen (string)
·         mata_kuliah:
·         kode_mk: kode untuk mata kuliah (integer) PK
·         nama_mk: nama lengkap mata kuliah (string)
·         deskripsi_mk: deskripsi singkat mengenai mata kuliah (string)
·         ruang:
·         kode_ruang: kode untuk ruang kelas (string) PK
·         lokasi_ruang: deskripsi singkat mengenai lokasi ruang kelas (string)
·         kapasitas_ruang: banyaknya mahasiswa yang dapat ditampung (integer)


D.  Tahap 3: Penentuan Relationships


mahasiswa
dosen
mata_kuliah
ruang
mahasiswa
-
n:1
m:n
-
dosen

-
1:n
-
mata_kuliah


-
1:1
ruang



-

Hubungan:
·         ruang digunakan untuk mata_kuliah:
·         Tabel utama: ruang
·         Tabel kedua: mata_kuliah
·         Relationship: One-to-one (1:1)
·         Attribute penghubung: kode_ruang (FK kode_ruang di mata_kuliah)
·         dosen mengajar mata_kuliah:
·         Tabel utama: dosen
·         Tabel kedua: mata_kuliah
·         Relationship: One-to-many (1:n)
·         Attribute penghubung: nip (FK nip di mata_kuliah)
·         mahasiswa mengambil mata_kuliah:
·         Tabel utama: mahasiswa, mata_kuliah
·         Tabel kedua: mhs_ambil_mk
·         Relationship: Many-to-many (m:n)
·         Attribute penghubung:  nim, kode_mk (FK nim, kode_mk di mhs_ambil_mk)
·         dosen membimbing mahasiswa:
·         Tabel utama: dosen
·         Tabel kedua: mahasiswa
·         Relationship: One-to-many (1:n)
·         Attribute penghubung:  nip (FK nip di mahasiswa)


E.  Tahap 4: Pembuatan ERD

EER (Enhanced Entity Relationship) Diagram:

 ER Diagram alternatif: