这更多的是一个理论问题。无论如何, 假设我有一个数据库(50个表) 所有这些表中的数据都应该专门保存给一个用户。 我的意思是,通常我们为每个特定于用户的表创建外键。并使用以下内容检索数据:
select Column1,Col2,Col3 from Table where UserId=@UserId
这会严重扰乱查询。是否有其他存储此类数据的方式?
最佳答案
您所指的内容有一个名称。它的名字叫multi-tenant 。该链接提供了有关 Multi-Tenancy 结构的一些一般信息。
但这一切都取决于您的 RDBMS。 Oracle 提供了一个工具,使这一切变得非常容易。
WHERE User_ID = @User_ID
成为您可以应用到表的策略。您还创建一个 protected 存储过程来更新@User_id,以确保未经授权就无法更改它。然后,对具有此类策略的表的每个查询都会在后台添加 where 子句。这是自动的,没有办法避免。
关于sql - 用户特定的数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588976/