Web邮件客户端的数据库设计

时间:2015-10-10 16:11:23

标签: sql sql-server performance database-design dynamic-tables

我正在实施一个网络邮件应用程序。只有注册用户才能发送,接收和查看电子邮件。当我开始设计数据库时,我提出了以下问题 让我们说这个应用程序具有潜在的 10万用户(可能比这更多)。 每个用户的收件箱中都可以有数千(n * 1000)的电子邮件。我的问题是什么...

是否可以动态地为每个用户创建收件箱表 OR 只为所有用户创建一个收件箱表格?

如果我只使用一个收件箱表,它会 包含 100000 *(n * 1000)条记录。如果我以其他方式只使用特定用户 电子邮件将存储在各自的收件箱表中。但是会有 数据库中的数千个收件箱表

任何人都可以提出设计线索......

1 个答案:

答案 0 :(得分:2)

这比首次出现的问题更难。通常情况下,倾向于一张桌子。

但是,我们在这里谈论用户和电子邮件。在SQL Server中(与其他数据库一样),在表级而不是行级处理权限要容易得多。所以,这是一个可能会促使你进入多个表的考虑因素。

尽管存在多个表很困难的事实:

  • 对数据结构的更改需要复制数十万次。
  • SQL旨在处理真正的大表,但不一定很多(虽然几千不应该造成问题)。
  • 简单查询,例如“每位用户有多少封未读电子邮件?”变得几乎不可能。
  • 无法对收件箱表进行外键引用。