我想得到一些关于数据库设计的建议。具体来说,请考虑以下(假设的)场景:
软件使用时间
在这种情况下,如果员工离开公司,我还想确保将他们从
Users
中删除。表,以便他们无法再访问该软件。我可以使用 ON DELETE CASCADE
来实现这一点作为 EmployeeID
之间 FK 关系的一部分在 Employees
和 Users
.但是,我不想从
UserLog
中删除他们的详细信息。因为我有兴趣整理有关人们在软件上花费多长时间的数据以及他们不再在公司工作的事实并不意味着他们的用户行为不再相关。我只剩下一张 table
UserLog
它与我的数据库中的任何其他表都没有关系。 这是一个明智的想法吗? 浏览过书籍等/在网上搜索过我还没有遇到任何带有与其他人没有关系的表的数据库模式,所以我的直觉在这里说我的方法不可靠......
我很感激一些指导。
最佳答案
在这种情况下,我的个人偏好是通过向员工表添加“DeletedDate”列来“软删除”员工。这将允许您保持与 UserLog 表的参照完整性,并且所有员工(过去和现在)的所有详细信息都将保留在数据库中。
这种方法的缺点是您需要添加应用程序逻辑来检查活跃员工。
关于sql-server-2005 - 在数据库设计中拥有一个不引用任何其他表的表是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520127/