Quando dovrei usare & # 8220; NOT NULL & # 8221; in una tabella MySQL e ci sono dei vantaggi?

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

Domanda

Ho la seguente migrazione delle rotaie:

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

Tutti i campi che sono " NON NULL " vengono prima convalidati nel modello, quindi mi chiedo se devo preoccuparmi di consentire allow_null nella migrazione? Non sono sicuro di quali vantaggi " NOT NULL " fornisce al database, se presente.

È stato utile?

Soluzione

Non molto se intendi in termini di prestazioni o efficienza di archiviazione. Tuttavia, è buona norma inserire nel livello del database altrettanti vincoli di basso livello. Per prima cosa, garantisce che un bug sottile in Rails non porterà ad alcuni dati casuali NULL in un campo non null. Allo stesso modo, se mai esegui un'altra app sullo stesso database, sarà estremamente utile avere i vincoli in una posizione centrale per la manutenzione ed evitare la duplicazione.

Altri suggerimenti

NOT NULL è un'altra cosa in cui il computer può tenerti d'occhio e impedirti di fare errori.

Questo non sembra influenzare mySQL, ma dovresti essere a conoscenza di 2 problemi di migrazione corretti di recente (uno quando non specifichi l'impostazione predefinita)

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/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top