У мну все документы порождены от абстрактного класса "Документ" и
имеют записи в ГлавномЖурнале CREATE TABLE TABL$J_FULL(ID
INTEGER, .....), специфичные свойтства для данного вида документов
хранятся в "таблицах-расширителях", по связи один-ко-дному с
ГлавнымЖурналом. Если у тебя не так - можно создать РегистрДокументов
и скидывать в него записи триггерами из всех таблиц документов.

Теперь по поводу цепочек документов. Имеем:
1) Один документ может иметь несколько подчиненных
2) Подчиненные документы могут иметь тоже подчиненные.
3) Документ может быть подчинен нескольким родителям.
4) "Цепочка проведения" работает таким образом, чтобы документ нельзя
было провести, пока не проведены родители. (Ну, это мне так надо,
тебе, может, не надо)

Реализуется красиво на одной таблице:
CREATE TABLE TABL$J_LINKS(
  J_ID INTEGER NOT NULL FOREIGN KEY REFERENCES TABL$_J_FULL(ID),
  J_CHILD_ID INTEGER NOT NULL FOREIGN KEY REFERENCES TABL$_J_FULL(ID),
  ....
  <ну там еще вспомагательная хрень, характеризующая связи>
  ...
)

З.Ы. я не претендую на роль истины в последней инстанции. :)

Ответить