2012-10-15 51 views
2

我正在开发一个Web应用程序,在实施数据库之前我需要做一些研究。我希望在开始编写代码之前,您可以帮助我做出一些很好的决定。数据库设计 - 在数据库中选择商店

今天,我有一个除其他外包含表约两百万联系人数据库

联系人: CID,姓名,电话,地址等...

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

用户存储我一个单独的数据库表

用户: UID,姓名,电子邮件等..

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

我首先想到的是做一个选择表与选择接触映射表是这样的:

选择: SID,名称,描述,UID等

SelectionContactMap: SID, cid,状态,备注等...

由于平均选择大小在1 000到100 000之间的联系人以及数千个存储许多选择的用户,我发现SelectionContactMap表格将会非常快速地增长很大。

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

我是我在错误的方式在这里?

你有什么建议可以解决这个问题吗?

  • 其他数据库?
  • MySql的具体建议,表格类型等?
  • 其他数据库设计?
  • 任何意见和建议表示赞赏。提前:)

感谢

- 托尔英格

+0

您需要多久更新一次用户选定的联系人?这种情况是否会每天发生,以便用户更新他的选择或者每个月有一次任务?你多长时间一次加载这些数据?每个用户每天10次或每周一次? – Mahdi

+0

用户每天都会根据自己的选择进行工作。更改状态并向选择中的联系人添加备注。 –

回答

0

问:什么情况如果查询变化的结果 - 例如:选定的联系人不再有选择的属性或新的联系人获得补充?

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

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

+0

我需要将选择与执行搜索时的选择完全一样。因此我不能只存储搜索参数。 –

+1

@TorIngeSchulstad然后,你将不得不存储大量的数据。 :) – podiluska