Nilai NULL
Ini juga berarti item akan memiliki 5 id termasuk miliknya sendiri. Ini semua menyebabkan nilai nol (tampaknya tidak, tidak, yang dapat saya pahami) karena jika tempat dan harga bersifat opsional dan tidak digunakan pada satu entri ke tabel item, saya akan memiliki nilai nol di sana
Secara pribadi saya pikir ini adalah satu situasi di mana NULL
nilainya sempurna, dan saya pasti tidak akan ragu untuk memasukkan ini ke dalam desain basis data saya.
Salah satu cara saya melihat orang lain mencapai hal yang sama tanpa NULL
nilai adalah membuat catatan di tabel opsional (tempat dan harga dalam contoh Anda) dengan ID 0 yang menandakan tidak ada catatan terkait - tetapi ini hanya membuat 10 kali lebih banyak pekerjaan bagi pengembang aplikasi untuk memfilter catatan ini - JAUH lebih mudah untuk melakukan penggabungan dan jika Anda tidak mendapatkan catatan apa pun kembali, tidak ada catatan terkait di tabel opsional.
Ingatlah untuk melakukan LEFT
atau RIGHT OUTER
bergabunglah jika Anda ingin mengembalikan Item
s terlepas dari apakah mereka memiliki Place
atau Price
terkait (Anda akan mendapatkan NULL
nilai di kolom tabel opsional untuk Item
s yang tidak memiliki catatan terkait) dan INNER
bergabunglah jika Anda hanya ingin Item
s yang lakukan memiliki catatan opsional terkait.
Kunci Gabungan
Kunci komposit adalah kunci dalam tabel yang terdiri dari lebih dari satu kolom. Jika masing-masing Person
. Anda , Item
, Place
dan Price
semua memiliki ID (meskipun itu hanya angka yang bertambah secara otomatis), Anda tidak memerlukan kunci komposit - hanya kolom kunci utama di setiap tabel, dan kolom kunci asing di Item
tabel untuk setiap tabel terkait - mis. item_id
, person_id
, place_id
, price_id
. Anda menyatakan bahwa Item
memiliki ID sendiri, jadi Anda tidak memerlukan kunci komposit - cukup kunci utama pada item_id
kolom.