php - MySQL 设计说明

标签 php mysql sql facebook join

我是 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/

相关文章:

php - 从具有每个用户限制的同一个表中获取记录

javascript - 如何格式化数据并编写 javascript 代码来显示双 y 谷歌柱形图

php - 如何添加数据库中的每条最后记录?例如。 1 += 1

php - 将 Symfony 3 中的 Doctrine 连接到 MySQL

mysql - 从多个单个连接表中选择数据未完成

mysql - 我的连接返回太多行

sql - 带有多个列的oracle汇总功能

php - 将 codesniffer 安装到 Aptana Studio 独立版本的正确方法是什么?

c++ - 我的程序从数据库中读取 0,即使有 1

mysql - 按 MYSQL 中搜索次数最多的单词排序