Home > Oracle, SQL > Primary, Foreign, Alternate Key (Oracle)

Primary, Foreign, Alternate Key (Oracle)

Key dalam Bahasa Indonesia berarti kunci, maka semakna dengan itu fungsi dari key-key yang berada pada sebuah database. Artinya setiap pintu pasti mempunyai kunci khusus untuk membukanya, begitu pula tabel dalam database. Key-key inilah yang membantu dalam pengolahan data pada sebuah tabel (insert, update, delete). Jika data yang akan dimasukkan atau diubah tidak sesuai dengan kunci pada tabel tersebut, maka data itu akan tertolak.

Secara global key-key dalam Oracle dapat dibagi sebagai berikut :

Primary Key : Key yang mengindentifikasikan bahwa setiap record pasti unique. Dalam sebuah tabel hanya diperbolehkan satu primary key, tidak lebih. Misalnya adalah tabel MURID, tidak ada murid yang memiliki NIS (Nomor Induk Siswa) yang sama dalam keadaan real, kemudian diimplementasikan dalam bentuk tabel dengan diberikan primary key pada kolom NIS.
Foreign Key : Key yang dihasilkan dari primary key dari tabel lain sebagai bentuk referensi dari tabel lain tersebut. Misalnya adalah tabel BELAJAR, dalam proses pembelajaran dibutuhkan kelas, guru dan apa yang dipelajari alias mata pelajaran, maka diimplementasikan dalam sebuah tabel bahwa dalam tabel BELAJAR terdapat foreign key (key asing) dari tabel KELAS, GURU dan MATA_PELAJARAN. Dari definisi key ini kita dapat mengetahui istilah MASTER-DETAIL.
Alternate Key (Unique Key) : Key ini sebenarnya hampir sama dengan fungsi primary key yaitu berjenis unique key. Maksudnya adalah mungkin saja primary key yang kita buat pada suatu tabel adalah merupakan autonumber (angka yang bertambah terus-menerus ketika proses insert data, sehingga tidak dimungkinkan terdapat nilai yang sama), dikarenakan tidak diperbolehkan ada dua primary key maka dapat dibantu oleh alternate key ini sebagai penanda unique-nya sebuah record dengan record lain. Dalam sebuah tabel diperbolehkan lebih dari satu alternate key.
Non Unique Key : Key yang bisa lebih dari satu dalam sebuah tabel dan tidak mendefinisikan unique antar record di dalam table tersabut. Key ini biasa digunakan untuk membantu proses pencarian (select) data pada sebuah kolom yang sering digunakan untuk proses tersebut.

Setelah mengetahui definisi “mudah” dari setiap key maka ada beberapa tips yang harus diperhatikan dalam pemberian key pada kolom-kolom dalam sebuah tabel :

  1. Pastikan sebuah tabel mempunyai primary key.
  2. Pastikan primary key tersebut mewakili unique-nya sebuah record.
  3. Ada baiknya menjadikan satu kolom saja untuk sebuah primary key sebagai autonumber mewakili beberapa kolom yang merupakan unique-nya record. Mis : tabel BELAJAR mempunyai tiga kolom sebagai primary key, yaitu : NIG, Kode_MP, dan Kelas_ID, maka ketiga kolom tersebut dapat dijadikan alternate key, dan untuk primary key-nya dibuatkan satu kolom lagi, yaitu Belajar_ID. Ini akan mempermudah jika ada tabel yang mengambil primary key pada tabel BELAJAR sebagai foreign key tabel tersebut.
  4. Jangan terlalu banyak dalam pembuatan alternate key, karena key ini akan memperlambat proses insert dan update pada tabel tersebut. Secara logika alternate key akan mengecek ke-unique-kan seluruh record dari setiap record baru yang di-insert atau perubahan data pada record. Bayangkan jika datanya cukup besar… dan banyak alternate key… !!
  5. Pilihlah dengan baik alternate key karena alternate key akan mempermudah dan mempercepat proses select jika digunakan. Maksudnyanya adalah KOLOM-KOLOM dalam alternate key tersebut yang digunakan.
  6. Gunakan Non-unique key untuk kolom yang sering digunakan dalam proses select.
  7. Gunakan penamaan key-key tersebut dengan penamaan yang baik dan mudah diidentifikasikan, seperti BELAJAR_PK (primary key tabel BELAJAR), BELAJAR#GURU_FK (foreign key pada tabel BELAJAR dari tabel GURU), dan BELAJAR_AK (alternate key tabel BELAJAR)

