powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / модель данных для состояний документа
11 сообщений из 11, страница 1 из 1
модель данных для состояний документа
    #38143059
Фотография Wizandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть простейшая система докуметооборота
на разных этапах обработки документ может переводиться между определенными состояниями
набор этих состояний для каждого этапа свой, из каждого состояния возможны переходы не во все а только в определенные

подскажите есть ли где-нибудь примерчик подобной модели данных?
или просто примерчик како-го нибудь документооборота
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38143153
П-Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wizandr,

Если не лень скачать и установить базу MS SQL и приложение для Access, то там есть ровно такая форма - статусы, переходы между статусами. См. ссылку http://khoma.jimdo.com/материалы/, далее - Демонстрационый проект.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144023
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wizandr,

Таблица маршрутов, таблица переходов, таблица ролей, кросстаб-связка между ролями и переходами - права на выполнение перехода.

Все, проще некуда. Столбцы добавлять по вкусу, смотря какие конкретно требования.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144309
Фотография Wizandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelWizandr,

Таблица маршрутов, таблица переходов, таблица ролей, кросстаб-связка между ролями и переходами - права на выполнение перехода.

Все, проще некуда. Столбцы добавлять по вкусу, смотря какие конкретно требования.

если таблица ролей и таблица переходов, а потом еще кросстаб-связка то получается что для добавления новой роли или перехода - нужно в кросстаб таблицу столбец добавлять?

или я не правильно понял?
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144323
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО достаточно следующих таблиц: Документы (Documents), Типы документов (DocumentTypes), Состояния документов (DocumentStates), Возможные переходы состояний в зависимости от типа документа (DocumentStateChanges).
Роли и права - это уже из следующей оперы.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144326
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура таблицы DocumentStateChanges:
- ID - идентификатор записи;
- DocumentTypeID - идентификатор типа документа, для которого определяются возможные переходы состояний;
- SourceStateID - идентификатор состояния документа, из которого разрешено производить переход;
- TargetStateID - идентификатор состояния документа, в которое разрешено производить переход;
- IsActive - признак активности записи.

Как-то так
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144497
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
А у Вас DocumentStates вообще никак не связан с DocumentTypes - просто плоский справочник? Имхо это не лучшее решение.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144604
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин, и? Развейте тему - решение доработаем.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38144649
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Почему не лучшее? Ну хотя бы потому что если у кучи типов документов есть некое состояние и вдруг для одного типа надо состояние назвать по другому - это выливается в целый марлезонский балет.
Мне кажется, что состояния лучше изначально создавать отдельно для каждого типа документа, оставляя при этом возможность того, что для нескольких документов дерево состояний и переходов может [частично] совпадать - но только как опция.
Т.е.
1. убрать из DocumentStateChanges ссылку на DocumentTypes.
2. сделать в DocumentTypes ссылку на DocumentStatеs - "начальное состояние".
3. По умолчанию считать что состояния для каждого типа свои, если они совпадают - значит это сделано осознанно.

Кстати, у DocumentStatеs я бы сделал дополнительную дочернюю таблицы DocumentStateOperations - действия, которые надо проделать с документом при переходе в данное состояние, у DocumentStateChanges - DocumentStateChangeConditions - условия, которые должны соблюдаться, чтобы переход был возможен.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38145485
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wizandr,

Эээ, под кросс-табом я имел в виду не это :) Я имел в виду таблицу-связку "многие ко многим", в которой всего 2 столбца - переход и роль, у которой есть на него право.

Неудачно выразился, просто.
...
Рейтинг: 0 / 0
модель данных для состояний документа
    #38145546
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужны следующие таблицы:

1. Таблица документов
2. Таблица процессов
3. Таблица субъектов (юр.лиц, физ.лиц)
4. Таблица статусов

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
create table Document
(
  ID     int identity(1, 1) primary key,
  Name varchar(256),
  Type  varchar(256)
)
go

create table Process
(
  ID              int identity(1, 1) primary key,
  Name         varchar(256),
  Type          varchar(256),
  DocumentID int,
  SubjectID    int,
  StateID       int
)
go

create table Process_StateLog
(
  ProcessID int,
  Date        datetime,
  StateID    int,
  SubjectID int,
  primary key ( ProcessID, Date, StateID )
)
go  

create table Subject
(
  ID              int identity(1, 1) primary key,
  Name         varchar(256),
  Type          varchar(256)
)
go

create table State
(
  ID      int identity(1, 1) primary key,
  Name  varchar(256)
)



Таблица процессов как раз и определяет в каком состоянии документ и кто владелец.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / модель данных для состояний документа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]