将UserAccount表与SQL Server中的所有其他表映射是一个好习惯吗?

时间:2016-06-20 10:06:44

标签: sql sql-server hibernate

我有 UserAccount 表格以及其他表格,例如员工学生等。我想进行审核,比如谁创建了学生记录或谁创造了一定的员工记录。在Useree,Student等所有其他表中将UserAccountId作为外键是一种好习惯吗?我正在使用hibernate如果我这样映射我必须维护UserAccount和所有其他类之间的一对多关系,所以代码增加,对我来说这是一个负担。

2 个答案:

答案 0 :(得分:0)

它打破了所有规范化规则。请改为使用link / href表。 UserAccountID,EmployeeID(NULL),StudentID(NULL)。像这样有一个庞大的链接表。除了UserAccountID(主键和外键)之外,外键需要可以为空。

答案 1 :(得分:0)

"良好的习惯/习惯"是主观的。

如果业务域包含以下事实:创建实体的人是有意义的信息,并且这可能是最终用户的常规请求,那么添加" createdBy"确实,你的表/类属性是一种很好的做法。

了解这是否属实的最佳方法是询问产品所有者是否需要显示用户x"创建的所有员工的屏幕。如果他们说'不,只有出现问题",你有审计要求;如果他们说'是的,我们会定期使用它",它是您业务领域不可或缺的一部分。

您可能会发现,您的用户不仅想知道是谁创建了一行,还想知道是谁修改了它。在这种情况下,SO上有类似的问题。