У меня есть следующие таблицы.
система таблиц
основной (sys_id)
запросы таблицы
- sys_id
- request_id
- субъект
основной(sys_id, request_id)внешний ключ запросы.sys_id -> system.sys_id
поле таблицы
основной (sys_id, field_id)внешний ключ field.sys_id -> system.sys_id
таблица запросов_props
- sys_id
- request_id
- field_id
- field_value
primary (sys_id, request_id, field_id)внешний ключ questions_props (sys_id, request_id) -> запросы (sys_id, request_id)
До этого момента все было хорошо.Поэтому здесь я могу
- создать систему с определенным sys_id (в табличной системе)
- создать некоторые поля (свойства) в этой системе (в полях таблицы)
- добавить запрос в систему (в табличных запросах)
- установить значения полей (свойства) для каждого запроса, соответствующего field_ids этой системы.(в таблице reports_props)
Теперь я хочу создать набор для черновых запросов.Таким образом, каждый запрос может иметь несколько черновиков для него.Черновики - это не что иное, как временные запросы.Поэтому я выбрал следующую схему
черновики таблиц
- draft_id
- sys_id
- request_id
основной (draft_id)черновики внешнего ключа (sys_id, request_id) -> запросы (sys_id, request_id)
таблица drafts_props
- draft_id
- field_id
- field_value
primary (draft_id, field_id)внешний ключ drafts_props (draft_id) -> черновики (draft_id) внешний ключ ??????????между drafts_props и таблицей полей ??????????????
здесь я хочу создать отношение внешнего ключа между таблицей * drafts_props * до таблица полей , где я могу убедиться, что * drafts_props * имеет тот же * field_id *, который разрешен ассоциацией * draft_id's * между таблицей drafts и таблицей * drafts_props * и * sys_id* связанный с этим черновиком.
то есть, чтобы найти действительные field_ids, которые могут быть в таблице drafts_props, мне сначала нужно соединить таблицу drafts_props с таблицей drafts на drafts_id и найти связанный sys_id с этим черновиком, а затем найтиfield_ids, связанный с этим sys_id в таблице полей.Это даст мне действительные значения field_ids.
, но, насколько я знаю, я не могу использовать 3 таблицы для создания ограничения внешнего ключа.внешний ключ [drafts_props]. [draft_id], [drafts]. [sys_id] ссылки [fields]. [sys_id], [fields]. [field_id]
конечно, я могу включить столбец sys_id в таблицу drafts_propsтакже, чтобы я мог создать такое ограничение, но я не хочу создавать эту избыточность.Также я не могу изменить систему таблиц, запросы, request_props и поля.
заранее спасибо!