我是MySQL新手,但在各种编程语言方面都有相当扎实的背景。
现在我正在从头开始设计我的第一个数据库。我了解MySQL表的基本功能和关系数据库是什么,但是我在处理一些事情时遇到了麻烦,所以我发布了这篇文章以寻求帮助(搜索没有起作用,我使用的术语太笼统,我不知道如何缩小范围)。我被困在这里:
我想提取Facebook的数据,特别是兴趣(“喜欢”)和用户位置。
如果这是一种面向对象的语言,我会为用户创建一个包含所有信息的数据结构(Facebook ID,兴趣作为数组,位置),但我不确定如何在MySQL中重新创建。
现在我正在考虑用
Facebook ID(主键?)
姓名
位置
加入日期
然后创建一个兴趣表
兴趣名称(索引,按字母顺序排序?)
可能有一些用户对此感兴趣
与每个用户相关的外键
我想这就是我缺乏理解的原因。如何在MySQL中复制列表或数组的概念,以便将每个兴趣映射到“喜欢”该兴趣的每个用户?
任何其他的建议,想法,或良好的指导网站是非常感谢。我是一个有触觉的学习者,所以把我的手弄脏在教程上对我来说是很好的,我只是还没有找到一个涵盖这一点的教程。

最佳答案

您可以使用第三个表将interests表链接到user表。只有当用户喜欢这样的兴趣时才会有记录:
表用户兴趣:

Interest_ID
User_ID

要获取具有所有兴趣的用户的列表:
SELECT u.Name, i.Interest_Name
FROM Users AS u
INNER JOIN User_Interest AS ui ON ui.User_ID = u.ID
INNER JOIN interests AS i ON i.ID = ui.Interest_ID
WHERE u.Name = 'Tom Jones'

要获取特定兴趣和所有喜欢的用户的列表:
SELECT u.Name, i.Interest_Name
FROM Users AS u
INNER JOIN User_Interest AS ui ON ui.User_ID = u.ID
INNER JOIN interests AS i ON i.ID = ui.Interest_ID
WHERE i.Interest_Name = 'Hiking'

关于php - MySQL设计澄清,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21864973/

10-12 01:13
查看更多