这两种方法中的哪一种更适合组织和查询mysql中的数据?

时间:2012-11-11 21:35:09

标签: php mysql

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

问题

用户使用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(不像我喜欢的那样组织)

有两个表的Intead,只有一个,我存储了所有内容,票据和用户数据,因此当用户创建票证时,我不仅存储与票证相关的信息,还存储同一个表中的用户个人数据,稍后如果我想显示创建票证的用户列表我只是要向tickets进行单个查询,该查询将最终(如果我有10000张票)重新获得一大堆数据,我稍后会解析用php。这些方式我的查询次数较少但数据量较大。


现在我已经运行了第一个解决方案的基本实现,但现在我有点担心可扩展性问题。

这是users表的一部分: enter image description here

这是tickets表: enter image description here

因此,为了列出用户,我这样做;来自discount_id的{​​{1}}代表一种故障单,所以如果需要类型tickets我查询*故障单WHERE discount_id = 1,它从数组中使用1(这是票证创建者的Facebook用户ID)我将其从winner_id face_id加以回复个人信息。

我正在考虑以第三种方式来解决这个问题,有点结合1和2,有两个相同的表,在我查询users后我需要的类型,然后我查询(只有一个)表tickets要求输入用户ID users给我的所有数组,但我不知道如何执行此操作以及是否值得。


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

1 个答案:

答案 0 :(得分:0)

如果可以,请评论definitley分解表结构。它使生活更轻松,因此使用第一个版本。许多事情只有许多表才有可能。

相关问题