В настоящее время у меня есть база данных с несколькими Log
таблицами.Таблица используется для регистрации состояний процесса.В Process_Log есть 3 основных столбца: таблица ID
, процесс State
и FK для соответствующей таблицы процессов, которая 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
больше не может быть внешним ключом.
Как я могу сохранить свои внешние ключи?Это хороший дизайн базы данных?