在MySQL表中什么时候应该使用“NOT NULL”,有哪些好处?

8

我有以下的rails迁移:

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?如果有的话,我不确定“非空”对数据库有什么好处。

3个回答

11

如果你的意思是性能或存储效率方面,那么并没有太大的区别。然而,将尽可能多的低级限制条件推入数据库层只是良好的实践。首先,这可以保证在Rails中出现微小错误时不会导致非空字段中的一些随机NULL数据。同样地,如果您在同一数据库上运行另一个应用程序,拥有集中维护约束条件将非常有帮助,以避免重复和冗余。


3

NOT NULL是与计算机保持联系、避免错误的另一项功能。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接