A more "proper" way to design this is to replace accountID in the Identity table with a isAssigned bit field that defaults to false on row creation. When you assign the identity set the flag and store the identityID in the account table. You can always find out which account an identity is assigned to by joining to the account table.
While this design is more "proper" it accomplishes the same thing and the storage is almost the same (one byte to store the bit field versus four bytes to store the integer ID). Perhaps this will make the poodle happier.