正确的数据库模型,每个用户都有一个表

时间:2010-03-15 15:34:38

标签: c# sql nhibernate database-design fluent-nhibernate

有点卡在这里......我有一个应用程序,让每个用户说5000行数据,并想知道这样做是对还是错:

在创建用户帐户时,会创建一个新表(UserData_ [UserID])

或者我应该为userdata设置一个表,并且其中包含一个用户标识列的所有内容?

我目前陷入困境的原因是,似乎NHibernate无法映射到动态表名而不创建另一个有很多开销AFAIK的ISessionFactory。

非常感谢任何帮助。

感谢。

4 个答案:

答案 0 :(得分:10)

亲爱的上帝,这是错误的方式。不要为每个用户创建一个表。

要知道究竟要做什么,我们需要知道5000条记录中的内容。

例如,如果每个用户都有5000个Widgets,请将Username和UserID放在一个表中,将所有Widgets(每个都有一个UserID)放在另一个表中。

答案 1 :(得分:4)

一张桌就足够了。每个用户5000行,100.000个用户只有500.000.000行 - 这并不符合SQL标准;)

通常,db模式应尽可能保持静态。

答案 2 :(得分:1)

一个实体类型,一个表。

因此,对于具有userid列的所有用户,请使用一个表,除非您在应用程序的其他位置有不寻常的要求。

答案 3 :(得分:1)

不要对一种实体类型使用不同的表。为所有用户使用一个表,然后您甚至不会遇到动态创建表的问题。 试着想象一下查询数据有多难,以及查询5000个表以获取所有用户的方式是多么不合逻辑。