MYSQL数据库模式问题

MYSQL数据库模式问题,mysql,database,database-design,Mysql,Database,Database Design,我需要关于创建一个表或表集合来处理这个独特问题的最佳方法的意见。基本上,我是用商业档案设计这个网站的。配置文件表包含所有常用的内容,例如名称、唯一ID、地址等。现在,这个网站的整体想法是收集一小串信息性文本。我想让客户能够存储一个日期,最多提前30天。该程序将只显示当前日期的信息,而不显示过期日期 我能真正看到这一点的唯一方法是一个由uniqueID、date和信息文本块组成的表,但这会创建相当广泛的查询。最终,该表将至少比企业表大20倍,因为这些企业将能够使用其唯一ID在该表中发布多达30个项

我需要关于创建一个表或表集合来处理这个独特问题的最佳方法的意见。基本上,我是用商业档案设计这个网站的。配置文件表包含所有常用的内容,例如名称、唯一ID、地址等。现在,这个网站的整体想法是收集一小串信息性文本。我想让客户能够存储一个日期,最多提前30天。该程序将只显示当前日期的信息,而不显示过期日期

我能真正看到这一点的唯一方法是一个由uniqueID、date和信息文本块组成的表,但这会创建相当广泛的查询。最终,该表将至少比企业表大20倍,因为这些企业将能够使用其唯一ID在该表中发布多达30个项目

现在,假设搜索页面显示了该地区的一个企业列表,然后它需要查询新表中的所有ID,以获得我想要基于日期显示的信息块。我敢肯定,仅仅为了显示一个简单的文本块,就需要进行大量的查询,但我想这就是社交网站状态更新的工作原理?facebook是否将更新存储在与用户ID号关联的更新表中,或者他们是否想出了更好的方法

我只是想对DB设计有更多的了解,所以抛开你可能有的想法

我能真正看到这一切的唯一方式是一个由唯一ID、日期和信息块组成的表格

假设您指的是配置文件唯一ID,而不是文本表的唯一ID,那么您是正确的

正如帕斯卡在评论中所说,你需要一个uniqueID和date的主索引。对于给定日期,用户只能输入一行文本

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

WHERE UNIQUE_ID = PROFILE.UNIQUE_ID
AND DATE >= CURRENT_DATE
LIMIT 1
因为您有一个关于uniqueID和date的索引,所以这应该是一个快速查询

如果你想为某个特定的人检索接下来的5条文本,你只需做一个更改:

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

嗨,雅各布。5个问题,0个接受答案。请了解这个社区是如何运作的。这个问题太开放了。不管怎样,如果在日期和(某种)区域上有适当的索引,查询可能不会那么昂贵。我不想猜测这一“信息文本字符串”是什么,但大多数企业不会在30天内输入30个项目,因此包含信息文本的表可能不会像你想象的那么大;然后进行测量和优化。在我看来,这似乎是过早的优化,而不是设计问题。