0

我试图决定我将如何实现这一点,我希望你的经验可以帮助我。

问题

用户使用 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_idfromtickets代表一种票,所以如果需要1我查询的类型 *票 WHERE discount_id = 1,从它给我的数组中使用winner_id(这是票的创建者的 facebook 用户 ID)我将它压缩为face_idfrom usersto检索个人信息。

我在想用第三种方法来解决这个问题,那就是结合 1 和 2,有相同的两个表,在我查询tickets我需要的类型之后,然后我查询(只有一个)表users,要求一个 ALL 的数组用户 IDtickets给了我,但我不知道该怎么做以及是否值得。


哪种解决方案更好?有没有聪明的方法可以继续?谢谢!

4

1 回答 1

0

就像评论的 definitley 一样,尽可能分解表结构。它使生活更轻松,因此使用第一个版本。许多事情只有通过许多表才有可能。

于 2012-11-11T21:41:05.923 回答