是否应该为Web应用程序上的每个用户创建一个新表?

时间:2010-12-11 19:57:10

标签: database-design schema

我正在编写我的第一个Web应用程序,而且我对数据库知之甚少,知道架构很重要但不足以知道如何编写好的架构。

是否有用于处理存储在每个用户帐户中的信息的标准协议?我的直觉是有一个表存储用户的密钥和登录信息,以及他们的表的句柄(可能是密钥?),然后为每个用户都有一个表。

但我想知道是否存在针对每个用户拥有表的性能问题,或者这似乎是一种令人难以置信的愚蠢方式。这似乎应该是一个“已解决的问题”,因为基本上所有的网络应用程序都有用户帐户,但我无法通过搜索找到任何东西。是否存在用于存储各种Web数据的“已解决”模式的资源?

3 个答案:

答案 0 :(得分:11)

通常你不会为每个用户创建一个单独的表 - 这个解决方案不能很好地扩展。

相反,您通常会将所有用户的数据放入单个表(或每种数据类型一个表)中,并使用WHERE子句中的条件来确保用户只能读取/写入自己的数据。

答案 1 :(得分:4)

除非您的应用程序是非常自定义的,否则您将需要选择要使用的Web应用程序框架。对于简单的事情,最常见的框架工作得同样好(尽管有一些狂热的分歧)。我将假设你有一种编程语言,你觉得你是最强大的,所以我建议你让它成为你的Web框架的主要指南。按语言划分的一些常见框架(这甚至不是关闭到详尽的列表):

关于架构的问题,您可能需要查看database normalization。大多数框架已经有了处理用户创建和身份验证的工具,但一般来说,您永远不会想要为每个用户创建一个表。更常见的方法是创建一个名为users的表,它有一些id作为主键,然后用作引用其他数据的外键。

答案 2 :(得分:0)

是的,绝对不是个好主意。你应该做的是熟悉一些Web应用程序框架,因为大多数/所有框架已经为你提供了这个。好的选择是例如Django