Nama : Farisan hernanda suherman
Nim : 23100266
A.
LANDASAN TEORI
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 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.
|
Yang
harus diperhatikan dalam pemberian key pada kolom-kolom dalam sebuah tabel :
- Pastikan sebuah tabel mempunyai primary key.
- Pastikan primary key tersebut mewakili unique-nya sebuah record.
- Ada baiknya menjadikan satu kolom saja untuk sebuah primary key sebagai autonumber/autoincrement mewakili beberapa kolom yang merupakan unique-nya record. Ini akan mempermudah jika ada tabel yang mengambil primary key pada tabel Barang sebagai foreign key tabel tersebut.
- 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… !!
- 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.
- Gunakan Non-unique key untuk kolom yang sering digunakan dalam proses selec
B. PERMASALAHAN
Dalam praktikum yang telah
di bahas kemarin , didapatkan suatu permsalahan yaitu pada 11 buah table yang
kita miliki:
yang harus di berikan
relasi nya pada database mysql. Agar pada proses penginputan data akan berjalan
sesuai dengan yg smestinya.
Pada database ini , saat
belum di berikan relasi antar masing-masing table, terjadi sebagai berikut :
Pada saat table barang di isikan sebuah data
Kodebarang
|
barcode
|
namabarang
|
hargajual
|
hargabeli
|
discount
|
kodejenis
|
B001
|
112256
|
Topi
|
10000
|
8000
|
-
|
J001
|
Maka data tersebut akan
masuk kedalam table barang, hal ini merupakan sebuah KESALAHAN
! .
Seharusnya data tersebut
tidak akan di terima oleh database . karena
pada field “kodejenis” data yang dimasukan tersebut belum ada pada table
jenis barang itu sendiri.
C.
PEMBAHASAN MASALAH
Dari permasalahan diatas
solusi yang diberikan adalah dengan memberikan kunci index atau foreign key ,
kemasing –masing kunci penghubung antar
table. Dari Contoh di atas field “Kodejenis” merupakan penghubung table barang
ke table jenisbarang.
Dengan memberikan syntax
sbg berikut:
Alter table barang add foreign key (kodejenis) REFERENCE
jenisbarang (kodejenis);
Catatan : Untuk
pembuatan relasi antar table pada database, hanya bisa dilakukan jika storage engine database yang kita miliki berupa
INNODB
Atau dalam phpmyadmin bisa
dilakukan Dengan memberikan kunci index , dalam contoh
ini kodejenis pada table barang:
Setelah itu pada table Barang diberikan
relasi ke table jenisbarang, karna isi dari field barang.kodejenis ada pada jenisbarang.kodejenis , caranya
sebagai berikut :
Dengan melakukan cara diatas, maka table
barang dan table jenisbarang kini telah saling berlerasi dan pada proses
penginputan data akan berjalan sesuai dengan semestinya, Kemudian lakukan
cara-cara tersebut kepada table yang saling berlerasi
Jadi jika dilakukan pengisian data field kodejenis pada table barang , tetapi pada table jenisbarang belum ada, maka proses
penginputan akan tidak berjalan.