Ссылка первичного ключа как внешнего ключа в той же таблице, где значения полей записей являются функцией других записей - PullRequest
0 голосов
/ 28 мая 2019

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

В качестве упрощенного примера, есть 3 исходные записи, каждая из которых имеет заданную длину:

id length 
1  50     
2  55     
3  70     

Я хочу добавить еще две записи, каждая из которых является функцией длин одной изэти оригинальные записи.Для этого я добавил еще один столбец (related_id), который является внешним ключом, который ссылается на оригинальный идентификатор таблицы.В этом случае значения длины для этих дополнительных записей на 10 больше, чем для записи, определенной полем related_id.

id length related_id
1  50     (none)    
2  55     (none)
3  70     (none)
4  60     1
5  80     3

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

Альтернативой, на мой взгляд, было бы создание второй таблицы, котораяимеет только внешний ключ, ссылающийся на первый, т. е. который позволит мне получить их длины в каждом случае в зависимости от исходной таблицы:

id related_id
1  1
2  3

Однако мне нужно, чтобы все эти записи появлялисьв той же таблице, где id может использоваться как внешний ключ в другой таблице, которой требуется доступ ко всем этим записям.

Конечно, в этой таблице есть много различных полей с различными функциональными зависимостямина «оригинальном» наборе записей, так что это становится немного сложнее, чем в миксе.Какова рекомендуемая практика для ситуаций такого типа?

(я работаю с Pandas, чтобы извлекать данные из таблиц и проверять каждое поле.)

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