Я структурирую базу данных для системы поддержки / управления билетами и хочу, чтобы мои заявки открывались пользователями и назначались для Support_Users, поэтому я разделил эти два типа пользователей на разные таблицы.
Проблема возникла, когда я попытался спланировать раздел комментариев для своего билета. Я хотел, чтобы комментарии создавались либо пользователем, либо пользователем_поддержки, и у меня возникают проблемы с выяснением, возможно ли это вообще.
Изначально я планировал использовать как User_FK, так и Support_User_FK сиз них пустые для любого данного комментария. Это сразу дало мне плохую вибрацию, потому что тогда я никогда не мог просто использовать что-то вроде Comment.CreatorID
, чтобы сразу определить, кто является создателем, вместо этого я был бы вынужден выбрать непустое значение между SupportUserID и UserID, а затем с ID в руке. нужен способ выяснить, какую таблицу запрашивать ... Просто беспорядок. Поэтому я отказался от этого.
Затем я подумал о том, чтобы, возможно, принять составной ключ, который будет содержать идентификатор пользователя или Support_User, и другое поле, содержащее имя таблицы, в виде "Композитный внешний ключ ". Моя система, однако, не допускала этого, потому что CreatorID FK не мог быть разделен между несколькими таблицами.
На данный момент я, вероятно, собираюсь реструктурировать свою базу данных, чтобы пользователи и Support_Users не былибольше различаются в разных таблицах и поэтому комментарий может быть создан только пользователями, который также будет содержать поддержку пользователей, но на этот раз отличается другим механизмом.
Я все еще хотел бы знать, сталкивался ли кто-нибудь с этой проблемой прежде, если я столкнусь с подобной проблемой в будущем, которая не может быть решена объединением подобных организаций. Это вызывает у меня проблемы с Именным Программистом Именем, и я хотел бы знать, что это такое.