Связанные таблицы без предыдущих отношений (SQL Server) - PullRequest
1 голос
/ 13 сентября 2011

РЕДАКТИРОВАТЬ : я поменял структурную реализацию, но моя проблема осталась прежней;т.е. сначала создайте объект Publication (, если он еще не существует ), прежде чем создавать запись SvcRequest.

Мне дали базу данных, которую мне пришлось "исправить", и я весьма озадаченконкретная проблема.Для простоты у нас есть две таблицы (следствия), которые уже существовали.Мне потребовалось некоторое время, чтобы выяснить отношения между этими двумя понятиями, и, в конечном итоге, я решил использовать традиционную соединительную таблицу следующим образом:

                     Publications (id, SvcReqID, LogID)
                             /              \
                            /                \
               SvcRequest (id)              SvcProgressLog (id)

SvcRequest и SvcProgressLog - более или менее родственные таблицы, каждая из которых содержит ссылку на родителя.Существует такой странный иерархический тип отношений, который мне потребовалось некоторое время, чтобы разобраться, теперь мне просто нужен способ присоединиться к ним, который облегчает выполнение операций CRUD.

Процесс здесь следующий:

  1. Приходит запрос на обслуживание публикации.
  2. Если Публикация существует -> обновить соответствующую запись Публикации.Если нет, создайте новую публикацию.После этого создайте запись SvcRequest из информации, полученной из веб-формы. (здесь требуется помощь)
  3. Наконец, можно создать запись в журнале для запросов, которые существуют, но еще не зарегистрированы.

Существуют следующие отношения:

  • Публикации -> SvcRequest :: 1 -> Многие
  • Публикации -> SvcProgressLog :: 1 -> Многие
  • SvcRequest -> SvcProgressLog :: Many -> Many (-ish)

Как всегда, я очень ценю помощь и слова мудрости;) よ ろ し く

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Из-за сложности структуры нашей базы данных и всех вспомогательных таблиц для того, что я назвал здесь таблицей SvcRequest, я решил написать ряд хранимых процедур, которые можно запускать по отдельности для «обновления» (хотя на самом деле это вставка ) запрашивает или вызывается мастером SP для ввода новых записей.

После долгих раздумий и дизайнерских испытаний это лучшее решение, которое я могу придумать. После того, как он будет написан, я выложу некоторый пример кода, чтобы другие также могли получить пользу. :)

0 голосов
/ 13 сентября 2011

Если link_id нельзя использовать для связи таблиц SvcRequest и SvcProgressLog, то вам нужно будет отсоединить SvcProgressLog от таблицы публикации и вместо этого связать его с SvcRequest:SvcRequest + -----

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...