Thanks Brenden. Everything you say makes sense, except for one key thing. Although a User and a Contact are separate concepts functionally, of course they both in reality represent a human being using your website. Since a user and their demographic properties both represent the same real world entity, I had expected a more formal link between them in the database/API.
For example, in the API how might I write a method which, for a given user account, returns their demographic profile (from the associated Contact record)?
My concern is about how Kentico maintains this link between a user and their contact data. For example, say one of my users clears all their cookies and revisits under a different IP address, does Kentico still know which is the correct contact record?
After writing this I looked at the
OM_Contact table and can see a
ContactOwnerUserID field. I wonder, does this mean a form with fields mapped to the Contact object will actually, if a User is authenticated, update all
OM_Contact records with that user's ID in the
Another question is, why do User and Contact share some fields, for example both have a first name and last name? How does Kentico ensure these are always kept in sync?