Лучший дизайн для рефакторинга нескольких таблиц с одинаковыми столбцами, но разными FK - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время у меня есть база данных с несколькими 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 больше не может быть внешним ключом.

Как я могу сохранить свои внешние ключи?Это хороший дизайн базы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...