Here’s the scenario…A person can have a user record, with or without an associated profile record. That person can also have multiple profiles that he/she “manages” (family member, etc), those profiles may or may not have user records associated with them since they may or may not use the website/app.
A profile record contains personal information such as name, dob, etc… So we can have grandma Smith’s profile with her personal info but no associated user record since she will never use the site herself, only her daughter will.
The important fields are listed below (is this a properly normalized set of tables?):
USERS: id, email, password, profile_id (FK, NULLABLE)
USER_PROFILES: id, user_id, profile_id
PROFILES: id, name, dob, user_id (FK, NULLABLE)
I guess what I’m wondering is, if I’m supposed to have BOTH a profile_id foreign key AND a user_id foreign key, are these redundant? In my site I have a profile edit page where you can edit a person’s user info and profile info on the same page so I’d like to be able to provide either a profile ID OR a user id from a referencing page and pull up the appropriate data. This is hard to do if I have no user_id in the profiles record to see if the current profile has a user record or not.
If I understood your table structure correctly, it looks like profile_id is redundant. id in USERS is your link to PROFILES, where it resides as a foreign key in user_id.
As for how you are querying it… I’m a bit concerned. Shouldn’t you require a user id and then allow the user to view and edit all associated profiles? That seems in keeping with current practice and should resolve your dilemma that made it necessary to have profile_id in USERS.
Still, even if you keep your current setup, the user id can be used to query the profiles, and the profile id can be used to query profiles, so you are set either way.