我对数据库的经验有限,所以我不确定提出这个问题的最佳方法,所以我将尽可能简单地分解。我已经使用 myiber 数据库构建了一个 ASP.net 应用程序 NHibernate ,其中有多个用户可以登录并且所有工作都在同桌(让我们说论坛帖子)。我们有用户表和食品表。
现在我正在寻找将这些用户分成小组的最佳方式,非常像不同的公司。所以来自同一"公司的用户"可以登录并查看所有其他公司用户,并编辑/创建可由所述公司"查看的帖子。
我正在寻找最具可扩展性(最快1000公司的公司)的方法。我应该
1:为用户和带外键的帖子设置通用表格?所以一切都存储在同一个SQL表中,但是它们对该表的看法受公司ID的限制。我认为这是最容易构建的公司,但是1000家公司使用这种方式访问同一个表格会很慢/有问题吗?
2:为每家公司创建一个新的帖子表?因此,公司的每个用户都可以访问自己的帖子表。如果有数千家公司,那么扩大规模会更有效/更快吗?
我们非常感谢您对最佳方法的快速解释。而且还指向文档/资源将是惊人的!干杯。
答案 0 :(得分:1)
我强烈建议选项1 。 您应该使用 companyID 作为主键创建公司表。在用户表和食品表中使用 companyID 作为外键。 这是常规方法,在大多数情况下效果很好。
在应用程序中维护1000个表格会非常复杂。 用户和食物表将按公司ID编制索引,因此过滤速度非常快。