2009-12-02 9 views
0

Я новичок в сложном дизайне базы данных. В настоящее время я участвую в проекте, в котором пользователь должен иметь возможность извлекать инструкции на основе комбинации из 18 столбцов. Так что мой Таблица параметров имеет следующие столбцыДизайн базы данных для фильтрации базы данных

  1. Работа
  2. государственный
  3. менеджер
  4. ProcessCode
  5. ProcessType (Остальные столбцы усеченный).
  6. InstructionID (FK инструктивных таблицы)

При добавлении/Изменение инструкции, он может выбрать несколько вариантов в каждом из указанных выше параметров. Хранимая процедура будет хранить данные во всех возможных комбинациях, чтобы облегчить поиск, так как во время поиска (поиска) в каждом столбце будет выбран только один параметр.

Для одной комбинации может быть несколько инструкций, и одна и та же инструкция может применяться к нескольким комбинациям.

Я как-то создал SP для добавления инструкции, но теперь я поражен модификацией. Когда моя веб-страница передает новую комбинацию в SP, какой лучший способ обновить таблицу?

Я могу удалить все существующие строки и создать новые строки для новой комбинации, но я хотел бы сохранить созданную дату и создать пользовательские столбцы. Кроме того, существует требование сохранить историю этих событий в отдельной таблице истории.

Извините за длину вопроса ... И, спасибо за помощь.

ответ

0

Что у вас есть много-ко-многим, поэтому я хотел бы предложить вам использовать:

instruction_model_01

+0

Прошу прощения, если я не понимаю ... Существует только одна инструкция для параметра ParameterID ... Но может быть две строки с одинаковой комбинацией всех других полей, кроме ParameterId и InstructionID .... Следовательно, ее является отношением «много к одному» для параметров и инструкций –

2

Если вы пытаетесь получить данные, основанные на комбинации параметров, то вам может установить для параметров значение по умолчанию NULL, например

CREATE PROC spProcName 
    @FieldName INT = NULL 

Единственное, что нужно сделать, это установить раздел WHERE заявление посмотреть на значения параметров и сравнить их, чтобы увидеть, если они или нулевым или нет, например,

WHERE ((FieldName = @FieldName) OR (@FieldName IS NULL)) 

Используйте это для запроса таблицы и использовать стандартные запросы обновления аналогичным образом с использованием значения параметра по умолчанию в нуль, но установка значения, как это:

FieldName = ISNULL(@FieldName, FieldName) 

Который позволяет обновлять только заданные параметры ,

Надеюсь, это то, что вам нужно, я могу привести полный пример, если это необходимо.

+0

Это ответ на ваш вопрос, если да, пожалуйста, отметьте как ответ – anD666

Смежные вопросы