Kelompok Pengguna Linux Indonesia (KPLI Depok)

Menambah wawasan LINUX dengan Ngoprek bareng

Shine

KPLI Bogor, KPLI Depok dan KPLI Jakarta

Membuat rencana besar untuk Indonesia

Churches

SEAMEO SEAMOLEC

Training of Mobile Java Programming

Civic Involvement

KECERIAAN

Rasa Senang Menghampiri, Ketika Beban Terlepas dari Pikiran

Civic Involvement

KOMUNIKASI

Ketika Kata Mengubah Dunia

Civic Involvement

PENGAJIAN LINUX

Ketika Rumah dijadikan Tempat Ngoprek Linux

Civic Involvement

PEMIMPIN

Bersama Menteri Komunikasi dan Informatika

Civic Involvement

LINUX VAGANZA

Hajatan KPLI Bogor dan SMKN 3 Bogor

Civic Involvement

LINUX VAGANZA Versi 2

Hajatan KPLI Bogor dan Bina Sarana Informatika (BSI) Bogor

Civic Involvement

Senangnya berbagi Ilmu Mengenai Linux

Mengenalkan Linux di Bina Sarana Informatika (BSI) Bogor

Civic Involvement

{call}{sep1}{tundra_nux}{sep2}{status}


  • SITEMAP | BISNIS
  • Compouding own potentiality and ability to exploit the opportunity is very much relied on in achieving every successes
  • Artinya: Perpaduan antara potensi yang dimiliki dan kecekatan memanfaatkan peluang sangat diandalkan dalam merebut keberhasilan

Belajar PostgreSQL 2

Jan 17th, 2010 by Hendra Nuryuliansyah | 0

Sambungan artikel sebelumnya klik

Hubungan Antar Tabel (Relational). Dalam pembuatan database karyawan biasanya akan dilengkapi oleh data anak pada setiap karyawan dan karena setiap karyawan bisa memiliki anak lebih dari satu, maka kita perlu membuat sebuah tabel tersendiri yaitu tabel anak. Tabel anak akan terhubung dengan tabel karyawan, dan yang menghubungkan diantara kedua tabel tersebut yaitu field id dengan field id_karyawan pada tabel karyawan. Field id merupakan primary key pada tabel anak sedangkan id_karyawan merupakan primary key pada tabel karyawan. Untuk kasus ini berarti field id pada tabel anak ini bisa disebut juga foreign key. Asumsinya adalah bahwa nama anak tidak ada yang sama, maka kita harus menambahkan primary key pada field nama anak. Field nama anak ini sebagai anggota primry key.

