That all sounds correct to me.  The only thing missing is the unique index in the database to guarantee that there wouldn't be multiple records, but it should be pretty safe regardless.