Saya memiliki dua tabel di database saya yang memiliki satu sama lain. mp_order dan mp_order_items.

mp_order memiliki informasi utama dari urutan pelanggan seperti alamat, tanggal dll. ( order_id, customer_company, customer_name, customer_adress, order_date, ... [dll.] )

mp_order_item memiliki priducts / item yang dipesan ( order_id, item_id, item_qty )

Karena order_id dan item_id dapat mengulangi (tetapi tidak dalam kombinasi) saya tidak dapat mengatur satu kolom sebagai kunci utama. Haruskah saya mengimplementasikan kolom lain sebagai pengidentifikasi unik untuk satu entri atau valid untuk memiliki tabel tanpa kunci utama?

-1
Change 5 April 2021, 06:33

2 jawaban

Jawaban Terbaik

Anda memiliki dua opsi:

  • Tentukan kunci utama pada (order_id, item_id)
  • Definisikan kunci primer sintetis, seperti kolom otomatis-bertambah.

Saya lebih suka metode kedua. Ini lebih fleksibel untuk masa depan:

  • Mungkin pesanan dapat berisi barang yang sama, tetapi dengan berbagai harga atau alamat pengiriman atau waktu pengiriman.
  • Barisnya didefinisikan secara unik dengan satu nomor, yang membuatnya lebih mudah untuk menemukannya jika Anda perlu memodifikasi baris di masa depan.
  • Baris ini lebih mudah direferensikan di tabel lain, misalnya, jika Anda memiliki tabel pengembalian atau jika item.

Tentu saja, memiliki kunci utama komposit juga berfungsi dan merupakan metode yang sangat layak untuk mengimplementasikan logika juga.

1
Gordon Linoff 5 April 2021, 12:01

Sejak, kebutuhan Anda adalah order_id dan item_id tidak dapat mengulangi dalam kombinasi makna: (ord_134, itm_123) tidak dapat mengulangi dengan sendirinya, saya percaya Anda perlu membuat https Kunci komposit.

PRIMARY KEY(order_id, item_id)

Pada dasarnya, kombinasi dari ID pesanan dan ID item adalah apa yang akan secara unik mengidentifikasi catatan dalam tabel. Ada peringatan, jika diperlukan, saat mendefinisikan kunci asing, Anda tidak dapat menautkan tabel hanya menggunakan pesanan_id. Anda perlu memasukkan semua kolom yang merupakan bagian dari kunci komposit di dalam hubungan kunci asing.

1
SNikhill 5 April 2021, 03:45