我一直在尝试在现有问题中找到与我的问题匹配的内容,我会接受链接作为答案,如果你拥有它们,请关闭我的问题。
我想要找到的是重构现有表格的方法。我有一个网站,我花了很长时间研究它。现在我有所有表格并选择到位。不幸的是,随着用户更新他们的信息,“名字”“姓氏”表正在发生很大变化。我想存储这些字段的历史数据,因此我可以在用户更改后找到真实姓名。名称不是唯一的,但它们比ID号更容易记住。所以,我有一个成员的表与字段(用户名,电子邮件,名字,中间名,姓氏,dob,密码,国家)。我应该只为firstname和familyname创建新表,以便我可以存储更改吗?
答案 0 :(得分:2)
我有类似的问题。我摆脱了这种情况 用这种字段创建了一个表。
| Id | id_user | name_field | value | date |
我认为很清楚...“name_field
”是用户已经改变了...(姓名,国家等)
单元格中的“value
”和发生变化时的“date
”
答案 1 :(得分:1)
我建议答案是肯定的。添加第一个/姓氏的新字段,找到一个合适的算法,将“fullname”转换为“first”和“last”(有很多,你甚至可以使用excel)
答案 2 :(得分:1)
只是为了确保我正确地解释了你的问题:
您目前有一个包含字段的表
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为null的记录。
这种设计是自我描述的,但如果您为表中的所有字段存储更改会更好 - 不仅仅是第一个和系列名称。它还允许您存储密码历史记录。
表格如下:
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