我有 UserAccount 表格以及其他表格,例如员工,学生等。我想进行审核,比如谁创建了学生记录或谁创造了一定的员工记录。在Useree,Student等所有其他表中将UserAccountId作为外键是一种好习惯吗?我正在使用hibernate如果我这样映射我必须维护UserAccount和所有其他类之间的一对多关系,所以代码增加,对我来说这是一个负担。
答案 0 :(得分:0)
它打破了所有规范化规则。请改为使用link / href表。 UserAccountID,EmployeeID(NULL),StudentID(NULL)。像这样有一个庞大的链接表。除了UserAccountID(主键和外键)之外,外键需要可以为空。
答案 1 :(得分:0)
"良好的习惯/习惯"是主观的。
如果业务域包含以下事实:创建实体的人是有意义的信息,并且这可能是最终用户的常规请求,那么添加" createdBy"确实,你的表/类属性是一种很好的做法。
了解这是否属实的最佳方法是询问产品所有者是否需要显示用户x"创建的所有员工的屏幕。如果他们说'不,只有出现问题",你有审计要求;如果他们说'是的,我们会定期使用它",它是您业务领域不可或缺的一部分。
您可能会发现,您的用户不仅想知道是谁创建了一行,还想知道是谁修改了它。在这种情况下,SO上有类似的问题。