webapps中的用户数据库所有权

时间:2016-02-26 16:12:06

标签: database database-design

我正在开发一个webapp,每个用户都可以访问自己的数据。

考虑关键跟踪器和示例等,并假设每个用户将存储2种不同的数据类型,如下所示:

table project
id  |  name
0   |  foo
1   |  bar

table story
id  |  name  | effort
1   |  baz   | 5
2   |  ex    | 2

我能想到2个解决方案。

1)为每个表提供一个额外的user_id列,以便每个数据都绑定到其所有者

2)为每个新用户设置新的数据库架构

就个人而言,我更关注2)因为它会授予更高的安全率(不受应用程序级别约束)。

推荐的方式是什么,为什么?

1 个答案:

答案 0 :(得分:0)

解决方案2对我来说显得异乎寻常。这意味着每次添加用户时都要创建新的数据库模式。现在,如果您的用户非常少,而且新用户很少被添加,这可能是可行的。但是如果你有很多用户可以容纳,那么你需要自动化来动态创建这些模式。当然这是可能的,但您将留下支持您的开发的现有工具和框架。例如,Java Persistency API将Java类链接到表,并且不支持动态数据库定义。

另外,我对安全级别有疑问。在Web应用程序中,数据库“user”不是浏览器背后的实际人类用户,而是应用程序服务器,它拥有整个运行时的数据库连接。因此,个人用户的访问权限不是由数据库处理,而是由应用程序处理。