Di sebagian besar DB, NOT NULL
kolom akan lebih efisien dalam hal data yang disimpan karena alasan Anda menyatakan, dan juga lebih efisien untuk kueri dan indeks - jadi kecuali jika Anda ingin mengizinkan NULL dalam kolom, Anda harus melarangnya secara eksplisit.
Akan ada sedikit implikasi kinerja, karena NOT NULL
kendala tambahan akan berpotensi perlu diperiksa untuk setiap baris yang Anda pengaruhi dengan INSERT atau UPDATE apa pun, tetapi karena sebagian besar basis data relatif ringan dan ringan, ini mungkin bukan masalah (kecil bagaimanapun juga, waktu tambahan tidak akan terlihat sama sekali karena ini adalah operasi yang terikat CPU di mana sisa operasi insert / update akan terikat IO dan jadi jauh lebih penting dibandingkan dengan botol-neck) dan itu memberi Anda beberapa "gratis "pengecekan data sehingga kode Anda (atau kode orang lain) tidak dapat secara tidak sengaja meletakkan NULL di mana kode lain tidak mengharapkannya dan karenanya dapat memberikan hasil yang salah di hadapan mereka.
Sunting: Seperti yang ditunjukkan Peter dalam komentarnya di atas adalah generalisme dan mungkin tidak berlaku untuk semua DMBS, meskipun saya cukup yakin itu berlaku untuk mysql dan mssql. Komplikasi lain di area ini mungkin termasuk fitur seperti tabel jarang (seperti yang diterapkan MSSQL 2008 misalnya) yang akan mengubah dinamika kinerja kolom (tidak) yang dapat dibatalkan.
NULL
jika dan hanya jikaNULL
nilainya memiliki interpretasi untuk hal yang Anda modelkan.