Arsip

Archive for Maret, 2008

Dekomposisi

Dekomposisi adalah teknik memecah sebuah relasi menjadi beberapa relasi. Kemudian setelah relasi tersebut dipecah bila digabungkan kembali harus mendapat hasil yang sama, tidak boleh record yang hiulang maupun record tambahan.

Bila kondisi ini terpenuhi maka ini yang disebut Lessloss-join decomposition.

Contohnya sebuah dekomposisi yang non-Lossless-join:

R1
A B
X 1
X 2
Y 1
Dekomposisi =>
R2
A
X
Y
R3
B
1
2

Bila kedua relasi R2 dan R3 digabung kembali maka akan didapat:

R4
A B
X 1
X 2
Y 1
Y 2

Kondisi ini yang disebut Lossy join decomposition.

Untuk menghindari dekomposisi Lossy-join maka pada relasi hasil dekomposisi harus memiliki attribut yang beririsan. Contohnya adalah pada Relasi StaffBranch diatas didekomposisi menjadi Relasi Staff dan Relasi Branch dimana attribut BranchNo sebagai irisannya.

Ada dua properti penting dalam dekomposisi yaitu Lossless-join Property dan Dependency Preservation Property. Dalam sebuah dekomposisi apakah memenuhi kaidah Lossless-join dan apakah memenuhi kaidah Dependency Preservation.

Masih bingung??? sama saya juga, mari kita lihat lagi.

Untuk mendapatkan dekomposisi yang Lossless-join harus ada attribut yang beririsan namun harus hati hati supaya dekomposisi harus juga Dependency Preserving. Untuk bisa mendapatkan Dependency Preserving syaratnya adalah constraint yang berlaku direlasi awal harus juga berlaku di relasi hasil dekomposisi. Berikut contohnya:

PhoneAddress
Mahasiswa NoHP Operator
Wawan 0815 06 Matrix
Wawan 0817 07 Pro XL
Aan 0815 08 Matrix
Nuri 0812 09 Simpati

Tanda “→” dibaca “menentukan”

Relasi PhoneAddress kemudian dengan cara pertama didekomposisi menjadi:

PA1
Mahasiswa NoHP
Wawan 0815 06
Yoseph 0817 07
Aan 0815 08
Nuri 0812 09
PA2
NoHP Operator
0815 06 Matrix
0817 07 Pro XL
0815 08 Matrix
0812 09 Simpati

Constraint awal adalah {Mahasiswa → NoHP, NoHP → Operator}, kemudian dari dua relasi diatas ada irisan yaitu attribut {NoHP}, dengan demikian ketika kita merujuk salah satu nama Mahasiwa pada relasi PA1 maka kita akan dapat NoHP, berbekal NoHP ketika kita pergi ke PA2 kita bisa mendapat nama Operator.

Sekarang kita pakai cara dekomposisi kedua:

PA1
Mahasiswa NoHP
Wawan 0815 06
Yoseph 0817 07
Aan 0815 08
Nuri 0812 09
PA2
Mahasiswa Operator
Wawan Matrix
Yoseph Pro XL
Aan Matrix
Nuri Simpati

Constraint awal adalah {Mahasiswa → NoHP, NoHP → Operator}, kemudian dari dua relasi diatas ada irisan yaitu attribut {Mahasiswa}, ketika kita merujuk salah satu nama Mahasiwa pada relasi PA1 maka kita akan dapat NoHP, berbekal NoHP kita tidak dapat mendapat nama Operator pada relasi PA2.

Dekomposisi cara kedua diatas juga Lossless-join karena memiliki attribut irisan {Mahasiswa} tapi tidak Dependency Preserving karena constraint yang berlaku pada awal relasi sebelum didekomposisi tidak berlaku lagi.

Untuk ringkasnya lihatyang beriku tini:

  • Ada sebuah Relasi: R = (A, B, C)
    Constraint F = {A → B, B → C}

    • Dapat didekomposisi dalam dua cara.
  • Cara pertama: R1 = (A, B), R2 = (B, C)
    • Lossless-join decomposition: R1 → R2 = {B} dan B → BC
    • Dependency preserving
  • Cara kedua: R1 = (A, B), R2 = (A, C)
    • Lossless-join decomposition: R1 → R2 = {A} dan A → AB
    • Not dependency preserving

Apa itu dependency (ketergantungan)? Dependency secara garis geras ada dua macam yaitu Functional Dependency dan Multivalued Denpendency.

Iklan
Kategori:Kuliah Tag:

Normalisasi

Sebuah basis data relational dapat terdiri dari sebuah tabel atau lebih. Bila table lebih dari satu maka tabel tabel itu saling berhubungan satu sama lain, keterhubungan itu istilahnya Relationship.

