PRAKTIKUM SISTEM BASIS DATA
(Primary Key, Auto Increment & Foreign Key)
Fakhrian Fadlia Adiwijaya, S.Kom
Primary Key (Kunci Utama)
- Suatu kolom dalam tabel yang secara unik mengidentifikasi setiap baris dalam tabel tersebut.
- Hampir untuk setiap tabel, lebih baik menentukan kunci primer dari tabel tersebut.
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL PRIMARY KEY,
IDModel SMALLINT UNSIGNED NOT NULL,
DeskripsiModel VARCHAR(40)
);
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED NOT NULL,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian)
);
Primary Key (Kunci Utama)
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED NOT NULL,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian, IDModel)
);
INSERT INTO pembelian values (‘1’,’1’,’Mobil’);
INSERT INTO pembelian values (‘1’,’2,’Motor’);
INSERT INTO pembelian values (‘1’,’3’,’Truck’);
pada tabel pembelian didefinisikan kolom IDPembelian dan IDModel sebagai PRIMARY KEY, sehingga untuk tabel pembelian
tidak boleh ada 2 pasang nilai yang sama.
Unique Key (Kunci Unik)
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian),
UNIQUE KEY (IDModel)
);
Perbedaan Antara Primary Key dan Unique Key adalah kolom yang didefinisikan dengan Uique Key dapat bernilai Null
sementara Primary Key Tidak
Auto Increment
- Mengizinkan anda untuk menspesifikasikan angka-angka secara otomatis untuk kolom kunci.
CREATE TABLE katalog(
IDProduk SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
Nama VARCHAR(40) NOT NULL,
PRIMARY KEY (IDProduk)
);
Kolom IDProduk dikonfigurasi dengan tipe data SMALLINT dan dikonfigurasi sebagai kunci primer. definisi kolom juga
menyertakan opsi NOT NULL dan AUTO_INCREMENT. Sehingga, kapanpun menambahkan sebuah baris baru ke tabel
katalog, nomor baru secara otomatis ditambahkan ke kolom IDProduk, nomor dinaikkan sebanyak 1, berdasarkan nilai
tertinggi yang terdapat dalam kolom tersebut.
INSERT INTO katalog (nama) values (’Buku’);
INSERT INTO katalog (nama) values (‘Mobil’);
INSERT INTO katalog (nama) values (’Motor’);
Foreign Key (Kunci Tamu)
- Untuk mengimplementasikan relasi dalam MYSQL, diharuskan menentukan kunci tamu pada tabel yang berkaitan.
- Tentukan kunci tamu pada satu kolom atau kolom-kolom dalam tabel mengkait dengan kolom atau kolom-kolom pada
tabel yang terkait.
- Tabel yang mengkait, yaitu tabel yang berisi kunci tamu, seringkali ditunjuk sebagai child table dan tabel terkait
seringkali ditunjuk sebagai parent table.
<definisi referensi>::=
FOREIGN KEY <nama kolom> REFERENCES <nama tabel> [(<nama kolom>[{,<nama kolom>}..])]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
Foreign Key (Kunci Tamu)
Jika tabel anak berisi nilai dalam kolom yang mengkait yang nilainya sama dengan di kolom terkait pada tabel induk, baris
dalam tabel induk tidak bisa dihapus, dan nilai di kolom terkait tidak dapat diupdate. ini adalah opsi default jika klausa ON
DELETE / ON UPDATE tidak dispesifikasikan.
Opsi RESTRICT / NO ACTION
CREATE TABLE model(
IDModel SMALLINT UNSIGNED NOT NULL,
Nama_Model VARCHAR(15) NOT NULL,
Jenis_Model VARCHAR(15) NOT NULL,
PRIMARY KEY (IDModel)
);
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED NOT NULL,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian),
FOREIGN KEY (IDModel) REFERENCES model(IDModel)
ON DELETE RESTRICT / NO ACTION ON UPDATE RESTRICT / NO ACTION
);
NB :
Data pada parent table tidak dapat diubah
ataupun di hapus sebelum child table dihapus
Foreign Key (Kunci Tamu)
Baris-baris dala tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk dihapus ketika
baris-baris yang berkaitan dihapus dari tabel induk. baris-baris dalam tabel ana yang berisi nilai-nilai yang juga terdapat
dalam kolom terkait dari tabel induk diupdate ketika nilai-nilai yang berkaitan diupdate dalam tabel induk
Opsi CASCADE
CREATE TABLE model(
IDModel SMALLINT UNSIGNED NOT NULL,
Nama_Model VARCHAR(15) NOT NULL,
Jenis_Model VARCHAR(15) NOT NULL,
PRIMARY KEY (IDModel)
);
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED NOT NULL,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian),
FOREIGN KEY (IDModel) REFERENCES model(IDModel)
ON DELETE CASCADE ON UPDATE CASCADE
);
NB :
Perubahan pada parent table akan merubah
data pada child table
Foreign Key (Kunci Tamu)
Nilai-nilai dalam kolom yang mengkait dari tabel anak diset ke NULL saat baris-baris dengan data terkait dalam tabel induk
dihapus dari tabel induk atau ketik data terkait dalam tabel induk diupdate. untuk menggunakan opsi ini, semua kolom-
kolom yang mengkait dalam tabel anak harus mengijinkan nilai NULL
Opsi SET NULL
CREATE TABLE model(
IDModel SMALLINT UNSIGNED NOT NULL,
Nama_Model VARCHAR(15) NOT NULL,
Jenis_Model VARCHAR(15) NOT NULL,
PRIMARY KEY (IDModel)
);
CREATE TABLE pembelian (
IDPembelian SMALLINT UNSIGNED NOT NULL,
IDModel SMALLINT UNSIGNED,
DeskripsiModel VARCHAR(40),
PRIMARY KEY (IDPembelian),
FOREIGN KEY (IDModel) REFERENCES model(IDModel)
ON DELETE SET NULL ON UPDATE SET NULL
);
NB :
Perubahan pada parent table mengakibatkan
kolom foreign key pada child table bernilai
NULL
Mahasiswa = {nim, nama, alamat, tgl_lahir}
Orang_Tua = {nama_ortu, alamat_ortu)
Hobbi = {nama_hobbi}
Mahasiswa
nim int
nama varchar(15)
alamat varchar(30)
tgl_lahir date
Orang_Tua
nama_ortu varchar(15)
alamat_ortu varchar(30)
Hobbi
nama_hobbi varchar(10)
Dosen = {kd_dosen, nama_dos, alamat_dos}
Dosen_Tetap = {kd_dosen, nik, pangkat, tgl_masuk)
Dosen_LB = {kd_dosen, nama_kantor, alamat_kantor}
Generalisasi Dosen
TERIMA KASIH

