2008-10-27 12 views
8

tengo el siguiente carriles de la migración:¿Cuándo debería estar usando "NOT NULL" en una tabla MySQL y hay algún beneficio?

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 son "NOT NULL" se validan en el primer modelo, por lo que me pregunto si necesito la molestia de tener allow_null en la migración? No estoy seguro de qué beneficios brinda "NOT NULL" a la base de datos, si corresponde.

Respuesta

11

No es mucho si se refiere en términos de rendimiento o eficiencia de almacenamiento. Sin embargo, es una buena práctica insertar 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 aleatoriamente NULL en un campo no nulo. Del mismo modo, si alguna vez ejecuta otra aplicación contra la misma base de datos, será extremadamente útil tener las restricciones en un lugar central para el mantenimiento y evitar la duplicación.

3

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

Cuestiones relacionadas