¿Cuándo debería estar usando & # 8220; NOT NULL & # 8221; en una tabla de MySQL y hay algún beneficio?
-
04-07-2019 - |
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.
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: // antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/