База данных лучших практик - Статус - PullRequest
3 голосов
/ 29 марта 2012

Я создаю приложение, в котором объекты имеют поиск статуса.Чтобы дать некоторый контекст, давайте использовать следующий пример.


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

Новое - Задание созданоно неназначенные
Выполняется - Задание назначено работнику и выполняется
Завершено - Задание выполнено для выставления счета
Закрыто - Заданиевыставлен счет


Итак, я создаю таблицу состояния со следующими данными:

int ID
строка Имя

и столбец поиска в таблице заданий

int ID
string Имя
int CustomerID
int StatusID -> ищет статус

Итак, в реальном мире, скажем, у нас есть следующие требования.

  1. Пользователи должны получить отчет дляпоказать все незавершенные работы (задания, которые являются новыми или InProgress)
  2. Вниз, кто-то захочет добавить новый статус, который яНапример, в середине завершено и закрыто.

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

Новое - 10
В процессе - 20
Завершено - 30
Закрыто -40

Это будет означать, что для случая № 1 выше, я мог бы просто запросить базу данных для всех заданий, статус которых больше или равен 30. Это также было бы здорово для случая № 2, потому что это означает, что еслиЯ ввел новый статус между завершенным и закрытым, он не нарушит этот отчет.

Я вижу, что он часто встречается в разных приложениях.Кто-нибудь реализовывал подобное решение или сталкивался с этой проблемой раньше?

1 Ответ

0 голосов
/ 29 марта 2012

То, что мы делаем, - это одна таблица состояния и сопутствующая таблица группы состояния.

create table status_group (
    id integer primary key not null,
    alias varchar(20) not null,
    descr varchar(128)
)

create table status (
    id integer primary key not null,
    status_group_id integer,
    alias varchar(20) not null,
    descr varchar(128)
)

Тогда все статусы живут в одном месте, но сгруппированы вместе, имея миллион отдельных.

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