实际上是多对多表的删除与删除标志

时间:2016-02-07 02:30:40

标签: mysql sql database

关于实体表已多次询问此问题。

多对多(又称交叉,加入,转轴等)表格怎么样?

例如,我有实体表“课程”和“学生”,以及多对多表“students_taking_courses”。

删除加入记录与向表中添加标志列并将其标记为已删除有什么优缺点?什么条件会使一种方法优于另一种?

EDIT。请假设两个实体表具有代理主键。

1 个答案:

答案 0 :(得分:1)

假设使用RDBMS,当有标志而不是物理删除时:

  • 我们将在系统中保持完整的行动记录。当有一个 历史至关重要这种方法将是有益的。

另一方面

  • 通过保留记录,我们需要更多空间
  • 在重负载或高并发系统中会有更多更新 这可能是个问题。
  • 设计会更加复杂,想想我们什么时候 需要强制一个唯一约束color.upAndSelected="0xFF0000" (多对多) 表,显示课程可以由学生在一个学期一次。 拥有标志,我们需要比使用DBMS独特的更多努力 约束。

    我更喜欢使用EAV方法来获取使用旗帜的历史数据。