我有一个学生表和一个教育表,其中教育表的PK作为学生表的外键。但是,删除教育后,该学生将不再显示在视图中。我该如何解决这个问题?
发布于 2011-09-14 22:06:08
根据您的要求,我认为您应该首先重新考虑您的数据库结构。
回答以下问题:
education的student有意义吗?如果您在Educations表中删除了一个education,但对该education行具有FK的学生仍在您的数据库中,就会出现这种情况。这似乎是您所要求的,但它没有多大意义,因为它不包含数据integrity.
education中登记,是否允许您删除education?如果不允许,那么你只需要在一对多的关系中禁用级联删除,你的问题就解决了。
eduction,所有分配到该教育的学生是否应该保留在数据库中?这是您想要的,但根据数据库的结构,实现起来并不简单。
更简单的解决方案?
一种方法是创建3个表,而不是2个:
在1中,你存储了所有只与你的education实体有关的东西。在2中,只有与您的student实体相关的内容(请注意,他们选择的education类型并不仅仅是描述student的内容)。在3中,你存储什么学生被分配到什么教育。
这样,如果您删除一个education,分配给它的学生将不会被删除,只会删除将学生与该特定education联系在一起的信息。这样可以更容易地保持数据库的完整性。
希望这能有所帮助。
发布于 2011-09-14 22:07:45
从您提供的信息来看,我猜测您已经在数据库上强制执行了引用完整性。这意味着当您删除教育中的一行时,与其链接的学生也将被删除。
发布于 2011-09-14 22:08:27
我发现,最好不要从表中删除数据,因为其他字段依赖于这些数据。相反,您应该在表中有一个名为'IsDeleted‘的布尔值,当您想要’删除‘它时,只需将其更改为True,并且当您提取数据时,请确保过滤掉'IsDeleted’设置为'True‘的任何内容
https://stackoverflow.com/questions/7417493
复制相似问题