我在数据库方面的经验有限,因此我不确定提出此问题的最佳方法,因此我将尽可能简单地对其进行分类。我使用NHibernate使用mySQL数据库构建了一个ASP.net应用程序,该数据库具有多个用户可以登录,并且所有用户都可以在同一张表上工作(比方说论坛帖子)。因此,我们有用户表和食物表。

现在,我正在寻找将这些用户分为几类的最佳方法,就像其他公司一样。因此,来自同一“公司”的用户可以登录并查看所有其他公司用户,并编辑/创建可由“公司”查看的帖子。

我正在寻找最可扩展的方法(在1000家公司中最快)。我是不是该

1:是否为具有外键的用户和帖子提供通用表?因此,所有内容都存储在同一个SQL表中,但是它们对该表的视图受公司ID限制。我认为这是最简单的方法,但是使用这种方法访问同一张表的1000家公司会慢/有问题吗?

2:为每个公司创建一个新的职位表?因此,公司的每个用户都可以访问自己的帖子表。如果有成千上万的公司,按比例扩大规模会更有效/更快吗?

快速了解最好的方法将不胜感激。但同时指出我的文档/资源将是惊人的!干杯。

最佳答案

我强烈建议选择1。
您应该使用companyID作为主键来创建公司表。使用companyID作为用户表和食物表中的外键。
这是常规方法,在大多数情况下效果很好。

在应用程序中维护1000个表将非常复杂。
用户和食物表将已经通过公司ID进行索引,因此过滤将非常快。

07-24 09:37
查看更多