Terkadang Anda mungkin perlu membuat kunci primer gabungan yang terdiri dari beberapa bidang, untuk tabel database. Berikut cara membuat kunci primer komposit di MySQL
Cara Membuat Kunci Utama Komposit di MySQL
Berikut langkah-langkah membuat composite primary key di MySQL. Anda dapat membuat kunci utama gabungan, baik selama pembuatan tabel menggunakan pernyataan CREATE TABLE, atau setelah membuat tabel menggunakan pernyataan ALTER TABLE. Kami akan melihat kedua contoh ini untuk membuat kunci primer komposit di MySQL
Contoh Kunci Utama Komposit MySQL
Berikut cara membuat kunci primer komposit di MySQL selama pembuatan tabel. Katakanlah Anda ingin membuat tabel pesanan [id_pesanan, id_produk, jumlah] dengan kunci utama komposit [id_pesanan, id_produk]
mysql> CREATE TABLE orders_list [ order_id INT, product_id INT, amount INT, PRIMARY KEY [order_id, product_id] ] ; mysql> describe orders_list; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int[11] | NO | PRI | 0 | | | product_id | int[11] | NO | PRI | 0 | | | amount | int[11] | YES | | NULL | | +------------+---------+------+-----+---------+-------+
Dalam kueri di atas, kami telah membuat kunci primer gabungan [order_id, product_id]. Pada output di atas, Anda akan melihat PRI disebutkan di kolom Key untuk order_id, product_id menunjukkan bahwa keduanya adalah bagian dari primary key
Bonus Baca. Cara Memotong Tabel di MySQL
Tambahkan Kunci Utama Komposit di Tabel yang Ada
Berikut contoh cara menambahkan composite primary key pada tabel yang sudah ada. Katakanlah Anda memiliki tabel berikut
mysql> CREATE TABLE new_orders [ order_id INT, product_id INT, amount INT ] ; mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int[11] | YES | | NULL | | | product_id | int[11] | YES | | NULL | | | amount | int[11] | YES | | NULL | | +------------+---------+------+-----+---------+-------+_
Seperti yang Anda lihat tabel new_orders tidak memiliki primary key. Inilah kueri SQL untuk menambahkan kunci primer komposit menggunakan ALTER TABLE
Bonus Baca. TAMPILAN DROP MySQL
mysql> alter table new_orders ADD PRIMARY KEY [order_id, product_id]; mysql> describe new_orders; +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | order_id | int[11] | NO | PRI | 0 | | | product_id | int[11] | NO | PRI | 0 | | | amount | int[11] | YES | | NULL | | +------------+---------+------+-----+---------+-------+
Perlu diketahui, Anda tidak dapat membuat kunci primer komposit MySQL dengan penambahan otomatis
Bonus Baca. Cara Membuat Indeks di MySQL
Indeks Kunci Utama Komposit MySQL
Anda dapat membuat indeks untuk kunci utama gabungan yang menggunakan bidang yang sama yang ada di kunci utama gabungan Anda
Kunci komposit di MySQL adalah kombinasi dari dua atau lebih dari dua kolom dalam tabel yang memungkinkan kita untuk mengidentifikasi setiap baris tabel secara unik. Ini adalah jenis kunci kandidat yang dibentuk oleh lebih dari satu kolom. MySQL menjamin keunikan kolom hanya jika digabungkan. Jika diambil secara individual, keunikan itu tidak bisa dipertahankan
Kunci apa pun seperti kunci primer, kunci super, atau kunci kandidat dapat disebut kunci komposit ketika digabungkan dengan lebih dari satu atribut. Kunci komposit berguna saat tabel perlu mengidentifikasi setiap record dengan lebih dari satu atribut secara unik. Kolom yang digunakan dalam kunci komposit dapat memiliki tipe data yang berbeda. Dengan demikian, tidak diperlukan tipe data yang sama untuk kolom untuk membuat kunci komposit di MySQL
Kunci komposit dapat ditambahkan dengan dua cara
- Menggunakan Pernyataan CREATE
- Menggunakan Pernyataan ALTER
Mari kita lihat kedua cara tersebut secara rinci
Kunci Komposit Menggunakan Pernyataan CREATE
Di sini, kita akan memahami cara kerja kunci komposit di MySQL. Mari kita buat tabel "Produk" terlebih dahulu, menggunakan pernyataan berikut
Dalam pernyataan di atas, kami telah membuat primer komposit dengan nama kolom Name dan Manufacturer
Kami dapat memverifikasi hal yang sama menggunakan perintah seperti di bawah ini
Setelah eksekusi sukses, kita bisa melihat bahwa kolom Key memiliki dua PRI. Artinya kita telah berhasil menambahkan composite primary key pada kolom Name dan Manufacturer
Selanjutnya, kita perlu memasukkan nilai ke dalam tabel ini seperti yang diberikan di bawah ini
Selanjutnya, jalankan perintah di bawah ini untuk menampilkan data tabel
Ini akan memberikan output di bawah ini
Sekali lagi jalankan pernyataan insert di bawah ini untuk memahami kunci komposit dengan lebih jelas
Pada output di bawah ini, kita dapat melihat bahwa jika kita mencoba menambahkan kombinasi dari nama produk dan pabrikan yang sama, maka akan muncul kesalahan yang mengatakan bahwa. Entri duplikat untuk produk. utama
Jika kita mengeksekusi pernyataan penyisipan kedua, itu akan berhasil ditambahkan ke dalam tabel. Itu karena kita bisa memasukkan sabun dalam jumlah berapa pun di kolom produk, tetapi kolom pabrikan harus berbeda
Oleh karena itu, kita dapat mengatakan bahwa kunci komposit selalu memaksakan keunikan kolom tabel tersebut, yang memiliki dua kunci
Kunci Komposit Menggunakan Pernyataan ALTER TABLE
Pernyataan ALTER selalu digunakan untuk melakukan modifikasi pada tabel yang sudah ada. Terkadang diperlukan untuk menambahkan kunci komposit untuk mengidentifikasi secara unik setiap catatan tabel dengan lebih dari satu atribut. Dalam hal ini, kami menggunakan pernyataan ALTER TABLE
Mari kita buat tabel "Siswa" menggunakan pernyataan di bawah ini
Sekarang, jalankan pernyataan ALTER TABLE untuk menambahkan kunci primer komposit sebagai berikut
Kami dapat memverifikasi kunci primer komposit yang ditambahkan ke tabel atau tidak menggunakan perintah berikut
Pada output, kita dapat melihat bahwa kolom key memiliki PRI, yang berarti kita telah berhasil menambahkan composite primary key ke kolom stud_id dan subject.