首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理多个外键?

如何处理多个外键?
EN

Stack Overflow用户
提问于 2013-05-10 20:41:40
回答 5查看 60关注 0票数 0

我有两个表User和Favorite。

我想让一个用户行拥有来自收藏夹的多个外键

用户

代码语言:javascript
运行
复制
ID|Name |favorite
1 | tom |1&2 ??? (tom likes cookie and donuts)
2 | max |2&3 ??? (max likes donuts and peanuts)
3 | john|1&2&3 ??? (john likes cookie, donuts and peanuts)

最爱

代码语言:javascript
运行
复制
ID | name
1  |cookie
2  |donuts
3  |peanuts

什么样的结构最适合这个目的?我认为这个问题是基本的。我已经做过很多次外键结构了,

我正在使用mysql,如果可能的话,我想知道在doctrine2上做这件事的方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-10 20:45:06

您需要有一个多对多的关系表

User_Favorite UserId FavoriteId

这两个ids将构成一个复合主键。并且每个都是它们所关联的表的外键。

票数 1
EN

Stack Overflow用户

发布于 2013-05-10 20:43:29

您需要创建第三个多对多关系表,该表将包含:

User_ID,Favourite_ID

从本质上讲,你想要一个多对多的关系:一个用户有零到多个收藏。一个收藏夹对许多用户都是零。正确的方法是使用第三个表,该表由引用两个主要表(user_id、favouriablete_id)的外键组成。您可以从用户表中删除收藏夹列。不建议使用分隔列表来替换多对多。

票数 1
EN

Stack Overflow用户

发布于 2013-05-10 20:43:33

你必须为用户创建3个表,第一个是用户第二个,第三个是用户和最喜欢的关系。因此,第一个表将是

代码语言:javascript
运行
复制
ID|Name 
1 | tom 
2 | max 
3 | john

第二个表将保持原样

第三个表将是

代码语言:javascript
运行
复制
id|nameid|favouriteid
 1|1     |1
 2|1     |2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16482507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档