2008-10-27 3 views
8

나는이 다음 레일 마이그레이션 :MySQL 테이블에서 "NOT NULL"을 사용해야하는시기는 언제입니까?

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 

먼저 모델에서 검증 "NULL NOT"모든 필드를, 그래서 마이그레이션에 allow_null을 가지고 귀찮게해야하는 경우 궁금 해요? "NOT NULL"이 데이터베이스에 있으면 어떤 이점이 있는지 확실하지 않습니다.

답변

11

성능이나 스토리지 효율성 측면에서별로 중요하지 않습니다. 그러나 낮은 수준의 제약 조건을 데이터베이스 계층에 밀어 넣는 것이 좋습니다. 우선, Rails의 미묘한 버그가 null이 아닌 필드에 무작위로 NULL 데이터로 이어지지는 않을 것이라고 보장합니다. 마찬가지로 동일한 데이터베이스에 대해 다른 앱을 실행하는 경우 유지 관리 및 중복 방지를 위해 중앙에서 제약 조건을 적용하는 것이 매우 유용합니다.

3

NOT NULL은 컴퓨터가 사용자를 주시하고 실수를 저지를 수있는 또 다른 것입니다.

관련 문제