我们的系统中有多个工作。这些作业列在网格中。我们有3种不同的用户类型(usertypeid
1,2,3)。对于每个用户列表不同,他可以通过从下拉列表中选择视图来过滤列表。下表中的ViewName
是需要显示的视图。为了实现此功能,开发人员已在下表的SQLExpression
中创建了以下表结构和存储的sql片段。据我说,查询不应该存储在数据库中。这种方法的优点和缺点是什么,可用的替代方案是什么?
JobListingViewID ViewName SQLExpression UserTypeID
3 All Jobs 1 = 1 3
4 Error Jobs JobStatusID IN ( 2 ) 1
5 Error Jobs JobStatusID IN ( 2 ) 2
6 Error Jobs JobStatusID IN ( 2 ) 3
7 Speech JobStatusID IN ( 1, 3, 8 ) 1
答案 0 :(得分:1)
您只需要拥有ViewName
UserTypeID
JobStatusID
组合的矩阵表,然后在查询中加入。您不需要动态SQL和额外的数据库查找。
注意:对于“所有作业”视图,您应该只有一个不同的查询放弃JOIN。这将节省一些不必要的处理,并且意味着当您添加新作业时,您不必设置权限。其余使用如下的矩阵。
ViewName JobStatusID UserTypeID Error Jobs 2 1 Error Jobs 2 2 Error Jobs 2 3 Speech 1 1 Speech 3 1 Speech 8 1
答案 1 :(得分:1)
缺点: 1.保持疼痛。 2.没有优化(缓存等)。 3.更改对象名称意味着您必须更改该表中的数据。对于少数记录来说没问题,但是一旦表格增长,你就会花更多的时间来维护这个表格。
答案 2 :(得分:0)
我猜这位开发人员是正确的,如果它适用于他(以及系统的其他部分),那么这种方法就像任何人一样好。如果它会产生问题,请在以后重做 - 性能,维护等等......