Disusun Oleh :
Yudi Tayudin
b. One-To-Many (1 - )
Mempunyai Pengertian setiap baris data dari tabel pertama dapat
dihubungkan kesatu baris atau lebih data pada table kedua.
c. Many-To-Many ( - )
Mempunyai pengertian satu baris atau lebih data pada table pertama
bisa dihubungkan kesatu atau lebih baris data pada table kedua.
sama.
- Tidak dibenarkan penghapusan record pada tabel utama yang telah
dihubungkan
dengan tabel yang direlasikan.
- Tidak diperbolehkan melakukan penambahan record pada tabel relasi
bila record
tersebut berisi data atau fakta yang belum ada pada tabel utama.
mysql>createdatabaseakademik;
Menggunakan database
mysql>useakademik;
mysql>createtablemahasiswa(nimchar(5),namavarchar(25),alamat
varchar(50),kode_prodichar(3),primarykey(nim));
mysql>createtableprodi(kode_prodichar(3),nama_prodivarchar(25),
jurusanvarchar(20),primarykey(kode_prodi));
mysql>altertablemahasiswaaddforeignkey(kode_prodi)references
prodi(kode_prodi);
mysql>insertintoprodivalues('P01','EksIlmuKomputer','Matematika'),
('P02','IlmuKomputer','Matematika'),('P03','D3Komsi','Matematika'),
('P04','D3Rekmed','Matematika'),('P05','D3Ellins','Fisika');
mysql>insertintomahasiswavalues('00543','Muhammad','KarangmalangA50',
'P01'),('10043','AhmadSholihun','KarangmalangD17',P02'),
('10041','Sugiharti','KarangmalangA23','P02');
mysql>select*fromprodi;
mysql>select*frommahasiswa;
Cara Kedua :
Contoh kita membuat database mahasiswa dengan 3 tabel yaitu tabel
ambilmk, mhs dan mk.
mysql>createdatabasemahasiswa;
Menggunakan database
mysql>usemahasiswa;
Berdasarkan ketiga tabel diatas kita dapat gambaran relasi yang akan
dibuat seperti dibawah ini :
Berikutnya kita membuat field pada tabel barang Pada contoh ini,
dimisalkan untuk field kodebarang kita buat sebagai primary key.
Satu hal yang terpenting, pastikan bahwa tabel yang di buat ini harus
bertipe INNODB. Karena hanya dengan tipe INNODB lah, kita bisa
membuat foreign key, relasi dan referential integrity. Untuk membuat
tabel bertipe INNODB, pilih pada bagian Storage Engines yang terdapat
di bagian bawah panel membuat tabel.
Setelah diset field dan storage engine nya sebagai INNODB, barulah kita
bisa simpan tabel barang nya.
Setelah sukses membuat table barang, kita lanjutkan membuat table yang
berikutnya. Langkahnya sama seperti saat membuat table barang. Untuk
field yang akan dijadikan sebagai foreign key ,maka harus diindex.
Contohnya saat membuat table beli , field kodesupply merupakan foreign
key,
Lalu, klik pada bagian Relation View seperti tampak pada gambar berikut
ini
Karena field kodejenis dalam tabel barang ini akan direlasikan terhadap
field kodejenis pada tabel jenisbarang (sebagai tabel master) maka
selanjutnya kita set relasinya seperti gambar di bawah ini.
Untuk membuat relasi yang lain bsa menggunakan cara sperti diatas.
Apabila kolom ON DELETE d isi dengan CASCADE, jika data pada tabel
master dihapus maka data yang berada pada tabel lain namun berelasi
dengan tabel master tersebut akan ikut hilang.
Dan apabila ON UPDATE di isi dengan CASCADE,jika data pada tabel
master diubah maka data yang berada pada tabel lain namun berelasi
dengan tabel master tersebut akan ikut berubah.
TRIGGER
Trigger berisi program yang dihubungkan dengan suatu tabel atau view
yang secara otomatis melakukan suatu aksi. ketika suatu baris di dalam
tabel atau view dikenai operasi INSERT, UPDATE atau DELETE.
Sintak :
CREATE
[DEFINER={user |CURRENT_USER}]
TRIGGERtrigger_name trigger_time trigger_event
ONtbl_name FOREACHROWtrigger_stmt
Keterangan :
operasi.
_ AFTER: Membuat trigger diaktifkan setelah dihubungkan dengan suatu
operasi.
_ trigger_event: berupa kejadian yang akan dijalankan trigger.
_ trigger_event dapat berupa salah satu dari berikut:
_ INSERT : trigger diaktifkan ketika sebuah record baru disisipkan ke dalam
tabel. Contoh: statemen INSERT, LOAD DATA, dan REPLACE.
_ UPDATE : trigger diaktifkan ketika sebuah record dimodifikasi. Contoh:
statemen UPDATE.
_ DELETE : trigger diaktifkan ketika sebuah record dihapus. Contoh:
statemen
DELETE dan REPLACE.
Catatan : trigger_event tidak merepresentasikan statemen SQL yang
diaktifkan trigger sebagai suatu operasi tabel. Sebagai contoh, trigger
BEFORE
untuk INSERT akan diaktifkan tidak hanya oleh statemen INSERT tetapi
juga
statemen LOAD DATA.
_ tbl_name: Nama tabel yang berasosiasi dengan trigger.
_ trigger_stmt: Statemen (tunggal atau jamak) yang akan dijalankan
ketika trigger
aktif.
Contoh yang akan dibahas adalah mencatat kejadian-kejadian yang terjadi
beserta waktunya pada tabel mahasiswa, dan catatan-catatan tadi
disimpan dalam tabel
yang lain, misal log_mhs. Misalkan struktur tabel log_mhs adalah
sebagai berikut.
mysql>describelog_mhs;
Contoh 1 :
mysql>createtriggerins_mhsafterinsertonmahasiswa
>foreachrowinsertintolog_mhsvalues('Tambahdata',now());
mysql>insertintomahasiswavalues('00631','Hanif','Kalasan','P01');
mysql>select*fromlog_mhs;
Dari contoh diatas dapat dilihat bahwa ketika satu record pada tabel
mahasiswa
disisipkan (insert), maka secara otomatis tabel log_mhs akan disisipkan
satu record,
yaitu kejadian Tambah data dan waktu saat record pada tabel
mahasiswa
disisipkan.
Contoh 2 :
mysql>createtriggerupdt_mhsafterupdateonmahasiswa
>foreachrowinsertintolog_mhsvalues('Ubahdata',now());
mysql>updatemahasiswasetnama='Moh.Riyan'wherenim='00543';
mysql>select*frommahasiswa;
mysql>select*fromlog_mhs;
Contoh 3 :
mysql>createtriggerdel_mhsafterdeleteonmahasiswa
>foreachrowinsertintolog_mhsvalues('Hapusdata',now());
mysql>deletefrommahasiswawherenim='00631';
mysql>select*fromlog_mhs;
Dari contoh diatas dapat dilihat bahwa ketika satu record pada tabel
mahasiswa
dihapus (delete), maka secara otomatis tabel log_mhs akan disisipkan
satu record, yaitu
kejadian Hapus data dan waktu saat record pada tabel mahasiswa
dihapus.
Dalam implementasinya untuk pekerjaan sehari-hari, pembuatan trigger
dan
tabel log, digunakan untuk mencatat kejadian suatu tabel yang dianggap
rawan serangan cracker. Dengan struktur trigger yang baik sesuai
kebutuhan, administrator dapat
melakukan pelacakan dan recovery data dengan cepat karena
mengetahui record mana
saja yang diserang. Atau, dihubungkan dengan program aplikasi (user
interface) agar
mengaktifkan alarm, jika terdapat operasi database pada waktu yang
tidak seharusnya
(misalkan malam hari).