Предположим, у меня есть две таблицы в базе данных SQL Server: dbo.Companies
и dbo.Contracts
.
Предположим, что я хочу представлять отношения один-к-одному между компаниями и контрактами, чтобы указать, что контракт был заключен с компанией.Я бы просто создал таблицу соединения с внешним ключом для dbo.Companies
и dbo.Contracts
.
. Вышеуказанный сценарий прост для любого опытного разработчика SQL.
Предположим, что я хочусделать что-то подобное, но каждая компания, которой присужден контракт, может заключить субконтракт с другой компанией, которая может заключить субконтракт дальше.
У меня может быть компания под названием «Acme», которая может заключить субконтракт с «Злыми гениями», что может привести к субконтракту «Зло в бюджете».
Или, опять же, «Акме» может заключить субконтракт с «Злыми гениями», который субконтрактует к «Злу в бюджете», но «Акме» может одновременно заключить субконтракт с другимчасть одного и того же контракта с «Падающими наковальнями».
Следует иметь в виду, что компания может быть вовлечена во множество различных контрактов на разных уровнях или в системе могут быть компании, которым не присужденоконтракты вообще.
Какая структура данных позволяет мне описывать эти отношения в SQL?
Edit: Я использую MS SQL Server.