2017-06-21 25 views
0

我想知道在数据库中创建单独的table正确的timestamp是否是好的做法。从数据库中的实际表中分离时间戳

我有一个数据库有多个表使用时间戳 - 所有6个相同的字段 - 并想知道,而不是重复这些列,我可以包括我的时间戳表foreign key

这是我在简化例如:

用户表:

+----+-----------+-----------------------+ 
| ID | timestamp | username    | 
+----+-----------+-----------------------+ 
| 1 | 1   | [email protected] | 
+----+-----------+-----------------------+ 
| 2 | 2   | [email protected]  | 
+----+-----------+-----------------------+ 
| 3 | 3   | [email protected]  | 
+----+-----------+-----------------------+ 
| 4 | 4   | [email protected] | 
+----+-----------+-----------------------+ 
| 5 | 4   | [email protected]  | 
+----+-----------+-----------------------+ 

Orders表

+----+-----------+--------------------+--------+ 
| ID | timestamp | ordersBlob   | userid | 
+----+-----------+--------------------+--------+ 
| 1 | 6   | some text   | 1  | 
+----+-----------+--------------------+--------+ 
| 2 | 7   | more text   | 1  | 
+----+-----------+--------------------+--------+ 
| 3 | 8   | no text   | 2  | 
+----+-----------+--------------------+--------+ 
| 4 | 9   | irony poining text | 3  | 
+----+-----------+--------------------+--------+ 
| 5 | 10  | paradox text  | 4  | 
+----+-----------+--------------------+--------+ 

时间戳表

+----+-----------+-----------+------------+------------+ 
| ID | createdOn | createdBy | modifiedOn | modifiedBy | 
+----+-----------+-----------+------------+------------+ 
| 1 | 20170616 | 1   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 2 | 20170621 | 3   | 20170621 | 2   | 
+----+-----------+-----------+------------+------------+ 
| 3 | 20160512 | 4   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 4 | 20160512 | 4   | 20160516 | 3   | 
+----+-----------+-----------+------------+------------+ 
| 5 | 20160101 | 2   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 6 | 20160102 | 2   | 20160103 | 3   | 
+----+-----------+-----------+------------+------------+ 
| 7 | 20160103 | 4   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 8 | 20160104 | 1   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 9 | 20160105 | 5   |   |   | 
+----+-----------+-----------+------------+------------+ 
| 10 | 20160106 | 1   | 20160106 | 1   | 
+----+-----------+-----------+------------+------------+ 

这些表仅作为示例。那样可以做那样的事情。如果您能提供反例和原因,您不会那样做,请提供。

希望这不是很多意见的基础。

回答

1

它不会为您节省任何磁盘空间,因为'timestamps'表需要索引。此外,在实际情况下,审计表中的每行都需要'时间戳'表中的单独行,所以'时间戳'记录不太可能被重用。

它会降低插入/更新/选择的性能,因为每个操作都需要触摸2个表,这会增加磁盘IO的数量(如果要重新使用'时间戳'记录,情况会更糟糕)。

此外,它会使您的数据表难以管理,难以保持一致性,并且代码将变得更加复杂。

+0

我没有想到它会减慢我的手术。很好记住!谢谢 – Chax

相关问题