MySQL テーブルで「NOT NULL」を使用する必要があるのはどのような場合ですか?また、何か利点がありますか?
-
04-07-2019 - |
質問
次のレール移行があります。
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
「NOT NULL」であるすべてのフィールドは最初にモデル内で検証されるため、移行でわざわざallow_nullを使用する必要があるかどうか疑問に思っています。「NOT NULL」がデータベースにどのようなメリットをもたらすのか、もしあるのかはわかりません。
解決
パフォーマンスやストレージ効率の観点から言えば、それほど多くはありません。ただし、低レベルの制約をできるだけ多くデータベース層にプッシュすることをお勧めします。まず、Rails の微妙なバグがランダムに何らかの問題を引き起こすことはないことが保証されます。 NULL
null 以外のフィールドのデータ。同様に、同じデータベースに対して別のアプリを実行する場合、メンテナンスのために集中的な場所に制約を配置し、重複を避けることが非常に役立ちます。
他のヒント
NOT NULL は、コンピューターがユーザーを監視し、間違いを防ぐもう 1 つの機能です。
これは mySQL には影響しないようですが、最近修正された 2 つの移行の問題 (デフォルトを指定しない場合の 1 つ) に注意する必要があります。
http://antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/
所属していません StackOverflow