假设您有以下多对多表关系:
user
-----
id
first_name
last_name
user_prefs
----------------
id
preference_name
user2user_prefs
-------------
id
user_id
user_pref_id
但是假设您有“主页”的用户偏好并且需要在某个地方存储实际的主页 url。那会去哪里?
我不能在 user_prefs 中放置一个值,因为这样相同的值将适用于具有该映射的每个人。
我可以像这样把它放在 user2user_prefs 中:
user2user_prefs
-------------
id
user_id
user_pref_id
value
但就规范化而言,这是最好的方法吗?我觉得我这样做的方式不太对劲(一方面,我不能在新“值”上使用 ENUM,因为它必须包含所有偏好的所有值)。有什么想法吗?
谢谢! 刺L
最佳答案
您必须查看功能依赖性。该值不取决于用户,它不取决于用户偏好,但它确实取决于两者。这意味着您需要按照您的建议将它放在 user2user_prefs tabvle 中。
如果您需要使用枚举,则 value 属性可以在另一个表中查找值。
关于sql - 多对多数据库设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2211162/