¿Cuándo debería estar usando & # 8220; NOT NULL & # 8221; en una tabla de MySQL y hay algún beneficio?

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

Pregunta

Tengo la siguiente migración de rieles:

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 los campos que están " NOT NULL " ¿Se validan primero en el modelo, por lo que me pregunto si debo molestarme en tener allow_null en la migración? No estoy seguro de qué beneficios " NOT NULL " da a la base de datos, en su caso.

¿Fue útil?

Solución

No mucho si te refieres en términos de rendimiento o eficiencia de almacenamiento. Sin embargo, es una buena práctica incluir tantas restricciones de bajo nivel en la capa de la base de datos. Por un lado, garantiza que un error sutil en Rails no conducirá a algunos datos aleatorios de NULL en un campo no nulo. Del mismo modo, si alguna vez ejecuta otra aplicación en la misma base de datos, será extremadamente útil tener las restricciones en un lugar central para el mantenimiento y evitar la duplicación.

Otros consejos

NOT NULL es una cosa más en la que la computadora puede vigilarte y evitar que cometas errores.

Esto no parece afectar a mySQL, pero debe tener en cuenta 2 problemas de migración recientemente solucionados (uno cuando no especifica el valor predeterminado)

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top