SQL Server Indonesia User Groups Community October 2010 - Posts - SQL Server Geeks
Welcome to SQL Server User Group Indonesia
Sign in JoinHelp | Sign In Live ID

SQL Server Geeks

I am not SQL Addicted , but I am SQL Geeks

October 2010 - Posts

Normalisasi dan denormalisasi sebuah plus dan minus

Normalisasi akan meningkatkan data integrity tetapi akan juga meningkatkan Query complexity dan sebaliknya Denormalisasi akan mengurangi data integrity dan juga mengurangi Query Compexity. Tujuan normalisasi adalah untuk membuat agar data yang ada tidak redundan dan memiliki data integrity yang kuat sehingga ketika kita melakukan relasi antara table akan dengan mudah kita menjaga dataintegrity dan mendapatkan datanya.

 

Normalisasi Table sendiri terbagi atas bentuk normal ke 1 sampai bentuk normal ke 4. lebih jelasnya baca tentang konsep RDBMS.

Bentuk Table yang tidak memenuhi bentuk normal (tidak dinormalisasi contohnya)

 

Table : DATAKARYAWAN (No, NAMAKARYAWAN, DEPARTEMEN, SEKSI, ALAMAT, KOTA)

 

Dalam menentukan normalisasi suatu database akan bergantung pada Functional Dipendency dari setiap Tuple (Field/Column) yang akan menentukan seberapa normal Satu Table.

 

Dari Gambaran diatas Table DATAKARYAWAN merupakan Table yang tidak dinormalisasi. Karena kita tidak melihat adanya Functional Dipendency Kalo kita lihat kemungkinan ketergantungan fungsinal (yang artinya tergantung pada) yang berlaku adalah :

 

No -> NAMAKARYAWAN,

DEPARTEMENDEPARTEMEN ->SEKSI

NAMAKARYAWAN -> ALAMAT

KOTA -> ALAMAT

 

Akibat kita melakukan design table yang tidak dinormalisasi seperti diatas kita kan mengalami kesulitan untuk membentuk suatu relasi antara table.

 

seperti pada contoh di bawah ini:

------------------------------------------------------------------------------------------------------ 

|No | NamaKaryawan | Departemen  | Seksi                   |  Alamat    | Kota     |

------------------------------------------------------------------------------------------------------ 

|1.  | A. Hanif              | IT                   | Application Dev  |Cideng      | Jakarta |

|2.  |Kusmawanti        |IT                    |Application Dev    |Cideng     |Jakarta   |

|3.  |Boboy                  |Sales               |Telesales             |Ancol        |Bekasi   |

------------------------------------------------------------------------------------------------------

 

Jika boboy kita hapus dari Table Kita maka Data departemen Sales juga akan terhapus,  berikut juga informasi Kota bekasi (Integritas data Terganggu). Padahal Departemen sales tetap ada meskipun tidak memiliki karyawan demikian juga dengan kota bekasi. Sehingga untuk kasus ini perlu di normalisasi menjadi table berikut.

 

Table: karyawan(NoKaryawan, Namakaryawan, KodeDepartemen, KodeSeksi, Alamat, KodeKota)

Table: Departemen(KodeDepartemen, NamaDepartement)

Table: Seksi(KodeDepartemen, KodeSeksi, NamaSeksi)

Table: Kota(KodeKota, NamaKota)

 

Dengan struktur hasil normalisasi ini memungkinkan data integrity akan tetap terjamin. Untuk meningkatkan performance dan data integrity ini proses normalisasi dilakukan dan sebagian besar dilakukan dalam OLTP.

 

Setiap ketergantungan fungsional pada colum di suatu table pada implementasinya akan memungkinkan column tersebut dinominasilkan menjadi KEY baik itu Primary Key maupun secondary Key, dan dari sinilah konsep penentuan Key dan Index dimulai pada tahapan design. Yang pada akhirnya akan mementukan waktu akses yang diperlukan untuk mendapatkan suatu informasi dari table yang kita design. sini kita baru mulai menentukan desain database yang mempertimbangkan performance.

 

kapan denormalisasi dilakukan? Biasanya Untuk OLAP dan DataWarehouse Pendekatan designnya berbeda dengan OLTP sebagian besar table dibuat denormalized untuk lebih meningkatkan performace. Desaign yang dibuat menggunakan Star schema atau snowflake Schema.

 

Lebih jelas tentang OLTP dan OLAP bisa juga dilihat di sini :

http://sqlserver-indo.net/blogs/kiki/archive/2009/12/23/must-know-olap-v-s-oltp.aspx

  Semoga berguna.

 

More Posts