Quando eu deveria estar usando “NOT NULL” em uma tabela MySQL e existem quaisquer benefícios?

StackOverflow https://stackoverflow.com/questions/240544

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.

Foi útil?

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://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/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top