【发布时间】:2021-07-03 07:16:23
【问题描述】:
我有一个名为 Student 的数据库表,用于存储学生的信息,但是当学生毕业时,他们的信息不再存储在 Student 表中,但我仍然想存储该信息以供进一步使用。所以我最好的方法是将该信息推送到另一个名为 GraduatedStudent 的表中(学生表不允许存储毕业学生信息)
我还有一个名为 StudentsPayment 的表,它使用学生表的外键(学生 ID)。当我将毕业学生从学生表中推开时,StudentsPayment 收到一个错误,它无法再在学生表中找到该学生 ID。无论如何我都无法在设计中解决这个问题,所以请帮忙。
【问题讨论】:
-
只为 IsGraduated(或类似的)表添加一个标志怎么样,您将它们保留在 Student 表中但带有标志。然后,如果您需要将任何毕业生信息绑定到学生表,请创建毕业生信息表以保存学生表中未包含的任何额外信息。
-
另外,如果您收到有关找不到行的错误,这听起来好像您没有设置外键;因为如果他们这样做了,您将无法“移动”该学生(
INSERT将他们移到不同的表中,DELETE来自原始表)。 -
学生表不允许存储毕业学生信息 为什么?捍卫你的方法,不要试图“解决”它。
-
是的,我认为,在学生表中有一个外键调用 IsInRoom 存储了 Room 表的房间 ID,当我打勾时,那个房间的信息仍然存在(即研究生不应该在那个房间里,因为..他毕业了)但我还是想知道他用的是什么房间
-
而“学生”总是来来去去。学生可能无法完成学位。费用可能应该附加到一个人身上——不管那个人当前(或过去)与“学校”的关系如何。我认为您需要更彻底地分析和研究您的需求。
标签: sql sql-server database-design