我一直试图找到一个匹配我的问题在现有的问题,我会接受链接作为答案,并关闭我的问题,如果你有他们。
我想找到一种方法来重组我现有的表。我有一个网站,我花了很长时间在上面。现在我有了所有的表和选择。不幸的是,当用户更新他们的信息时,"First Name"Last Name"表发生了很大的变化。我想要存储这些字段的历史数据,这样我就可以在用户更改了他们的真实姓名后找到他们。这些名字并不是唯一的,但它们比他们的身份证号码更容易记住。因此,我有一个包含字段(用户名、电子邮件、名、中名、姓、工作、密码、国家)的成员表。我是否应该为firstname和familyname创建新表,以便存储更改?
我也遇到过类似的问题。我摆脱了困境,所以创建了一个包含这些字段的表
| Id | id_user | name_field | value | date |
我想了很多清楚……"name_field
"表示用户已更改…(姓名、国家等)" value
"是单元格中的" date
"
我认为答案是肯定的。为名/姓添加新字段,并找到一个合适的算法将"fullname"转换为"first"one_answers"last"(有很多,你甚至可以使用excel)
只是为了确保我正确理解了你的问题:您目前有一个包含字段的表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