Я боролся с этим конкретным набором таблиц в течение некоторого времени.Есть три таблицы (раньше было две, но нужно было добавить третью).Таблицы: Request
, PartInfo
и Status
.Request
используется клиентом через форму, которая вводит данные в таблицу.Status
для наших сервисных агентов, чтобы отслеживать ход выполнения запросов клиентов.PartInfo
- это новая таблица, содержащая общие данные, к которым имеют доступ обе стороны.
Хитрость заключается в том, что с каждым запросом существует текущий журнал изменений этого запроса, которые хранятся в той же таблице и связаны между собой.к первоначальному запросу в этой серии через самосоединяющийся ключ с именем FirstRequestID
(который я буду сокращать до FID
).То же самое верно для таблицы Status
.Вот моя базовая структура таблиц в том виде, в котором я ее разработал ( Примечание: еще не поздно изменить архитектуру, если есть лучший подход ):
Request PartInfo Status
------- -------- ------
ID ID ID
FID FID FID
PartInfoID PartNum PartInfoID
ProductID Revision StatusID
CategoryID Description Comments
Теперь скажите, что я хочудля отображения информации о конкретном запросе (включая сведения о детали и изменения состояния) в таблице ASP.NET GridView.«Особый запрос» идентифицируется FID
.
Вопрос : Как я могу убедиться, что, когда я просматриваю либо историю запросов, либо историю статуса, она всегда тянетправильная информация из таблицы PartInfo (общая)?Другими словами, каков наилучший способ связать эти три таблицы с надлежащими отношениями, не имея 50 разных соединительных таблиц для учета всех исключений?