Friday, October 21, 2016

Membuat Tabel dengan Foreign Key

MySQL memiliki beberapa engine database. Salah satunya adalah engine InnoDB yang memiliki dukungan terhadap ACID. Pembuatan tabel menggunakan engine InnoDB dapat membantu memberikan referential integrity.
Berikut adalah contoh membuat tabel yang memiliki foreign key dengan engine InnoDB:

mysql> CREATE TABLE models (
-> modelid smallint not null auto_increment,
-> name varchar(40) not null,
-> primary key (modelid)
-> )
-> engine=InnoDB;
Query OK, 0 rows affected (0.13 sec)
mysql> desc models;


2 rows in set (0.00 sec)
mysql> CREATE TABLE orders (
-> id SMALLINT NOT NULL PRIMARY KEY,
-> modelid SMALLINT NOT NULL,
-> description VARCHAR(40),
-> FOREIGN KEY (modelid) REFERENCES models (modelid) ON UPDATE CASCADE ON DELETE CASCADE
-> ) engine=InnoDB;
Query OK, 0 rows affected (0.18 sec)
mysql> desc orders;


3 rows in set (0.00 sec)

Pada perintah sql di atas, kita membuat dua buah tabel dengan nama models dan orders. Tabel orders memiliki foreign key modelid yang bereferensi dengan primary key tabel models, yaitu modelid.
mysql> INSERT INTO models VALUES (1, 'testsatu');
Query OK, 1 row affected (0.05 sec)
mysql> SELECT * FROM models;








1 row in set (0.00 sec)
mysql> insert into orders value (1, 1, 'deskripsisatu');
Query OK, 1 row affected (0.05 sec)

mysql> select * from orders;







1 row in set (0.00 sec)
Pada perintah sql di atas, kita memasukkan data ke tabel models dan orders. Data yang dimasukkan pada tabel orders memiliki referensi terhadap primary key pada tabel models, yaitu modelid yang nilainya adala 1.

mysql> DELETE FROM models WHERE modelid = 1;
Query OK, 1 row affected (0.06 sec)

mysql> SELECT * FROM models;
Empty set (0.00 sec)

mysql> select * from orders;
Empty set (0.00 sec)

Pada perintah sql di atas, kita menghapus data di tabel models yang memiliki modelid = 1. Secara automatis, data pada tabel orders yang memiliki modelid = 1 juga ikut terhapus untuk memastikan referential integrity

No comments:

Post a Comment