如何在跟踪数据集更改的同时最好地构建数据库

时间:2018-07-30 19:44:27

标签: php mysql database

我有一个小型CRM,我正在尝试找出设计数据库表的最佳方法。

我目前为用户提供了一个表,该表有大约30列,我有时会对其进行更改。由于我在该表上存储了两个不同的信息(用户+公司信息),因此我打算将该表拆分为3个(用户+公司+这2个之间的连接),但我也想保留正在进行的任何更改的副本在这些行中制作。

所以从:

user_id | firstname | last_name | company_name | company_city | company_subject | rank | status
 1      |   John    |  Borrows  |  Boink INC   |      NY      |      Web dev    |  1   |   1
 2      |   Mike    |  Smith    |  Smithin INC |      OC      |      Laywer     |  1   |   2
 3      |   Mary    |  Anton    |    Caffin    |      SJ      |      Moving     |  2   |   1

像这样

user_id | firstname | last_name | rank | status
 1      |   John    |  Borrows  |  1   |   1
 2      |   Mike    |  Smith    |  1   |   2
 3      |   Mary    |  Anton    |  2   |   1

comp_id | company_name | company_city | company_subject
 1      |  Boink INC   |      NY      |      Web dev
 2      |  Smithin INC |      OC      |      Laywer
 3      |    Caffin    |      SJ      |      Moving

con_id | user_id | comp_id
1      | 1       | 1
2      | 2       | 2
3      | 3       | 3

但是我不确定例如当用户更改公司名称或用户表上的其他信息时如何跟踪更改。

1 个答案:

答案 0 :(得分:1)

只需遵循规范化规则来构造数据库表。您只需搜索数据库规范化,就可以找到所需的任何内容。

关于“更新历史记录”,您可以将时间戳记添加到数据集和/或单独的布尔字段“过时”以能够过滤出最新信息。 这将是我想到的最简单的解决方案。