只是为了确保我正确解释了您的问题:您当前有一个包含字段的表,
username, email, firstname, middlename, familyname, dob, password, country
并且您想要存储 firstname 和 familyname 列的历史记录。那是对的吗?
如果是这样,我建议在您的表中添加时间有效性列(valid_from、valid_until),并为每次更改插入新行,将当前记录的“valid_from”设置为 now(),并将 valid_until 设置为 null。您还将此用户的最后一行的 valid_until 列设置为 now()。当前记录是 valid_until 为空的记录。
这种设计是自我描述的,但如果您存储表中所有字段的更改会更好 - 而不仅仅是名字和姓氏。它还允许您存储密码历史记录。
该表将类似于:
id
username
email
firstname
middlename
familyname
dob
password
country
valid_from
valid_until
例如:
id username email firstname familyname ... valid_from valid_until
-----------------------------------------------------------------------------------------------------
1 bob bob@b.com Bob Smith 1/Jan/2011 null
当 Bob 更改他的姓氏时,这变成
id username email firstname familyname ... valid_from valid_until
-----------------------------------------------------------------------------------------------------
1 bob bob@b.com Bob Smith 1/Jan/2011 1/Aug/2011
1 bob bob@b.com Bob Brown 1/Aug/2011 null