latihan=# CREATE TABLE anak (
latihan(# id integer not null
latihan(# references karyawan,
latihan(# nama varchar(50) not null,
latihan(# tgl_lahir date,
latihan(# primary key (id, nama)
latihan(# );
NOTICE:  CREATE TABLE / PRIMARY KEY will CREATE implicit INDEX "anak_pkey" FOR TABLE "anak"
CREATE TABLE

Kata REFERENCES karyawan dimaksud adalah untuk memastikan bahwa nilai field pada id dipastikan terdapat pula pada field primary key tabel karyawan.

latihan=# INSERT INTO anak (id, nama, tgl_lahir)
latihan-# VALUES (100, 'Andika Junaedi', '8/18/1994');
INSERT 0 1

Coba untuk mengisi nama anak dengan mengacu kepada nilai unik dari id_karyawan pada tabel karyawan:

latihan=# INSERT INTO anak (id, nama, tgl_lahir)
latihan-# VALUES (101, 'Endang Wahyuni','7/7/1995'),(102, 'Famhi Akbar','5/19/1995');
INSERT 0 2

Jika field id pada tabel anak diisi dengan nilai yang tidak terdapat pada primary key pada tabel karyawan, maka akan tampil error seperti ini:

latihan=# INSERT INTO anak (id, nama, tgl_lahir)
latihan-# VALUES (103, 'Yuni Sarah','9/12/1996');
ERROR:  INSERT OR UPDATE ON TABLE "anak" violates FOREIGN KEY constraint "anak_id_fkey"
DETAIL:  KEY (id)=(103) IS NOT present IN TABLE "karyawan".

Coba sekarang Anda menghapus salah satu record pada tabel karyawan dan apa yang akan terjadi, pasti akan timbul error seperti ini:

latihan=# DELETE FROM karyawan where id_karyawan = 100;
ERROR:  UPDATE OR DELETE ON TABLE "karyawan" violates FOREIGN KEY constraint "anak_id_fkey" ON TABLE "anak"
DETAIL:  KEY (id_karyawan)=(100) IS still referenced FROM TABLE "anak".

Ini dikarenakan nilai primary key id_karyawan pada tabel karyawan sedang digunakan oleh tabel anak. Solusi dari kasus ini, tabel anak harus ditambah dengan fungsi CASCADE:

latihan=# CREATE TABLE anak (
latihan(# id integer not null
latihan(# references karyawan on delete cascade,
latihan(# nama varchar(50) not null,
latihan(# tgl_lahir date,
latihan(# primary key (id, nama)
latihan(# );
NOTICE:  CREATE TABLE / PRIMARY KEY will CREATE implicit INDEX "anak_pkey" FOR TABLE "anak"
CREATE TABLE

Coba Anda masukkan kembali data anaknya, dan ujicobalah pengapusan data karyawan berdasarkan id_karyawan, Apa yang terjadi??

latihan=# DELETE FROM karyawan where id_karyawan = 100;
DELETE 1

Bahkan kita bisa mengupdate isi field id pada tabel anak sehingga dapat mempengaruhi isi field id_karyawan pada  tabel karyawan, Sekarang Anda rubah terlebih dahulu struktur tabel anaknya menjadi seperti dibawah ini:

latihan=# CREATE TABLE anak (
latihan(# id integer not null
latihan(# references karyawan
latihan(# on delete cascade
latihan(# on update cascade,
latihan(# nama varchar(50) not null,
latihan(# tgl_lahir date,
latihan(# primary key (id, nama)
latihan(# );
NOTICE:  CREATE TABLE / PRIMARY KEY will CREATE implicit INDEX "anak_pkey" FOR TABLE "anak"
CREATE TABLE

Sekarang kita lihat terlebih dahulu semua data pada kedua table karyawan dan anak:

latihan=# select *from karyawan;
 id_karyawan |    nama
-------------+-------------
         101 | Ani Setiani
         102 | Andrianto
(2 rows)

latihan=# select *from anak;
 id  |      nama      | tgl_lahir
-----+----------------+------------
 101 | Endang Wahyuni | 1995-07-07
 102 | Famhi Akbar    | 1995-05-19
(2 rows)

Sekarang ujicoba untuk mengaupdate data id_karyawan:

latihan=# UPDATE karyawan
latihan-# set id_karyawan = 103
latihan-# where id_karyawan = 102;
UPDATE 1

Sekarang lihat apakah yang terjadi pada kedua tabel terserbut, Apakah ada perubahan data pada id_karyawan??

latihan=# select *from karyawan;
 id_karyawan |    nama
-------------+-------------
         101 | Ani Setiani
         103 | Andrianto
(2 rows)

latihan=# select *from anak;
 id  |      nama      | tgl_lahir
-----+----------------+------------
 101 | Endang Wahyuni | 1995-07-07
 103 | Famhi Akbar    | 1995-05-19
(2 rows)

number of view: 313
Share and Enjoy:
  • Print
  • Facebook
  • Google Bookmarks
  • PDF
  • RSS
  • Twitter
  • email
  • Blogosphere News
  • Add to favorites
  • MySpace
  • blogmarks
  • Digg
  • MSN Reporter
  • Yahoo! Bookmarks

Leave a Reply

:dead: :pray: :clinguk2: :tob: :hoho: :jedug: :lempar: :mikir: :nyembah: :plis: :puyeng: :sikut: :sliweran: :diem: :evillaugh: :gemes: :hore: :lirik: :beer: :ngacir: :matabelo: :mataduitan: :mlorok: :nangis: :ngakak: :ngelamun: :ngikik: :foto: :orasi: :cuek: :pusing: :miao: :speker: :telp: :hmm: :jutek: :hey: :siul: :lewe: :say: more »

CommentLuv Enabled

Comment moderation is enabled. Your comment may take some time to appear.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Powered by Olark