C# 根据不同用户的角色或ID显示/允许不同用户使用特定信息的数据库
我需要一个这样的系统-他们有销售,项目管理和服务管理。每种不同类型的员工都应该能够查看其他员工的所有信息,但只能修改其工作的特定信息(例如,销售人员不能修改项目管理信息,但可以查看)。更进一步说,它们有多个位置,只有这些位置才能访问特定于该位置的数据 因为我最精通C#语言,所以我会用它来将所有内容联系在一起 我对如何做到这一点有一些不同的想法,不知道什么是最好的解决方案来完成这一切 我现在的想法是数据库C# 根据不同用户的角色或ID显示/允许不同用户使用特定信息的数据库,c#,sql,sql-server,database,C#,Sql,Sql Server,Database,我需要一个这样的系统-他们有销售,项目管理和服务管理。每种不同类型的员工都应该能够查看其他员工的所有信息,但只能修改其工作的特定信息(例如,销售人员不能修改项目管理信息,但可以查看)。更进一步说,它们有多个位置,只有这些位置才能访问特定于该位置的数据 因为我最精通C#语言,所以我会用它来将所有内容联系在一起 我对如何做到这一点有一些不同的想法,不知道什么是最好的解决方案来完成这一切 我现在的想法是数据库 CREATE TABLE Employee ( Employee_ID INT, --P
CREATE TABLE Employee
(
Employee_ID INT, --PK
Employee_Role INT, --FK
Location_ID INT --FK
);
然后,代码中的每个查询将特定于其员工角色和位置ID。我假设我将手动创建每个用户(他们只有大约15名员工),为他们分配值,然后让后端代码将查询绑定在一起
这样做的困难在于这些系统查询将变得非常糟糕(至少对我来说,我不是DBA,也从未做过类似的事情)
举个例子,如果我想展示。。比如说,我会为某个特定地点的潜在客户提供一张表……这大概是我的想法
SELECT *
FROM Prospective_Clients
INNER JOIN Employee on Prospective_Clients.Location_ID = Employee.Location_ID;
或者类似的东西。。然后要更新或插入数据,查询将在insert语句中包含Employee_角色必须等于我分配给它的任何值。当然,他们提出了问题
使用单独的表来获得权限。还可以根据角色而不是每个员工授予权限。这对最终用户和开发人员来说更合适
CREATE TABLE Role_Permission
(
RoleID int, -- fk
LocationID int, -- fk
CanAdd bit,
CanRead bit,
CanUpdate bit ,
CanDelete bit ,
Active bit
)