去年我在大项目工作,那是教育管理系统!我的团队在开发过程中解决了很多问题。但是我们遇到了一个问题,现在我又得到了它。自动化系统,数据库
问题是:
如何设计数据库结构,如果一些记录有引用 可以从软件界面中删除?
简单的例子:假设你有表:
Students, StudentClass, Marks, Classes
。所以,如果我试图从'Classes'
表中删除记录,那将是不可能的,因为'StudentClass'
表有参照'Classes'
表。当然,可以删除依赖表中的记录(StudentClass, etc.
),然后删除'Classes'
记录,但我需要保留数据。
我发现解决方案,在其他所有引用的表中,我创建列'IsDeleted'
。 这意味着如果我想从'Classes'
表删除记录,我只需更新'IsDeleted'
列为1
。向用户展示,我使用"SELECT * .... FROM ... WHERE Classes.IsDeleted = 0".
这是我的解决方案!你能告诉我,你如何解决这些问题,与我分享你的方法,请!任何意见对我来说都会很有趣!预先感谢您的回复!
编辑:
任何其他解决方案?
当联系人被删除时,我们有时会遇到类似的问题,但我们必须保留联系人详细信息以用于报告目的。我们采取的方法是完全一样的。我们添加了一个删除到联系人表的列。到目前为止没有问题:)并且像你说的那样,知道是否有人得到了更好的解决方案会很有趣。 – justMe 2013-04-08 10:01:46