Quando eu deveria estar usando “NOT NULL” em uma tabela MySQL e existem quaisquer benefícios?
-
04-07-2019 - |
Pergunta
Eu tenho o seguinte trilhos migração:
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
Todos os campos que não são "NULL" são validadas no modelo de primeira, então eu estou querendo saber se eu preciso incômodo ter allow_null na migração? Eu não estou certo de que benefícios "NOT NULL" dá ao banco de dados, se houver.
Solução
Não há muito se você quer dizer em termos de desempenho ou armazenamento eficiência. No entanto, é uma boa prática para empurrar o maior número de restrições de baixo nível para a camada de banco de dados. Por um lado, ela garante que um bug sutil no Rails não vai levar a alguns dados aleatoriamente NULL
em um campo de não-nulo. Da mesma forma, se você executar outro aplicativo contra o mesmo banco de dados, será extremamente útil ter as restrições em um lugar central para a manutenção e evitará a duplicação.
Outras dicas
NOT NULL é mais uma coisa em que o computador pode manter um olho em você e mantê-lo de cometer erros.
Isto não seemt o afetam mySQL, mas você deve estar ciente de 2 questões de migração recentemente fixos (um quando você não especificar padrão)
http: // antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/