用于重构具有相同列但不同FK的多个表的最佳设计

时间:2018-06-08 01:40:23

标签: database database-design foreign-keys relational-database

我目前有一个包含多个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不再是外键。

如何保留外键?这是一个很好的数据库设计吗?

0 个答案:

没有答案