我有员工数据捕获应用程序。 .net和t-sql。
它有许多查找(元数据)表,用于填充UI中的下拉列表。例如:“部门”。每个查找表都有活动标志。有时这个标志设置为false。这意味着我不应该在下拉列表中加载那些不活动的“部门”。这完全适用于ADD NEW EMPLOYEE场景。但是在EDIT EMPLOYEE场景中,如果一个查找记录(Department-HR)恰好处于非活动状态但与EMPLOYEE相关联,则会出现一些问题,即下拉列表中缺少Department-HR以进行选择。
我知道问题看起来很傻。我可以通过EmployeeId并将Active +所有相关部门加载到EmployeeId,但我想知道一种更智能,更清晰的方法来处理这种情况。
答案 0 :(得分:0)
如果一个部门首先使用某个部门,那么一种方法就是防止部门被删除。如果用户在可能导致员工数据无效的情况下收到问题通知,对用户会更有帮助。
如果数据库中有Employees
和Departments
表(具有一对多或多对多关系),那么您将配置适当的外键。如果您实际上正在从Departments
表中删除部门行(而不是将其标记为非活动状态),那么如果有任何员工记录引用了正在删除的部门,那么显然会出现外键违规。
如果您将部门标记为“非活动”,那么当用户尝试将部门标记为非活动状态时,您的UI可能应该显示引用该部门的员工列表。然后,可以为他们提供用于将员工分配到替代部门的UI。
无论哪种方式,我都不确定为什么你有专门用于填充部门下拉列表的表格?为什么不直接从Departments
表填充?添加新员工屏幕和编辑员工屏幕可以查询以获取所有活动部门的列表,编辑屏幕还可以检查员工当前部门的活动状态,然后提示用户在他们输入时重新分配员工编辑屏幕。