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

标签 php mysql database

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

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

所以从:

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

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

最佳答案

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

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

关于php - 如何在跟踪数据集更改的同时最好地构建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51601225/

相关文章:

php - 如何替换该字符串中的斜杠?

php - 从 mysql 中选择 id 与 $id 不同的地方

php - 如何在 Magento 中获取原始(所有商店 View )当前类别名称?

php - 如何将数据从 iOS 应用程序发布到 MySQL 数据库?

mysql - 选择timestampdiff超过1天并且有一些null的地方

mysql - PHP MODx mysql 解析错误?我在哪里更改设置?

php - 是否可以在将结果分组在一起之后将它们分组在一起?

mysql - mysql 中的索引是如何工作的?

mysql,加入和排除匹配

python - SQLite 在 WHERE LIKE 中的多个条件