我试图决定我将如何实现这一点,我希望你的经验可以帮助我。
问题
用户使用 facebook api 登录到 webapp,这给了我一堆数据、姓名、facebook id(我使用该数字来识别我网站中的用户)、年龄以及我需要存储以供以后使用的其他一些随机数据分析。之后,用户可以索要一张票(只是一段带有在 php 脚本中生成的数字的文本),当票生成时,我存储了用户 facebook id、日期(MM/DD/YYYY),当然还有一个票的唯一ID,同一用户可以要求多张票。
解决方案1(有条理但对mysql服务器来说似乎有压力)
有两张表,一张称为users
我存储从 facebook api 检索的所有用户个人信息的位置,包括 facebook 用户 ID。第二个表调用Tickets
在哪里只存储票的创建日期和创建它的用户的 facebook 用户 ID,当然这个表有一个自动递增的唯一 ID 来标识它自己的票。
将来,我将需要显示创建票证的所有用户的列表,不仅显示他们的 facebook 用户 ID,还显示他们的个人信息,因此这意味着我需要查询tickets
我找到的每一行/票证facebook id 我需要查询users
以检索该用户的个人信息(姓名,年龄,...)。因此,如果我有 10000 个由 10000 个唯一用户创建的票证,我将需要查询我的 Mysql 服务器 10001,一个用于检索一组票证,10000 个用于检索每个用户的信息...
解决方案 2(不像我喜欢的那样有条理)
没有两张表,只有一张,我存储所有内容,票证和用户数据,所以当用户创建票证时,我不仅将与票证相关的信息存储在同一张表中,还将用户个人数据存储在同一个表中,稍后如果我想显示创建票证的用户列表我只是要做一个查询tickets
,最终将检索(如果我有 10000 张票证)我稍后将使用 php 解析的一大包数据。这样我的查询更少但数据更大。
现在我已经运行了第一个解决方案的基本实现,但现在我有点担心可伸缩性问题。
这是我users
表的一部分的外观:
这是tickets
表格:
因此,为了列出用户,我会这样进行;discount_id
fromtickets
代表一种票,所以如果需要1
我查询的类型 *票 WHERE discount_id = 1,从它给我的数组中使用winner_id
(这是票的创建者的 facebook 用户 ID)我将它压缩为face_id
from users
to检索个人信息。
我在想用第三种方法来解决这个问题,那就是结合 1 和 2,有相同的两个表,在我查询tickets
我需要的类型之后,然后我查询(只有一个)表users
,要求一个 ALL 的数组用户 IDtickets
给了我,但我不知道该怎么做以及是否值得。
哪种解决方案更好?有没有聪明的方法可以继续?谢谢!