代码之家  ›  专栏  ›  技术社区  ›  BAH

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

  •  2
  • BAH  · 技术社区  · 16 年前

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

    在创建用户帐户时,将创建一个新表(userdata_[userid])

    或者我应该只有一个用于用户数据的表,并且其中的所有内容都包含一个用于用户ID的列吗?

    我现在陷入困境的原因是,在创建另一个ISessionFactory之前,nhibernate似乎无法映射到动态表名,而该工厂的开销很大。

    任何帮助都将不胜感激。

    谢谢。

    4 回复  |  直到 16 年前
        1
  •  10
  •   egrunin    16 年前

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

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

    例如,如果每个用户都有5000个小部件,则将用户名和用户ID放在一个表中,将所有小部件(每个小部件都有一个用户ID)放在另一个表中。

        2
  •  4
  •   TomTom    16 年前

    一张桌子就够了。每个用户5000行,100000个用户将仅为500000.000行,而根据SQL标准,这不是TA批;)

    一般来说,DB模式应该尽可能静态。

        3
  •  1
  •   Larry Lustig    16 年前

    一个实体类型,一个表。

    因此,除非您在应用程序的其他地方有异常的需求,否则请为具有userid列的所有用户使用一个表。

        4
  •  1
  •   Younes    16 年前

    不要对一个实体类型使用不同的表。为所有用户使用一个表,这样就不会出现动态创建表的问题。 试着想象一下查询数据有多困难,查询5000个表以获取所有用户是多么不可悲。