【发布时间】: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