我有一个表 Student
,其字段如下,
学生表(每个学生一条记录)
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_data_change_request
中插入新条目>。学生可以多次更改记录。
student_data_change_request
request_id(auto_incr PK)
old_name
new_name
old_photo_path
new_photo_path
old_signature_file_path
new_signature_file_path
现在问题来了,早期的学生被允许更改很少的字段,现在客户希望允许候选人更新更多的字段(大约 20 个字段)并添加 old
和 相应列的新
列不是优雅和首选(我猜),我最终将创建 40 列来跟踪 20 列。那么我应该如何重新设计我的 table 呢?欢迎提出建议。
最佳答案
一种方法是创建一个名为 (table)_xx 的影子表,它具有相同的列、时间、日期、更新/插入/删除标志、用户或其他任何内容,并且没有引用完整性。设置触发器以在发生任何事情时从源更新该表。
如果您有需要历史记录的真正业务需求,那么请正确执行这些操作,但此模式非常适合用作一般审计、调试和取证工具。
自动化/脚本化也非常容易,因为您只需从数据库元数据生成它。
关于mysql - 数据库设计 : Managing old and new data in database table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894387/