Database Schema for an address book with different mailing lists
I think you should definitely keep the data normalized as you have it now.  I would go a step further and instead of updating John Smith, add a new record for his phone information and mark the old one as inactive.  Then  you have history as well.

It seems complicated but it's really not, and the DB is optimized for this sort of query.

For your update example, it would be as simple as:

UPDATE dbo.phone
Set PhoneNum = '111-555-1234'
WHERE UserId IN (SELECT UserID FROM dbo.Users WHERE Name='John Smith')