【问题标题】:DB design - store selection in database数据库设计 - 数据库中的存储选择
【发布时间】:2012-10-05 11:22:04
【问题描述】:

我正在开发一个 Web 应用程序,在实现数据库之前我需要做一些研究。我希望你能在我开始编码之前帮助我做出一些好的决定。

今天我有一个数据库,其中在一个表中包含大约 200 万个联系人

联系方式: cid、姓名、电话、地址等...

应用程序的用户可以根据不同的条件搜索联系人表,并获取联系人列表。

用户存储在单独的数据库表中

用户: uid、姓名、电子邮件等...

现在我想让用户能够将搜索结果存储为选择。选择必须是一个 cid 列表,代表用户获得的搜索结果中的每个联系人。当存储选择时,用户可以在选择中打开选择,并将备注,状态等打开到不同的联系人。

我的第一个想法是做一个像这样的选择表和选择-联系人映射表:

选择: sid、名称、描述、uid 等

SelectionContactMap: sid、cid、状态、注释等...

平均选择大小在 1 000 到 100 000 个联系人之间,并且有几千个用户存储了许多选择,我看到 SelectionContactMap 表将变得非常大非常快。

数据库是 MySql,应用程序是用 PHP 编写的。我的预算有限,所以我不能在任务上投入无限的硬件。

我是不是走错路了?

您有什么建议可以以最好的方式解决这个问题吗?

  • 其他数据库?
  • MySql 具体建议、表类型等?
  • 其他数据库设计?
  • 感谢任何 cmets 和建议。

提前致谢:)

-- 托尔英格

【问题讨论】:

  • 您需要多久更新一次用户选择的联系人?这是每天都会发生的用户更新他的选择还是每月一次的任务?另外,您多久加载一次此数据?每个用户每天 10 次还是每周一次?
  • 用户每天都会根据他的选择工作。更改状态并向所选联系人添加备注。

标签: mysql database database-design


【解决方案1】:

问题:如果查询结果发生变化会发生什么 - 例如:所选联系人不再具有所选属性或添加了新联系人?

如果答案是“应该更新结果集” - 那么您希望将条件存储在数据库中,而不是结果本身。

如果您需要将结果缓存一段时间,这可能由应用程序而不是数据库更好地处理。

【讨论】:

  • 我需要完全按照执行搜索时的状态存储选择。因此我不能只存储搜索参数。
  • @TorIngeSchulstad 那么您将不得不存储大量数据。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2017-06-15
  • 2019-05-23
  • 2011-11-15
  • 1970-01-01
相关资源
最近更新 更多