MYSQL数据库模式问题

时间:2011-06-08 03:11:26

标签: mysql database database-design

我需要就创建表或表集合来处理这个独特问题的最佳方法提出意见。基本上,我正在使用业务配置文件设计此站点。配置文件表包含所有常用的内容,例如名称,唯一ID,地址等。现在,该网站的整个想法是,它将收集一小段信息性文本。我希望允许客户每个日期存储一个,最多提前30天。该程序仅显示当前日期的转发信息,过期日期未显示。

我能真正看到这一切的唯一方法是一个由唯一ID,日期和信息性文本块组成的表,但这会产生非常广泛的查询。最终,此表将至少比业务表大20倍,因为这些业务将能够使用其唯一ID在此表中发布最多30个项目。

现在,想象一下搜索页面会显示该区域的业务列表,然后它会查询所有这些ID的新表,以便根据日期获取我想要显示的信息块。我很确定这只是一个相当密集的查询只是为了显示一个相当简单的文本块,但我想这是状态更新一般如何适用于社交网站? facebook是否将更新存储在与用户ID号相关的更新表中,或者是否有更好的方法?

我只是想更深入地了解数据库设计,所以抛弃你可能有的任何想法。

1 个答案:

答案 0 :(得分:0)

  

我能真正看到这一点的唯一方法是一个由唯一ID,日期和信息块组成的表...

假设您的意思是配置文件uniqueID,而不是文本表的唯一ID,那么您就是正确的。

帕斯卡尔在评论中说,你需要一个关于uniqueID和date的主索引。一个人只能在给定日期输入一行文本。

如果要检索某人的下一个文本行,则SQL查询将包含以下子句:

WHERE UNIQUE_ID = PROFILE.UNIQUE_ID
AND DATE >= CURRENT_DATE
LIMIT 1

由于您有唯一ID和日期的索引,因此这应该是一个快速查询。

如果您想要检索特定人员的下5个文本,您只需进行一次更改:

WHERE UNIQUE_ID = PROFILE.UNIQUE_ID
AND DATE >= CURRENT_DATE
LIMIT 5