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

千行数据库的最佳设计是什么

  •  5
  • balexandre  · 技术社区  · 14 年前

    我要开始一个新的工作了 这将只是管理公司下的用户。

    • 每个公司都有一个管理区,可以管理用户
    • 客户相信大约有50家公司要成立

    我的主要问题是

    我应该创建吗 基于公司的表格?喜欢

    users_company_0001 users_company_0002 users_company_0003 ...

    JOIN 会做的把戏,虽然它是更昂贵的(时间),它将有工作的主要图片,这将永远不需要。

    users 1 250 000

    我正在考虑第一个选项,但是,我不知道如何在这样的布局上使用实体框架。。。我可能需要回到90年代,手工生成数据逻辑层。

    它将是一个简单的调用存储程序,包含公司Id

    ASP.NET (可能是MVC,我仍在努力解决这个问题,因为我所有的知识都在网络表单上,虽然我看到了Scott Hanselman MVC的视频-接缝很容易-但我知道这不会那么容易,因为问题会来,我会花更多的时间来解决它们),加上 Microsoft SQL

    4 回复  |  直到 14 年前
        1
  •  9
  •   Joe Stefanelli    14 年前

    尽管您已经将此描述为1-many关系,但我仍然会设计DB as many to many以防止将来需求的变化。比如:

    alt text

        2
  •  7
  •   mattmc3    10 年前

    company users 没有分区的表。它总是在您需要它的时候出现,但是您不应该担心您的表—选择满足您需要的最简单的模式。如果您想做一些事情来优化性能,那么几乎可以肯定的是,您的瓶颈将是您的磁盘。不要买大而慢的磁盘。给自己准备一堆小的、高转速的磁盘,并尽可能多地将数据分散在这些磁盘上,不要与日志和数据共享磁盘。对于数据库,使用良好的硬件、良好的磁盘子系统和适当的索引几乎总是可以获得更好的性能。不要为了预期性能而妥协和过分复杂化你的模式-你会后悔的。我见过很多大型数据库需要这样的东西,但你的不是。

        3
  •  3
  •   Beth    14 年前

    我应该基于公司创建表吗?

    喜欢

    users_company_0001 users_company_0002 users_company_0003
    

    companyID  companyName, contactID
    

    或者我应该创建一个users表来拥有(50 x 25000)1250000个用户(并且还在增长)

        4
  •  1
  •   NealB    14 年前

    我认为应该为公司和用户创建单独的表。那么 连接二者的第三个表:CompanyAdmin。比如:

    • 单位 ( ,公司名称,…)
    • 用户 用户Id ,用户名,…)
    • 公司管理员 公司id

    需要管理的表的数量。在你需要的地方,这通常是个糟糕的设计 在向系统中添加新数据(公司)时修改数据库(即添加表)。

    通过适当的索引,连接在包含 几百万行应该不是问题。

    公司、用户或他们之间的关系,这个设置应该