Bila sebuah tabel terdiri dari attribut yang berasal dari berbagai macam entitas yang memiliki degree one-to-many atau bahkan many-to-many maka bisa dipastikan tabel tersebut belum normal.

Apa artinya itu? Artinya dalam table tersebut akan terjadi redundancy yang bisa mengakibatkan anomali insert, anomali update dan anomali delete. Apa lagi tuh?

Hmm… agak susah menerangkannya kalau tidak menggunakan contoh. Mau bikin contoh tabel pake HTML, di Lab MTI gak ada HTML editor seperti Editplus atau yang lain, terpaksa deh Notepad, besok mau minta ke Pak Ganda install Editplus boleh gak yah?

Kita ambil contoh dua buah entitas Staff dan Kantor Cabang. Berikut adalah tabel masing masing dalam keadaan normal.

Relasi Staff
NoStaff sName Position Salary BranchNo
FA1 Jefri Manager 4.000.000 B005
FA2 Junanto Asisten 2.000.000 B003
FA3 Simon Supervisor 3.000.000 B003
FA4 Ikrar Asisten 2.000.000 B007
FA5 David Manager 4.000.000 B003
FA6 Wibisono Asisten 2.000.000 B003
 

Berikut Tabel Kantor Cabang:

Relasi Branch
BranchNo bAddress
B003 Pondok Kopi
B005 Depok
B007 Salemba
 

Jika kedua table tersebut digabung maka akan menjadi:

Relasi StaffBranch
NoStaff sName Position Salary BranchNo bAddress
FA1 Jefri Manager 4.000.000 B005 Depok
FA2 Junanto Asisten 2.000.000 B003 Pondok Kopi
FA3 Simon Supervisor 3.000.000 B003 Pondok Kopi
FA4 Ikrar Asisten 2.000.000 B007 Salemba
FA5 David Manager 4.000.000 B003 Pondok Kopi
FA6 Wibisono Asisten 2.000.000 B003 Pondok Kopi
 

Sekarang bisa dengan mudah dilihatkan bahwa dalam kolom bAddress terjadi redundancy. Kalau kita hanya beroperasi dengan satu table itu saja maka kalau kita hanya memasukan data Staff baru, tapi Staff tersebut belum ditugaskan di Kantor Cabang manapun maka yang terjadi record baru tanpa ada nilai untuk BranchNo dan bAddress.

Begitu juga sebaliknya kalau kita mau insert data Branch baru yang belum memiliki Staff maka kita akan harus memasukan Branch dengan kolom Staff tetap kosong atau Null.

Keadaan ini yang disebut anomali-insert.

Kemudian bila kita ingin menghapus data Branch, misalnya BranchNo: B00, maka terpaksa kita juga hartus menghapus Staff Ikrar. Atau sebaliknya bila kita ingin menghapus Staff Ikrar maka Branch B007 akan ikut terhapus.

Keadaan ini yang disebut anomali-delete.

Kemudian bila kita ingin mengupdate bAddress dari Branch B003, maka kita harus mengupdate 4 record sekaligus.

Keadaan ini yang disebut anomali-update.

Tujuan dari normalisasi adalah untuk merancang sebuah relasi yang terhindar dari ketiga anomali diatas, bila sebuah relasi sudah terbebas dari kondisi anomali maka relasi tersebut disebut dalam keadaan baik (good-form).

Bagaimana mengetahui sebuah relasi dalam keadaan baik atau tidak? Caranya kita bisa analisa apakah ada nilai attribut yang berulang atau tidak. Jika ada maka harus dilakukan dekomposisi. Sebuah relasi yang baik haruslah memenuhi dekomposisi yang Lossless-join.

Dekomposisi harus memperhatikan kaidah Functional Dependencies. Normalisasi adalah teknik formal untuk menganalisa hubungan antar attribut berdasarkan Primary Key dan Functional Dependencies.

Tahap tahap normalisasi tersebut adalah:

  • Unnomarlized Relation
    • Relasi masih dipenuhi oleh repeating group
  • Normal Form 1 (NF1)
    • Menghilangkan repeating group dengan cara dekomposisi
    • Menentukan Primary Key
  • Normal Form 2 (NF2)
    • Menghilangkan Partial Dependencies
  • Normal Form 3 (NF3)
    • Menghilangkan Transitive Dependencies
  • Boyce Codd Form (BCF)
  • Normal Form 4 (NF4)
  • Normal Form 5 (NF5)

Proses normalisasi harus dilakukan secara bertahap, tidak bisa loncat loncat.

Kategori:Kuliah Tag: