sql-server-2005 - 在数据库设计中拥有一个不引用任何其他表的表是否明智?

标签 sql-server-2005 database-design

我想得到一些关于数据库设计的建议。具体来说,请考虑以下(假设的)场景:

  • 员工 - 保存所有员工详细信息的表
  • 用户 - 拥有访问软件的用户名和密码的员工表
  • 用户日志 - 用于跟踪用户何时登录和注销并计算的表
    软件使用时间

  • alt text

    在这种情况下,如果员工离开公司,我还想确保将他们从 Users 中删除。表,以便他们无法再访问该软件。我可以使用 ON DELETE CASCADE 来实现这一点作为 EmployeeID 之间 FK 关系的一部分在 EmployeesUsers .

    但是,我不想从 UserLog 中删除他们的详细信息。因为我有兴趣整理有关人们在软件上花费多长时间的数据以及他们不再在公司工作的事实并不意味着他们的用户行为不再相关。

    我只剩下一张 table UserLog它与我的数据库中的任何其他表都没有关系。 这是一个明智的想法吗?

    浏览过书籍等/在网上搜索过我还没有遇到任何带有与其他人没有关系的表的数据库模式,所以我的直觉在这里说我的方法不可靠......

    我很感激一些指导。

    最佳答案

    在这种情况下,我的个人偏好是通过向员工表添加“DeletedDate”列来“软删除”员工。这将允许您保持与 UserLog 表的参照完整性,并且所有员工(过去和现在)的所有详细信息都将保留在数据库中。

    这种方法的缺点是您需要添加应用程序逻辑来检查活跃员工。

    关于sql-server-2005 - 在数据库设计中拥有一个不引用任何其他表的表是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520127/

    相关文章:

    sql - 如果我使用 TEXT 数据类型存储数字会有任何不良影响

    c# - 更新前锁定记录?

    sql-server-2005 - 如何将行转置为列?

    SQL 如果没有返回行则执行此操作

    database-design - 在设计数据仓库时使用登台数据库的好处

    mysql - 哪一个对(mysql)性能更好?

    sql-server - 如何设置 SQL Server 2005 作业 CmdExec 超时

    sql-server-2005 - SQL : DELETE data from self-referencing table in specific order

    firebase - 预订应用程序的 Firestore 数据建模,可轻松查询可用性

    sqlite - 指示一对多表中的 "canonical"记录