sql - 多对多数据库设计问题

标签 sql mysql database database-design

假设您有以下多对多表关系:

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/

相关文章:

sql - 单个查询中的多个 array_agg() 调用

mysql - 搜索包含多个值的字段

mysql - 优化表格,现在无法输入长文本值

database - 如何知道 WCF DataContract 代表持久实体还是 transient 实体?

php - 联系表 7 数据库

mysql - 使用 UNION 组合两个 Select 语句

mysql - 在 MySQL 上将 blob 数据从一个表复制到另一个表

php - 如何配置wamp2的mysql服务器?

c++ - 最佳实践 - session 处理/超时

php - 验证输入是否是链接