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

Думаю тему подобрал правильно.

имеются две описательные таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TABLE DOCS (
    C                         INTEGER,
    NAME                      CHAR( 100 ) NOT NULL,
    PRIM                      CHAR( 100 ),
    JORNAL_KIND               SMALLINT NOT NULL,
    ICON_ID                   INTEGER DEFAULT - 1 ,
    WARN_ON_EXIT              CHAR( 300 ),
    BODY_SELECT_TEXT          BLOB SUB_TYPE  1  SEGMENT SIZE  16384 ,
    CLOSE_PROCEDURE           CHAR( 100 ),
    CAPTION                   CHAR( 100 ),
    JORNAL_2011_ID            INTEGER,
    FRAME_NAME                CHAR( 100 ),
    HEADER_TABLE              CHAR( 100 ) NOT NULL, --таблица, где хранится наименование таблицы шапки
    BODY_TABLE                CHAR( 100 ) NOT NULL, -- соответственно где хранится тело
    BODY_FK_FIELD             CHAR( 100 ) NOT NULL --
);
в ней храниться список документов системы

есть табличка, в которой хранятся состав полей шапки и тела документа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE SYS$SP_GLOBAL_DOCS_FIELDS (
    C                      INTEGER NOT NULL,
    DOCS_ID       INTEGER,
    KIND                   INTEGER, -- тело-шапка
    WARNING                CHAR( 100 ),
    MUST_BE             SMALLINT DEFAULT  0 ,
    DESCR                  CHAR( 300 ),
    VISIBLE                SMALLINT,
    WIDTH                  INTEGER,
    SYSTEM_FIELD           SMALLINT,
    FIELD_CAPTION          CHAR( 100 ),
........);

все документы хранятся в двух таблицах. соответвенно шапка и тело.

сейчас зарегистировано около 100 разлиных документов.
общих полей шапки в районе 10. всего полей шапки 90-100. используются в разных документах.
тело - 60 разных полей. общих 2-3 поля.

Ну и программа выбирает из этих двух таблиц необходимые имена полей и прочую инфу и строит сам документ.
вроде все работает.

Но стало смущать следующее.
1. слишком много полей набралось в таблицах, в которых реально документы хранятся.
2.появились документы, в теле или шапке которых идет сслыка на другой документ. ФК в данном случае выглядит некрасиво. Можно сказать что одно из полей тела ссылается на тело другого документа. т.е. на эту же таблицу.
Некоторые запросы выглядят ужасно т.к. при выборке задействовано несколько документов и приходится джойнить одну и туже таблицу друг к другу, только фильтруя по типу документа.
3. трудно сделать иногда нормальный ПК.

В общем прокомментируйте на верном ли я пути.
Может стоит документы разделить по отдельным таблицам? Хотя есть документы с уникальными полями , но они в системе появляются раз в 5 лет )
В общем гложут сомнения что что-то я слегка не так сделал.

Спасибо
...
Рейтинг: 0 / 0
Словарь данных
    #37360891
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни кто не прокомментирует?
...
Рейтинг: 0 / 0
Словарь данных
    #37389478
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq,

Много неясного, например, непонятно как хранятся сами документы.
Судя по
Код: plaintext
1.
 HEADER_TABLE              CHAR( 100 ) NOT NULL, --таблица, где хранится наименование таблицы шапки
    BODY_TABLE                CHAR( 100 ) NOT NULL, -- соответственно где хранится тело 
у Вас на каждый тип документа могут быть свои таблицы.
Тогда непонятно
Код: plaintext
Может стоит документы разделить по отдельным таблицам?
Боюсь, что я что-то не так понимаю.

Код: plaintext
1.
Но стало смущать следующее.
 1 . слишком много полей набралось в таблицах, в которых реально документы хранятся.
Т.е. в DOCS_FIELDS у вас названия колонок таблицы с телом документа?
Для таких задач считаю надо использовать EAV. Вы ведь так и так запросы динамически формируете? Так что разница в производительности будет незначительной.

Код: plaintext
1.
2.
3.
4.
 2 .появились документы, в теле или шапке которых идет сслыка на другой документ. ФК в данном случае выглядит некрасиво. 
Можно сказать что одно из полей тела ссылается на тело другого документа. т.е. на эту же таблицу.
Некоторые запросы выглядят ужасно т.к. при выборке задействовано несколько документов и приходится джойнить
 одну и туже таблицу друг к другу, только фильтруя по типу документа.
ИМХО, ничего не поделаешь, раз документы связаны - надо связывать.

Код: plaintext
 3 . трудно сделать иногда нормальный ПК.
Почему? Только что прочитал топик, что ПК должны быть суррогатными. Тут не должно быть проблем:)
...
Рейтинг: 0 / 0
Словарь данных
    #37389799
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq,
почему а вас везде char а не varchar?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Словарь данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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