Saya memiliki formulir di situs web yang memiliki banyak bidang berbeda. Beberapa kolom bersifat opsional, sementara beberapa lainnya wajib. Dalam DB saya, saya memiliki tabel yang menampung semua nilai-nilai ini, apakah lebih baik praktik untuk memasukkan nilai NULL atau string kosong ke dalam kolom DB di mana pengguna tidak menaruh data apa pun?
230
Satu hal yang perlu dipertimbangkan, jika Anda pernah berencana untuk beralih database, adalah bahwa Oracle tidak mendukung string kosong . Mereka dikonversi ke NULL secara otomatis dan Anda tidak dapat meminta mereka menggunakan klausa seperti
WHERE somefield = ''
.sumber
Steve B.
: lihat pertanyaan ini: stackoverflow.com/questions/1171196/…Satu hal yang perlu diingat adalah bahwa NULL dapat membuat codepath Anda jauh lebih sulit. Dalam Python misalnya sebagian basis data adapter / ORMs peta
NULL
untukNone
.Jadi hal-hal seperti:
mungkin menghasilkan "Halo, Tidak Ada Joe Doe!" Untuk menghindarinya Anda perlu kode seperti ini:
Yang dapat membuat segalanya menjadi lebih kompleks.
sumber
Lebih baik untuk memasukkan
NULL
konsistensi dalam database Anda di MySQL. Kunci asing dapat disimpan sebagaiNULL
tetapi BUKAN sebagai string kosong.Anda akan memiliki masalah dengan string kosong di kendala. Anda mungkin harus memasukkan catatan palsu dengan string kosong yang unik untuk memenuhi batasan Kunci Asing. Latihan yang buruk kurasa.
Lihat juga: Bisakah kunci asing NULL dan / atau duplikat?
sumber
Saya tidak tahu praktik terbaik apa yang akan ada di sini, tetapi saya biasanya akan memilih null, kecuali jika Anda ingin null berarti sesuatu yang berbeda dari string kosong, dan input pengguna cocok dengan definisi string kosong Anda.
Perhatikan bahwa saya mengatakan ANDA perlu mendefinisikan bagaimana Anda ingin mereka berbeda. Terkadang masuk akal untuk membuatnya berbeda, kadang tidak. Jika tidak, pilih saja dan pertahankan. Seperti yang saya katakan, saya cenderung lebih menyukai NULL.
Oh, dan ingatlah bahwa jika kolom adalah nol, catatan cenderung muncul dalam hampir semua kueri yang memilih (memiliki klausa mana, dalam istilah SQL) yang didasarkan pada kolom itu, kecuali jika pemilihannya untuk kolom nol tentu saja.
sumber
Jika Anda menggunakan beberapa kolom dalam indeks unik dan setidaknya salah satu dari kolom ini adalah wajib (yaitu bidang formulir yang diperlukan), jika Anda mengatur kolom lain dalam indeks ke NULL, Anda mungkin berakhir dengan baris duplikat. Itu karena nilai NULL diabaikan dalam kolom unik. Dalam hal ini, gunakan string kosong di kolom lain dari indeks unik untuk menghindari baris yang digandakan.
Berikut ini beberapa kode:
Sekarang masukkan ini untuk melihatnya akan memungkinkan baris yang digandakan:
Sekarang masukkan ini dan periksa apakah itu tidak diizinkan:
Jadi, tidak ada yang benar atau salah di sini. Terserah Anda memutuskan mana yang paling sesuai dengan aturan bisnis Anda.
sumber