sql - 用户特定的数据库记录

标签 sql database database-design sql-server-2008-r2

这更多的是一个理论问题。无论如何, 假设我有一个数据库(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/

相关文章:

sql - 是否可以使用 "Invoke-SqlCmd"作为 Visual Studio Online 构建步骤的一部分?

python - mongoDB:对文档中的计算值执行 collection.find()

c# - "Data Massage"是什么意思?

database - 关系数据库中的分层过滤

mysql - 如何用 JOIN 重写这个语句,使其更快?

MySql 查询 : include days that have COUNT(id) == 0 but only in the last 30 days

mysql无法添加外键: error 1215 (hy000)

java - 如何从 CSV 文件的某些字段创建 h2 数据库

sql - sql 查询中的 Max()

php - 如何在PHP Mysql中实现只有一级的深度评论系统