我有一张表,字段如下,
学生桌(每位学生一张记录)

student_id
Name
Parent_Name
Address_line1, Address_line2, Addess_line
Photo_path
Signature_file_path
Preferred_examcity_choice1,Preferred_examcity_choice1, Preferred_examcity_choice3
Gender
Nationality
.
.
.

我将通过web界面在注册表完成时插入此表。
现在,在web界面中还有一个模块用于更新学生数据,每次更新请求时,我都会更新Student表记录并在student中插入新条目。学生可以多次更改记录。
学生数据更改请求
request_id(auto_incr PK)
old_name
new_name
old_photo_path
new_photo_path
old_signature_file_path
new_signature_file_path

现在问题来了,以前的学生被允许更改很少的字段,现在客户希望允许候选人更新更多的字段(大约20个字段),并且为相应的列添加student_data_change_requestold列并不优雅和可取(我猜),我最终将创建40列来跟踪20列。那我该怎么重新设计我的桌子呢?欢迎提出建议。

最佳答案

一种方法是使用名为(table)xx的卷影表,该表具有相同的列、时间、日期、更新/插入/删除标志、用户或其他内容,并且没有引用完整性。设置一个触发器,以便在发生任何事情时从源更新该表。
如果您有真正的业务需求需要历史记录,那么请正确地执行这些操作,但是此模式作为一个通用的审计、调试和鉴证工具非常好。
自动化/编写脚本也非常容易,因为您只需从数据库元数据生成它。

关于mysql - 数据库设计:管理数据库表中的旧数据和新数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39894387/

10-15 21:14
查看更多