Проблема с новой таблицей в Oracle - PullRequest
0 голосов
/ 04 января 2019

Я должен добавить новую таблицу в соответствии с некоторыми новыми требованиями, модель в настоящее время состоит из двух таблиц: DETAIL и SUMMARY.

Отношение заключается в том, что каждая деталь связана с одной сводкой, поэтому теперь мне нужно добавить новую таблицу с именем SUMMARY_ESP, в которой есть FK ( SUMMARY) и еще два столбца, что-то вроде этого:

ID | SUMMARY_ID | ESP_ID | PRIORITY_ESP | PTY_ID | PRIORITY_PTY
1  |  123       |   34   |    1         |   122  |      1  
2  |  123       |   35   |    2         |   111  |      2
3  |  123       |   30   |    3         | null   |      null
4  |  1111      |   34   |    4         | null   |      null

Информация о других таблицах:

DETAIL TABLE
    ID_DET | AMOUNT |      DATE    | ID_SUMMARY | EXTERNAL_ID
    1      |  1000  |   14/05/2018 |    1111    |     4
    2      |  2000  |   18/07/2016 |    1111    |     4
    3      |  1200  |   11/07/2017 |    123     |     1
    4      |  1300  |   21/09/2018 |    123     |     2



SUMMARY TABLE
        ID_SUMMARY | PRIORITY| PROFILE | CLASS | AREA
        123        |  1      |   1     |    5  |   3     
        1111       |  2      |   1     |    5  |   3   
        33         |  3      |   2     |    5  |   9   
        4          |  4      |   8     |    5  |   10

Таким образом, в соответствии с этим SUMMARY_ID, ESP_ID и PTY_ID уникальны, в какой-то момент нужно знать, что такое ESP_ID определенных деталей, но поскольку связь с SUMMARY Таблица, я не знаю, какой был, когда он был добавлен, поэтому мне было предложено создать новый столбец для таблицы DETAIL с именем EXTERNAL_ID, чтобы я мог знать, что код из SUMMARY_ESP.

Так что, если строка является первой, это может быть либо 24, либо 122 в новом столбце в соответствии с некоторой предыдущей логикой, но я беспокоюсь о последствиях, которые это может иметь в будущем, потому что каким-то образом Я мог бы дублировать информацию, также мне нужно было бы сделать некоторую странную логику, чтобы получить приоритет в зависимости от того, ESP_ID или PTY_ID.

Новая таблица вместе с SUMMARY каким-то образом являются таблицей параметров, их значения меняются не так часто, и меняется только столбец PRIORITY, вместо этого DETAIL является более транзакционным, и он ежедневно вставляется и обновляется в соответствии с немного бизнес-логики.

Я думал о добавлении идентификатора новой таблицы в виде FK в таблицу DETAIL, но в конце будет то же самое, потому что будет трудно поддерживать, а обновление будет сложнее, также это похоже на круговая зависимость, так что я как бы застрял с этим, так что любая помощь будет действительно полезна, ниже полной модели, с текущей идеей.

Также я не могу добавить эти новые столбцы в таблицу SUMMARY, потому что в одной и той же таблице может быть несколько связанных с одним и тем же кодом, и, поскольку это PK, я не могу добавить две строки с одним и тем же кодом.

enter image description here

1 Ответ

0 голосов
/ 04 января 2019

Отношение состоит в том, что каждая деталь связана с одним резюме

Вы должны представить это отношение в макете вашей базы данных: если у вас есть отношение 1-N между SUMMARY и DETAIL, вы хотите создать еще один столбец в DETAIL, который содержит первичный ключ SUMMARY запишите, что это связано.

Имея это отношение, вы можете начать со строки DETAIL, связать строку из SUMMARY и определить все SUMMARY_ESP записи, связанные с ним.

Теперь, если вам нужно уникально связать запись DETAIL с записью SUMMARY_ESP, то вы хотите либо добавить внешний ключ к SUMMARY_ESP в DETAIL, либо наоборот (добавить внешний ключ до DETAIL в SUMMARY_ESP), в зависимости от того, как передаются ваши данные.

...