Когда я должен использовать & # 8220; NOT NULL & # 8221; в таблице MySQL и есть ли какие-либо преимущества?
-
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 в процессе миграции? Я не уверен, какие преимущества " НЕ NULL " дает в базу данных, если таковые имеются.
Решение
Немного, если вы имеете в виду производительность или эффективность хранения. Тем не менее, это просто хорошая практика - вставить как можно больше ваших низкоуровневых ограничений в слой базы данных. Во-первых, это гарантирует, что небольшая ошибка в Rails не приведет к случайным данным NULL
в ненулевом поле. Аналогичным образом, если вы когда-нибудь запустите другое приложение для той же базы данных, будет чрезвычайно полезно иметь ограничения в центральном месте для обслуживания и избежать дублирования.
Другие советы
NOT NULL - это еще одна вещь, когда компьютер может следить за вами и удерживать вас от ошибок.
Это, по-видимому, не влияет на mySQL, но вы должны знать о 2 недавно исправленных проблемах миграции (одна из которых не указана по умолчанию)
http: // antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/ р>