繁体   English   中英

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

[英]Which of these two approaches is better for organizing and querying data from a 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以及针对使用的每行/票证我需要查询users的Facebook ID来检索该users的个人信息(姓名,年龄,...)。 因此,如果我有10000个唯一身份用户创建的10000张票证,则需要查询Mysql服务器10001,一个用于检索票证数组,一个用于检索每个用户的信息10000 ...

解决方案2(不像我喜欢的那样组织)

有两个表,只有一个表,我在其中存储所有内容,票据和用户数据,因此,当用户创建票据时,我不仅将与票据相关的信息存储在同一表中,还将用户个人数据存储在同一表中,如果以后我想显示谁创造了票我只是要做一个单一查询用户的列表tickets将eventualy retrive(如果我有10000票)数据的大包,我以后将解析使用PHP。 这样,我的查询更少,但是数据更大。


现在,我已经运行了第一个解决方案的基本功能,但是现在我有点担心可伸缩性问题。

这是我的users表的一部分的外观: 在此处输入图片说明

这是tickets表: 在此处输入图片说明

因此,要列出用户,我会这样进行: 来自tickets discount_id代表tickets一种类型,因此如果需要类型1我可以查询*票证winner_id = 1,从数组中它使用winner_id (票证创建者的Facebook用户ID)给我,我将其winner_idusers获取face_id以检索个人信息。

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


哪种解决方案更好? 有什么明智的方式进行吗? 谢谢!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM