У нас есть таблица Лиги, и теперь мы хотим, чтобы начислялась лига (когда лига заканчивается, начинайте ее с самого начала). Предлагаемое решение было просто добавить RolloverLeagueID к столу:Ссылка на цепочку идентификаторов (таблица с самореляцией)
- LeagueId
- Другие столбцы
- RolloverLeagueID
Мой вопрос здесь, когда мы неизбежно приходим к отчетности. Как бы вы показали полную историю лиги?
SELECT
*
FROM
League AS L1
LEFT OUTER JOIN League AS L2
ON L1.Id = L2.Id
LEFT OUTER JOIN League AS L3
etc etc
Это, очевидно, нецелесообразно. Есть ли способ запросить эту информацию рекурсивно или что-то еще?
Моя наклонение добавить еще одну таблицу, как это:
- RolloverChainId
- PreviousLeagueId
- NewLeagueId
С составного ключа на нем, где RolloverChainId сохраняется вдоль цепи. А затем просто верните все лиги с этим RolloverChainId в порядке даты или Id или что-то еще.
Есть ли лучший способ связывания цепочки идентификаторов?