02. primary key, foreign key

  • 1.
    PRAKTIKUM SISTEM BASISDATA (Primary Key, Auto Increment & Foreign Key) Fakhrian Fadlia Adiwijaya, S.Kom
  • 2.
    Primary Key (KunciUtama) - Suatu kolom dalam tabel yang secara unik mengidentifikasi setiap baris dalam tabel tersebut. - Hampir untuk setiap tabel, lebih baik menentukan kunci primer dari tabel tersebut. CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL PRIMARY KEY, IDModel SMALLINT UNSIGNED NOT NULL, DeskripsiModel VARCHAR(40) ); CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED NOT NULL, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian) );
  • 3.
    Primary Key (KunciUtama) CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED NOT NULL, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian, IDModel) ); INSERT INTO pembelian values (‘1’,’1’,’Mobil’); INSERT INTO pembelian values (‘1’,’2,’Motor’); INSERT INTO pembelian values (‘1’,’3’,’Truck’); pada tabel pembelian didefinisikan kolom IDPembelian dan IDModel sebagai PRIMARY KEY, sehingga untuk tabel pembelian tidak boleh ada 2 pasang nilai yang sama.
  • 4.
    Unique Key (KunciUnik) CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian), UNIQUE KEY (IDModel) ); Perbedaan Antara Primary Key dan Unique Key adalah kolom yang didefinisikan dengan Uique Key dapat bernilai Null sementara Primary Key Tidak
  • 5.
    Auto Increment - Mengizinkananda untuk menspesifikasikan angka-angka secara otomatis untuk kolom kunci. CREATE TABLE katalog( IDProduk SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, Nama VARCHAR(40) NOT NULL, PRIMARY KEY (IDProduk) ); Kolom IDProduk dikonfigurasi dengan tipe data SMALLINT dan dikonfigurasi sebagai kunci primer. definisi kolom juga menyertakan opsi NOT NULL dan AUTO_INCREMENT. Sehingga, kapanpun menambahkan sebuah baris baru ke tabel katalog, nomor baru secara otomatis ditambahkan ke kolom IDProduk, nomor dinaikkan sebanyak 1, berdasarkan nilai tertinggi yang terdapat dalam kolom tersebut. INSERT INTO katalog (nama) values (’Buku’); INSERT INTO katalog (nama) values (‘Mobil’); INSERT INTO katalog (nama) values (’Motor’);
  • 6.
    Foreign Key (KunciTamu) - Untuk mengimplementasikan relasi dalam MYSQL, diharuskan menentukan kunci tamu pada tabel yang berkaitan. - Tentukan kunci tamu pada satu kolom atau kolom-kolom dalam tabel mengkait dengan kolom atau kolom-kolom pada tabel yang terkait. - Tabel yang mengkait, yaitu tabel yang berisi kunci tamu, seringkali ditunjuk sebagai child table dan tabel terkait seringkali ditunjuk sebagai parent table. <definisi referensi>::= FOREIGN KEY <nama kolom> REFERENCES <nama tabel> [(<nama kolom>[{,<nama kolom>}..])] [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}] [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
  • 7.
    Foreign Key (KunciTamu) Jika tabel anak berisi nilai dalam kolom yang mengkait yang nilainya sama dengan di kolom terkait pada tabel induk, baris dalam tabel induk tidak bisa dihapus, dan nilai di kolom terkait tidak dapat diupdate. ini adalah opsi default jika klausa ON DELETE / ON UPDATE tidak dispesifikasikan. Opsi RESTRICT / NO ACTION CREATE TABLE model( IDModel SMALLINT UNSIGNED NOT NULL, Nama_Model VARCHAR(15) NOT NULL, Jenis_Model VARCHAR(15) NOT NULL, PRIMARY KEY (IDModel) ); CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED NOT NULL, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian), FOREIGN KEY (IDModel) REFERENCES model(IDModel) ON DELETE RESTRICT / NO ACTION ON UPDATE RESTRICT / NO ACTION ); NB : Data pada parent table tidak dapat diubah ataupun di hapus sebelum child table dihapus
  • 8.
    Foreign Key (KunciTamu) Baris-baris dala tabel anak yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk dihapus ketika baris-baris yang berkaitan dihapus dari tabel induk. baris-baris dalam tabel ana yang berisi nilai-nilai yang juga terdapat dalam kolom terkait dari tabel induk diupdate ketika nilai-nilai yang berkaitan diupdate dalam tabel induk Opsi CASCADE CREATE TABLE model( IDModel SMALLINT UNSIGNED NOT NULL, Nama_Model VARCHAR(15) NOT NULL, Jenis_Model VARCHAR(15) NOT NULL, PRIMARY KEY (IDModel) ); CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED NOT NULL, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian), FOREIGN KEY (IDModel) REFERENCES model(IDModel) ON DELETE CASCADE ON UPDATE CASCADE ); NB : Perubahan pada parent table akan merubah data pada child table
  • 9.
    Foreign Key (KunciTamu) Nilai-nilai dalam kolom yang mengkait dari tabel anak diset ke NULL saat baris-baris dengan data terkait dalam tabel induk dihapus dari tabel induk atau ketik data terkait dalam tabel induk diupdate. untuk menggunakan opsi ini, semua kolom- kolom yang mengkait dalam tabel anak harus mengijinkan nilai NULL Opsi SET NULL CREATE TABLE model( IDModel SMALLINT UNSIGNED NOT NULL, Nama_Model VARCHAR(15) NOT NULL, Jenis_Model VARCHAR(15) NOT NULL, PRIMARY KEY (IDModel) ); CREATE TABLE pembelian ( IDPembelian SMALLINT UNSIGNED NOT NULL, IDModel SMALLINT UNSIGNED, DeskripsiModel VARCHAR(40), PRIMARY KEY (IDPembelian), FOREIGN KEY (IDModel) REFERENCES model(IDModel) ON DELETE SET NULL ON UPDATE SET NULL ); NB : Perubahan pada parent table mengakibatkan kolom foreign key pada child table bernilai NULL
  • 10.
    Mahasiswa = {nim,nama, alamat, tgl_lahir} Orang_Tua = {nama_ortu, alamat_ortu) Hobbi = {nama_hobbi} Mahasiswa nim int nama varchar(15) alamat varchar(30) tgl_lahir date Orang_Tua nama_ortu varchar(15) alamat_ortu varchar(30) Hobbi nama_hobbi varchar(10)
  • 11.
    Dosen = {kd_dosen,nama_dos, alamat_dos} Dosen_Tetap = {kd_dosen, nik, pangkat, tgl_masuk) Dosen_LB = {kd_dosen, nama_kantor, alamat_kantor} Generalisasi Dosen
  • 14.