How to add user info along with address info in a single form using 2 content types? I have a content type 'Person', one field of which has a entity reference to a content type 'Address'.

I would like an anonymous user to add their information along with their address in a single form using these two content types. What should I use to do that?  Do I have to code it or does a module or a combination of modules help me?

Also similarly, for a logged-in user, I would like them to be able to edit their information which was previously saved. How do I do that?

Notes:


I would like the anonymous users to register and also provide a few more pieces of profile information. Of course, I do limit what else they can do till they get approved by the administrator.
I could capture the address information in the same content type but the reason I am thinking of separate content type is because two people can have the same address and I don't want to have redundant information. It would also provide me a way to figure out people who live in the same household. Also, I don't want to lose the address if someone moves and decides to update their address. It looks like I can add/edit two different nodes in the same page. If not reference, how? Do I have to code for it or there are modules that can do it?
My choice of 'address' as an example was a bad one. My broader question is: Given two tables with one of the fields as a foreign key into the other, in Drupal, how can I create, update, delete corresponding rows in the two tables at the same time. The interface being user friendly UI for end user. Does I have to do this in code, or is there a single module or a set of modules that can be used to accomplish this? I am not looking for a full solution as much as pointers in the right direction.
You probably should have a look to Profile2 module. If you really want to use content types, you should have a look to Inline Entity Form and then configure permissions to be sure users can only edit their own content.

Hope that helps ;-)