我是 MySQL 的新手,但在各种编程语言方面都有相当扎实的背景。
现在我正在从头开始设计我的第一个数据库。我了解 MySQL 表的基本功能以及关系数据库是什么,但我无法理解一些事情,所以我发布此信息以寻求帮助(搜索无效,我一直使用的术语是太笼统了,我不知道如何缩小范围)。这是我卡住的地方:
我想提取 Facebook 数据,特别是兴趣(“喜欢”)和用户位置。
如果这是某种 OO 语言,我会为用户创建一个数据结构,其中包含所有信息(Facebook ID、作为数组的兴趣、位置),但我不确定如何在 MySQL 中重新创建它。
现在我正在考虑用
创建一个users表- Facebook ID(主键?)
- 姓名
- 地点
- 加入日期
然后创建一个兴趣表
- 兴趣名称(索引,按字母顺序排序?)
- 也许有这种兴趣的用户数量
- 与每个用户相关的外键
我认为这是我缺乏理解的地方。如何在 MySQL 中复制列表或数组的概念,使我能够将每个兴趣映射到“喜欢”该兴趣的每个用户?
非常感谢任何其他关于优秀教程网站的建议、想法或方向。我是一个触觉学习者,所以亲自动手学习教程对我来说非常好,我只是还没有找到涵盖这方面内容的教程。
最佳答案
您可以使用第三个表将 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'
关于php - MySQL 设计说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864973/