我目前有一个包含多个Log
表的数据库。该表用于记录进程的状态。 Process_Log有3个基本列,即表ID
,进程State
和FK到各自的Process表ProcessID
假设我有这些表格:
ProcessALog
ID | State | ProcessID
---|------------|---------
1 | Created | 24
2 | Created | 32
3 | Processing | 24
4 | Canceled | 24
5 | Processing | 32
ProcessBLog
ID | State | ProcessID
---|------------|---------
1 | Created | 12
2 | Processing | 12
3 | Deleted | 12
但我发现这个实现存在问题。如果我需要记录另一个进程,我需要创建另一个表。我想我可以通过一个中央日志表和另一个名为ProcessName
的列来简化这个来存储不同的进程,如下所示:
日志
ID | State | ProcessID | ProcessName
---|------------|-----------|-------------
1 | Created | 24 | ProcessA
2 | Created | 32 | ProcessA
3 | Processing | 24 | ProcessA
4 | Canceled | 24 | ProcessA
5 | Processing | 32 | ProcessA
1 | Created | 12 | ProcessB
2 | Processing | 12 | ProcessB
3 | Deleted | 12 | ProcessB
但是拥有一个中央日志表意味着我的ProcessID
不再是外键。
如何保留外键?这是一个很好的数据库设计吗?