1

我一直在尝试在现有问题中找到与我的问题相匹配的问题,如果您有链接,我将接受链接作为答案并关闭我的问题。

我试图找到的是一种重组我现有表的方法。我有一个网站,我花了很长时间在上面工作。现在我有所有的表格和选择。不幸的是,随着用户更新他们的信息,“名字”“姓氏”表发生了很大变化。我想存储这些字段的历史数据,以便在用户更改后可以通过真实姓名找到用户。这些名字不是唯一的,但它们比 ID 号更容易记住。所以,我有一个成员表,其中包含字段(用户名、电子邮件、名字、中间名、姓氏、出生日期、密码、国家/地区)。我应该为名字和姓氏创建新表以便存储更改吗?

4

3 回答 3

2

我有一个类似的问题。我摆脱了这种情况,所以用这种字段创建了一个表。

| Id | id_user | name_field | value | date |

我想很清楚......“ name_field”是用户改变了......(姓名,国家等)“ value”在单元格中,“ date”当有变化时

于 2011-08-16T08:48:13.960 回答
1

我建议答案是肯定的。为名字/姓氏添加新字段,并找到一个不错的算法将“全名”转换为“名字”和“姓氏”(那里有很多,你甚至可以使用excel

于 2011-08-16T08:45:36.147 回答
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 为空的记录。

这种设计是自我描述的,但如果您存储表中所有字段的更改会更好 - 而不仅仅是名字和姓氏。它还允许您存储密码历史记录。

该表将类似于:

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
于 2011-08-16T09:01:51.683 回答