Quand devrais-je utiliser «NOT NULL» dans une table MySQL et y a-t-il des avantages?
-
04-07-2019 - |
Question
J'ai la migration de rails suivante:
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
Tous les champs "NOT NULL" sont d'abord validés dans le modèle, alors je me demande si j'ai besoin de m'inquiéter d'avoir allow_null dans la migration? Je ne sais pas quels sont les avantages " NOT NULL " donne à la base de données, le cas échéant.
La solution
Pas grand-chose si vous voulez dire en termes de performances ou d’efficacité du stockage. Toutefois, il est judicieux de placer autant de contraintes de bas niveau que vous le souhaitez dans la couche base de données. D'une part, cela garantit qu'un bogue subtil dans Rails ne conduira pas à des données aléatoires NULL
dans un champ non nul. De même, si vous exécutez une autre application avec la même base de données, il sera extrêmement utile de disposer des contraintes dans un emplacement central pour la maintenance et éviter les doublons.
Autres conseils
NOT NULL est une dernière chose où l'ordinateur peut vous surveiller et vous empêcher de commettre des erreurs.
Cela ne semble pas affecter mySQL, mais vous devez être conscient de 2 problèmes de migration récemment résolus (un lorsque vous ne spécifiez pas par défaut)
http: // antoniocangiano.com/2008/07/14/a-close-look-at-three-rails-21-bugs/