Untuk cara pembuatan key-key tersebut dapat dilihat dari contoh berikut :

/*==============================================================*/
/* Table: BELAJAR */
/*==============================================================*/
 

create table BELAJAR (
NIG VARCHAR2(32) not null,
KODE_MP VARCHAR2(32) not null,
KELAS_ID VARCHAR2(32) not null,
HARI VARCHAR2(32) not null,
constraint PK_BELAJAR primary key (NIG, KODE_MP, KELAS_ID),
constraint BELAJAR#GURU_FK foreign key (NIG)
references GURU (NIG),
constraint BELAJAR#MATA_PELAJARAN_FK foreign key (KODE_MP)
references MATA_PELAJARAN (KODE_MP),
constraint BELAJAR#KELAS_FK foreign key (KELAS_ID)
references KELAS (KELAS_ID)
)
/

Atau bisa ditulis dengan :

/*==============================================================*/
/* Table: BELAJAR */
/*==============================================================*/
 

create table BELAJAR (
NIG VARCHAR2(32) not null,
KODE_MP VARCHAR2(32) not null,
KELAS_ID VARCHAR2(32) not null,
HARI VARCHAR2(32) not null);

ALTER TABLE BELAJAR
ADD constraint PK_BELAJAR primary key (NIG, KODE_MP, KELAS_ID);

ALTER TABLE BELAJAR
ADD constraint BELAJAR#GURU_FK foreign key (NIG)
references GURU (NIG);

ALTER TABLE BELAJAR
ADD constraint BELAJAR#MATA_PELAJARAN_FK foreign key (KODE_MP)
references MATA_PELAJARAN (KODE_MP);

  1. April 7, 2011 at 14:57 | #1

    sebenarnya banyak sih yg mau gw tanyain…hhahaha….kaalau bisa lewat Yahoo Messenger. :)

    Makasih yaa artikel ini.

    • oracle1st
      April 14, 2011 at 20:12 | #2

      @rudy…
      mungkin enaknya kirim lewat comment aja ya… biar yang lain bisa sharing

      semoga membantu…

  2. March 13, 2012 at 11:53 | #3

    sangat membantu blog ini,,
    terima kash y ?

  3. April 23, 2012 at 08:52 | #4

    mas kalo suatu table mau di describe itu kalo di 10g gimana commandnya??

    terima kasih sebelumnya

  4. October 8, 2012 at 15:36 | #5

    gan itu GURU_FK dan MATA_PELAJARAN_FK table lain y??? thnks

    • October 8, 2012 at 15:56 | #6

      owh y gan saya mau tny lagi,, carany supaya kita tahu table BELAJAR yang di foreign key ke GURU dan MATA_PELAJARAN itu terhubung gmn y????

    • oracle1st
      December 24, 2012 at 21:20 | #7

      itu bukan tabel lain, tapi itu adalah foreign key, penamaan foreign key (FK) yang baik adalah dengan mencantumkan tabel asal dan tabel tujuannya misal contoh key pada tabel BELAJAR yang mempunyai referensi ke tabel GURU : BELAJAR#GURU_FK, artinya adalah ada NIG (Nomor Induk Guru) di tabel BELAJAR yang diikat dengan sebuah link (key) ke tabel GURU. Ini merupakan representasi dari kalimat : “Para guru mengajar para murid beberapa pelajaran”

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: