我是MySQL新手,但在各种编程语言方面有着相当扎实的背景。
现在我正在设计我的第一个数据库。我理解MySQL表的基本功能以及关系数据库是什么,但是我无法绕过一些事情,所以我发布这个以寻求帮助(搜索没有用,我一直在使用的术语是太笼统了,我不知道如何缩小它。这就是我被困住的地方:
我想提取Facebook数据,特别是兴趣(“喜欢”)和用户位置。
如果这是一些OO语言我会为用户创建一个数据结构,其中包含所有信息(Facebook ID,兴趣作为数组,位置),但我不确定如何在MySQL中重新创建它。 / p>
目前我正在考虑使用
创建用户表然后使用
创建兴趣表我认为这是我缺乏理解的地方。我如何以一种允许我将每个兴趣映射到“喜欢”那些兴趣的每个用户的方式在MySQL中复制列表或数组的概念? / p>
非常感谢任何其他有关优秀教程网站的建议,想法或指示。我是一个有触觉的学习者,所以让我的手弄脏教程对我来说很棒,我还没找到一个涵盖这个的。
答案 0 :(得分:3)
您可以使用第三个表将interests
表链接到user
表。如果用户喜欢这种兴趣,那么只会有记录:
表 User_Interest :
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'
答案 1 :(得分:1)
这种类型的设置称为“多对多”关系。为此,您需要3个表。 2个表包含您的数据,最后一个表包含映射表 以下是多对多关系的示例,其中两个对象是学生和课程
<小时/>
您的用户表如下所示:
(ID_User, User_Name, ...)
您的兴趣表如下所示:
(ID_Interest, Interest_Name, ...)
现在您的映射表将如下所示:
(ID_User, ID_Interest)
现在让我们在表格中添加一些数据
User_Table
------------------------
ID_user | Username | ...
------------------------
1 John
2 Mark
3 Foo
4 Bar
Interest_Table
----------------------------------
ID_Interest | Interest_Name | ...
----------------------------------
001 Pop
002 Rock
003 Alternative
004 Rap
User_To_Interest (Mapping Table)
---------------------------
ID_user | ID_Interest
---------------------------
1 001
1 003
3 002
2 004
4 001
<小时/>
好的,如果您分析已经设置的内容,我们将用户映射到兴趣。映射表排序从User对象添加到兴趣对象的连线。