عندما يجب أن يكون باستخدام "NOT NULL" في الجدول ماي و هل هناك أي فوائد ؟

StackOverflow https://stackoverflow.com/questions/240544

سؤال

لدي التالية القضبان الهجرة:

create_table :articles do |t|
  t.integer :user_id, :allow_null => false
  t.integer :genre_id, :allow_null => false
  t.string :url, :limit => 255, :allow_null => false
  t.string :title, :limit => 60, :allow_null => false
  t.text :summary, :limit => 350, :allow_null => false
  t.integer :votes_count, :default => 0
  t.datetime :published_at, :default => nil
  t.timestamps
end

جميع الحقول التي "ليست فارغة" يتم التحقق من صحة النموذج الأولى, لذلك أنا أتساءل إذا كنت بحاجة إلى عناء allow_null في الهجرة ؟ لست متأكدا ما هي الفوائد "NOT NULL" يعطي قاعدة البيانات إن وجدت.

هل كانت مفيدة؟

المحلول

ليس كثيرا إذا كنت تقصد من حيث الأداء أو كفاءة التخزين.ومع ذلك, انها مجرد الممارسة الجيدة إلى دفع العديد من المنخفض القيود في طبقة قاعدة البيانات.لشيء واحد, فإنه يضمن أن علة خفية في القضبان لن يؤدي إلى بعض بشكل عشوائي NULL البيانات في غير-null المجال.وبالمثل ، إذا كنت من أي وقت مضى تشغيل تطبيق آخر ضد نفس قاعدة البيانات ، سيكون من المفيد للغاية أن القيود في مكان مركزي صيانة وتجنب الازدواجية.

نصائح أخرى

لا باطل هو واحد أكثر الشيء حيث يمكن للكمبيوتر إبقاء العين على لك تمنعك من الوقوع في الخطأ.

هذا لا seemt o تؤثر على الخلية ، ولكن يجب أن يكون على بينة من 2 في الآونة الأخيرة ثابتة قضايا الهجرة (واحد عندما كنت لا تحديد الافتراضي)

http://blog.codefront.net/2008/05/04/living-on-the-edge-of-rails-19-change_table-for-migrations-and-more/

http://antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top