Yudhi'm Blog

Blog yang berisi berbagai macam tulisan & tutorial umum. Enjoy the blog here!!!

Banner Iklan1

Banner Iklan1
Sudahkah keluarga Anda terlindungi?

Banner Iklan

Banner Iklan
970x90

Surrogate Key

sTips dan Trik IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com

Djoni Darmawikarta
djoni_darmawikarta@yahoo.ca
Lisensi Dokumen:
Copyright © 2003 IlmuKomputer.Com
Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan
disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat
tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang
disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang,
kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.
Misalkan kita memiliki database alamat dengan diagram ER (Entity Relationship
Diagram) data model-nya sebagai berikut. Perhatikan bahwa attribute yang didalam
bagian atas dari kotak entity adalah primary key. Misalnya untuk entity NEGARA,
primary key adalah kode_negara. Sedang PROPINSI memiliki composite primary key
yaitu kode_negara dan kode_propinsi.
Dalam model ini primary key tabel NEGARA, kode_negara, menjadi bagian primary
key tabel PROPINSI; lalu menjadi bagian dari primary key tabel KOTA, dan juga
bagian primary key tabel JALAN. Demikian juga dengan primary key tabel ditingkat
lebih atas yang lain, menjadi bagian dari primary dari primary key tabel yang
dibawahnya, dan dibawa terus ke yang lebih bawah. Dengan demikian dapat dipastikan
1

Tips dan Trik IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com
jalan yang dinegara, dikota, dan dipropinsi mana, karena mungkin ada jalan yang sama
dinegera, kota dan propinsi berbeda.
Dalam contoh model ini, kode_negara, propinsi, kota, dan jalan dibentuk berdasarkan
namanya, seperti dapat dilihat sample data JALAN dibawah ini.
Kode_negara
IND
IND
Kode_propinsi
JABAR
JABAR
Kode_kota
JAK
JAK
Kode_jalan
PDHJ
PNID
Nama_jalan
Pondok Hijau
Pinang Indah
Jumlah_
jalur
2
2
Apa yang terjadi bila terjadi penggantian nama, misalnya Jawa Barat, dengan
kode_propinsi JABAR, menjadi Daerah Istimewa Jakarta Raya, yang menurut aturan
pemberian kode, kode_propinsi-nya juga harus diganti, misalnya menjadi DIJR.
Semua data isi tabel JALAN, yang berkaitan dengan Jawa Barat, harus diubah!
Demikian juga dengan isi tabel KOTA. Rangkaian perubahan ini makin memburuk bila
PROPINSI, KOTA dan/atau JALAN digunakan (dihubungkan) dengan tabel-tabel data
yang lain.
Maslah ini terjadi karena rancangan diatas menggunakan intelligent key (bermakna);
kode_negara, propinsi, kode dan jalan, yang menjadi primary key, dibentuk
(dirumuskan) berdasarkan namanya. Intelligent key kadang disebut juga “natural” key.
Solusi Surrogate Key
Surrogate key adalah solusi yang efektif. Surrogate key, sebagai primary key, yang
biasanya merupakan angka bulat urut yang tidak bermakna, tidak ada hubungan dengan
data didalam tabel. Dengan surrogate key, diagram ER kita menjadi sebagai berikut.
2

Tips dan Trik IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com
Kini, bila nama propinsi dan kodenya berubah, atau attribute yang manapun, data
ditabel KOTA dan JALAN, tidak kena dampaknya.
Bila kita ingin menyimpan nama dan kode sebelumnya (history), kita menambahkan
record baru yang memiliki surrogate key-nya sendiri, tidak menimpanya dengan yang
baru. Teknik surrogate key untuk menyimpan data historis ini, didunia data
warehousing dikenal dengan istilah “slowly changing dimension type two”.
Fasilitas Surrogate Key
Database populer seperti Oracle, DB2 dan SQL Server memiliki fasilitas implementasi
surrogate key. Berikut contoh penggunaannya di Microsoft SQL Server.
Mendefinisikan surrogate key pada waktu membuat tabel.
NEGARA bisa menggunakan SQL statement sebagai berikut.
CREATE TABLE negara
( negara_sk int IDENTITY(1,2) PRIMARY KEY,
kode_negara varchar(10) NOT NULL,
nama_negara varchar(50) NOT NULL,
gdp int)
Perhatikan tambahan IDENTITY(1,2) pada surrogate key negara_sk. Angka pertama
(disebut seed) adalah nilai negara_sk yang akan diberikan oleh SQL Server untuk data
(row) pertama yang diisikan kedalam tabel ini, dalam contoh kita adalah 1. Angka
kedua (disebut increment), yaitu 2 dalam contoh kita ini, adalah pertambahan pada nilai
surrogate key dari nilai terakhir yang sudah dipakai untuk mendapatkan nilai yang akan
diberikan kepada data yang sedang dimasukkan.
Bila kita jalankan tiga buah SQL statement berikut, setelah tabel dibuat (masih kosong
datanya)
INSERT negara (kode_negara, nama_negara, gdp)
VALUES (‘IND’, ‘Indonesia’, 100)
INSERT negara (kode_negara, nama_negara, gdp)
VALUES (‘SGP’, ‘Singapura’, 1000)
INSERT negara (kode_negara, nama_negara, gdp)
VALUES (‘KAN’, ‘Kanada’, 1100)
Maka isi tabel negara adalah:
negara_sk
1
3
5
kode_negara
IND
SGP
KAN
nama_negara
Indonesia
Singapura
Kanada
gdp
100
1000
1100
Misalnya untuk tabel
3

Tips dan Trik IlmuKomputer.Com
Copyright © 2003 IlmuKomputer.Com
Membaca data, misalnya dengan SQL sebagai berikut:
SELECT nama_negara, gdp FROM negara
WHERE gdp > 100
tidak perlu ‘menyentuh’ surrogate-key, karena memang dia, dilihat dari sudut user
(bukan technical/system), tidak ada hubungan dengan data.
Untuk query yang melibatkan dua atau lebih tabel (join query), misalnya SQL berikut:
SELECT a.nama_negera, b.nama_propinsi FROM negara a, propinsi b
WHERE a.kode_negara = ‘IND’
AND a.negara_sk = b.negara_sk
kita tidak perlu menyentuh isi surrogate key, cukup ditambahkan bagian terakhir yang
menyebutkan surrogate key dari kedua tabel yang dibutuhkan untuk menghubungkan
mereka.
Dapat disimpulkan, bahwa penggunaan surrogate key adalah ‘transparan’ terhadap user.
Kesimpulan Manfaat Surrogate Key
Selain menjamin kestabilan (tabel terkait tidak kena dampak perubahan), surrogate key
juga menghemat tempat penyimpan (disk space), karena hanya satu attribute numerik
sederhana, tidak composite seperti bila digunakan intelligent key (makin panjang
rangkaian entity-nya makin besar composite primary key-nya entity ujung terbawahnya,
dan dia makin tidak stabil)
Surrogate key yang sering disebut dummy key sebenarnya smart! Maksudnya, dia tidak
bermakna dan tidak perlu dipusingkan – dia otomatis berfungsi memecahkan masalah
intelligent key.
Bagikan :
+
Previous
Next Post »
1 Komentar untuk "Surrogate Key"

terimakasih atas informasinya,,,
Semoga sukses selalu,,,

Informasi Pilihan Identitas:
Google/Blogger : Khusus yang punya Account Blogger.
Lainnya : Jika tidak punya account blogger namun punya alamat Blog atau Website.
Anonim : Jika tidak ingin mempublikasikan profile anda (tidak disarankan).

 
Template By Kunci Dunia
Back To Top