2014-04-02 38 views
0

我正在开发一个Web应用程序,该应用程序将由我的城市中的几所大学共享。职员和办公室职员的累积数量将大约为几万人在数据库中定义用户角色

我已经创建了像'入职员工','账户职员'等用户,并且定义了可以被每个用户类型访问的表格(比如'入职员'只能访问admission_table而不是payment_table)。

我已经执行了程序安全性,当大学的入学文员登录时,他可以删除admission_table中的一个条目,其中student_college字段等于admission_clerk组织。我可以通过在dbms中创建用户来实现相同目标吗?

+0

您已经为'mysql'和'sql-server'添加了标签。您的问题是否以一般意义被问到(适用于多个rdbms)?或者你只需​​要一个rdbms? – DMason

+0

我认为它是在SQL标准下。如果不是,我宁愿将它标记为mysql – user3388324

回答

0

MySQL不支持行级安全性。你可以通过使用视图来解决这个问题,但是有一些怪癖。我建议坚持在应用程序级别上实现行级安全性。

+0

从视图中删除不能(也不应该)完成。 – user3388324

1

你可以尝试繁殖admission_tables有与列一个主表admission_table

id, college_code, reference_id 

到最后一个字段引用一个学院的admission_table

所以,你将有相同的结构单独一个多admission_table_每个学院。

因此,您可以使用表角色。

这是复杂的方式,你不能得到多个表数据的聚合,但它可以工作。

UPDATE

另外,您可以防止从表中删除,并创建一个特殊的secured_delete()存储过程。因此,入场文员1不能直接删除,但可以只调用secured_delete_college1()(从注释中移出)

+0

为每所新大学创建一张桌子是否是一种很好的做法?另外,我正在寻找在这种情况下在企业中完成的实践。我将坚持应用程序逻辑中的行级别控制,如果这是事情在商业上完成的方式 – user3388324

+0

这不是好的做法,但您的要求对MySQL也不是通常的要求。 – StanislavL

+1

另外,您可以防止从表中删除并创建一个特殊的secured_delete()存储过程。因此,入场文员1不能直接删除,但可以致电secured_delete_college1()只有 – StanislavL

相关问题