许多用户的许多表?

Sha*_*web 5 sql asp.net database-design

我有一个 Web 应用程序,在很多方面都可以将其视为多租户环境。我的意思是应用程序的每个用户都有自己的“自定义”环境,这些用户之间绝对没有交互。

到目前为止,我已经将 Web 应用程序构建为“单用户”环境。换句话说,我实际上并没有做任何事情来支持多用户,而只是研究了我想要从应用程序中获得的功能。这是我的问题......构建多用户环境的最佳方法是什么:

  1. 所有用户都指向同一个“核心”后端。换句话说,我构建了通过适当的 SQL 查询来分隔用户的逻辑(例如,select * from table where user='123' and attribute='456')。
  2. 每个用户都指向一个唯一的表空间,该表空间是在他们加入系统时单独构建的。在这种情况下,我将简单地为每个用户生成所有相关的 SQL 表,并为用户添加某种后缀。(例如,现在查询看起来像'select * from table_ where attribute='456')。

简而言之,这是“select * from table where USER=”和“select * from table_USER”之间的区别。

Thi*_*ter 4

动态创建表是相当肮脏和混乱的。此外,如果您有很多用户,如果您有大量的表,那么这将是一个完全混乱的情况 - 特别是如果您需要更改 n 个表而不是单个表中的某些内容。

--> 使用一张表并添加一些user_id列。通过适当的索引,这将与单独的表一样快甚至更快。