If you have the next many-to-many table relation:

user
-----
id
first_name
last_name

user_prefs
----------------
id
preference_name

user2user_prefs
-------------
id
user_id
user_pref_id

But if you have the consumer preference of "home page" and want somewhere to keep the particular home page url. Where would which go?

I can not put something in user_prefs because then your same return would affect everybody that has that mapping.

I'm Able To place it in user2user_prefs like so:

user2user_prefs
-------------
id
user_id
user_pref_id
value

But is the easiest way when it comes to normalization? Something does not feel quite right concerning the way im doing the work (to begin with, i can not make use of an ENUM around the new "value" since it would need to contain all values for those preferences). Any ideas?

Thanks! Stabby L

You need to consider the functional dependencies. The worthiness doesn't rely on the consumer, it doesn't rely on the userpref however it does rely on both. It might imply you need to put it within the user2user_prefs tabvle while you recommended.

If you want to make use of an enum then your value attribute look in the values in another table.

I can not put something in user_prefs because then your same return would affect everybody that has that mapping.

You are normalizing too much. The home page could be fine in user_prefs.

Actually, personally, I'd use only one table:

user
-----
id
first_name
last_name
homepage
<other settings>

Foreign key relations, especially many-to-many relations, possess a large cost in complexity. And also the job from the software developer would be to keep complexity in check.

It appears in my experience that specific kind of value doesn't really belong within the many-many relationship. If your specific property value is specific to every user, it appears that needs to be another table. It "feels" like there will be a 1-many relationship from user to a different table which has preferences unique to every user.

Edit: For that 1 to a lot of table:

user_specific_prefs
------
id
user_id
pref_name (or possibly pref_id that indicates the type)
pref_value (store www.myhome.com for example)

The consumer_id is only the foreign key to the particular user. This really is basically (inside a logical sense) adding additional posts towards the user table. But as Andomar highlights, it will add complexity. But when you've a large number of preferences like this, it might be great. However, I've come across tables with 100s of posts. I am not to imply that's good (and that i did not create them), however they complete the job and are simple to use.

You are very close.

[Edit: My formerly regarded as brilliant answer wasn't so brilliant.]

Edited tables:

users
-----
id
first_name
last_name
preferences

The preferences area would hold a serialized object or variety of the particular customers options. In PHP:

if ( is_array( $options ) || is_object( $options ) )
       serialize( $options );

Serialize Manual