有点卡在这里......我有一个应用程序,让每个用户说5000行数据,并想知道这样做是对还是错:
在创建用户帐户时,会创建一个新表(UserData_ [UserID])
或者我应该为userdata设置一个表,并且其中包含一个用户标识列的所有内容?
我目前陷入困境的原因是,似乎NHibernate无法映射到动态表名而不创建另一个有很多开销AFAIK的ISessionFactory。
非常感谢任何帮助。
感谢。
答案 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个表以获取所有用户的方式是多么不合逻辑。