我有一个小型 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/