Когда я должен использовать «NOT NULL» в таблице MySQL и есть ли какие-либо преимущества? - PullRequest
8 голосов
/ 27 октября 2008

У меня есть следующие миграции рельсов:

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» базе данных, если таковые имеются.

Ответы [ 3 ]

11 голосов
/ 27 октября 2008

Немного, если вы имеете в виду производительность или эффективность хранения. Тем не менее, это просто хорошая практика - вставить как можно больше ваших низкоуровневых ограничений в слой базы данных. Во-первых, это гарантирует, что небольшая ошибка в Rails не приведет к случайным NULL данным в ненулевом поле. Аналогичным образом, если вы когда-нибудь запустите другое приложение для той же базы данных, будет чрезвычайно полезно иметь ограничения в центральном месте для обслуживания и избежать дублирования.

3 голосов
/ 27 октября 2008

NOT NULL - это еще одна вещь, когда компьютер может следить за вами и удерживать вас от ошибок.

1 голос
/ 27 октября 2008

Это, похоже, не влияет на mySQL, но вы должны знать о 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...