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

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

Возникла необходимость вести журнал экспорта этих документов.

Сделал отдельную таблицу, куда пишу ПК всех этих документов. Но в данном варианте не сделать в этой таблице fk. Тк ид из разных таблиц. Ну и в таблицу экспорта - ссылки на эту таблицу.
Но чтото подсказывает , что криво это.

Направьте в нужном направлении мысль)
...
Рейтинг: 0 / 0
Разнородные документы
    #38794718
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL Объединять их в одну таблицу нет смысла, тк они по сути своей разные.
Возникла необходимость вести журнал экспорта этих документов.
Разные-то разные, но для задач экспорта одинаковые. То бишь не совсем разные.

AndrewVL Направьте в нужном направлении мысль)Идеальным решением будет введение общего предка всех документов (пусть даже таблица с одним полем id) затем все документы должны иметь fk на эту таблицу, и журнал экспорта будет иметь fk на нее тоже.

Насколько целесообразно все переделывать - вопрос к вам.
...
Рейтинг: 0 / 0
Разнородные документы
    #38794725
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,

Есть у меня табличка docroot. И реальные документы ссылаются на нее.
Получается экспорт должен ссылаться на docroot?
В данной схеме мне не особо понятно как тогда получить список документов и их типы в таблице экспорта.
Те имеем в docroot Id равным 1. Всего одна запись. А документов этого типа допустим 100. И других типов в других таблицах тоже много
Как понять к какому типу эта единица относится. Чтобы построить список экспортированных и не экспортированных документов?
Можно конечно в docroot добавить тип документа. Но тогда запрос получается такой : where doctype = 1. И видимо с Union all по всем типам документов ? Тк хранятся в разных таблицах
...
Рейтинг: 0 / 0
Разнородные документы
    #38794731
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL, мы в своё время делали общую таблицу

documents:
- id - идентификатор документа,
- documentNo - номер документа,
- documentState - состояние дкумента,
- documentType - тип документа и т.п.

Таблицы конкретных документов (например заказы) ссылались на общую таблицу. Отношение 1-к-1-му.
...
Рейтинг: 0 / 0
Разнородные документы
    #38794735
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLНо в данном варианте не сделать в этой таблице fk.
Ну так не делай FK. В чём проблема-то?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разнородные документы
    #38794786
аля1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovAndrewVLНо в данном варианте не сделать в этой таблице fk.
Ну так не делай FK. В чём проблема-то?..

некоей кривизны опасается



(с)..введение общего предка всех документов..
...
Рейтинг: 0 / 0
Разнородные документы
    #38795636
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAndrewVLНо в данном варианте не сделать в этой таблице fk.
Ну так не делай FK. В чём проблема-то?..


Тогда не получится контролировать целостность по этому полю. Только если на триггерах
Хотя можно в корневой таблице сделать несколько полей под каждый тип документа. Тогда можно PK. Но тогда не получится not null))
...
Рейтинг: 0 / 0
Разнородные документы
    #38795637
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
аля1сDimitry Sibiryakovпропущено...

Ну так не делай FK. В чём проблема-то?..

некоей кривизны опасается



(с)..введение общего предка всех документов..

Именно небольшая кривизна и смущает)
...
Рейтинг: 0 / 0
Разнородные документы
    #38795647
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLТогда не получится контролировать целостность по этому полю.
Какая ещё целостность у журнала? Он по определению должен выживать даже если сам документ
уже стёрли или изменили.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разнородные документы
    #38795652
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAndrewVLТогда не получится контролировать целостность по этому полю.
Какая ещё целостность у журнала? Он по определению должен выживать даже если сам документ
уже стёрли или изменили.


Целостность, это чтобы в это поле не нельзя было записать значение не из например таблицы doc1

Еще такой вопрос по кривизне )

Есть вот такая структура
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Doc_root (
       PK: integer;
        Orgid: integer;
)
Docs (
      PK: integer;
      Doc_root_id: integer;
      DocSubType:integer;
)



Получается , чтобы выбрать документы определенного подтипа по организации, надо сначала отфильтровать по doc_root.orgid .но тогда у нас получится что из docroot будут выбраны все документы организации. Даже те , которые не хранятся в docs.
...
Рейтинг: 0 / 0
Разнородные документы
    #38795657
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLЦелостность, это чтобы в это поле не нельзя было записать значение не из
например таблицы doc1
Она обоюдоострая: значение из таблицы doc1 уже нельзя будет удалить если оно было хоть раз
записано в журнал. В данном случае обеспечить невозможность записи левых значений лучше
отбиранием права на запись у пользователей и выдачей его исключительно специально
обученной процедуре, которая и экспорт проведёт и правильную запись об этом в журнале оставит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разнородные документы
    #38795661
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAndrewVLЦелостность, это чтобы в это поле не нельзя было записать значение не из
например таблицы doc1
Она обоюдоострая: значение из таблицы doc1 уже нельзя будет удалить если оно было хоть раз
записано в журнал. В данном случае обеспечить невозможность записи левых значений лучше
отбиранием права на запись у пользователей и выдачей его исключительно специально
обученной процедуре, которая и экспорт проведёт и правильную запись об этом в журнале оставит.

протправа и пользователя не понял) у меня по сути один пользователь. Тут вижу решение только через триггер. При вставке в root проверять по типу документа его наличие в таблице. Ну и исключение если что.
...
Рейтинг: 0 / 0
Разнородные документы
    #38795664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLпротправа и пользователя не понял) у меня по сути один пользователь
И ты боишься как бы этот пользователь не записал в журнал экспорта всякую ерунду, поэтому
хочешь защитить его (журнал) внешним ключом. Не так ли?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разнородные документы
    #38795668
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

не пользователь, а я ))) всяко бывает )

Что можете по сообщению чуть выше сказать? про выборку по организации и подтипу
...
Рейтинг: 0 / 0
Разнородные документы
    #38795761
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLЕсть несколько типов документов. На каждый тип разный набор таблиц шапка-тело.

А сколько всего типов ?
Планируется ли добавление новых типов документов ?
...
Рейтинг: 0 / 0
Разнородные документы
    #38795785
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagAndrewVLЕсть несколько типов документов. На каждый тип разный набор таблиц шапка-тело.

А сколько всего типов ?
Планируется ли добавление новых типов документов ?

Сейчас 4 типа. У одного типа 12 подтипов. Типы планирую добавлять
...
Рейтинг: 0 / 0
Разнородные документы
    #38795795
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLСейчас 4 типа. У одного типа 12 подтипов.

А это ещё как ? Оно не вяжется с первой постановкой... или можно считать что 3 типа + 12 подтипов = пока 15 независимых типов ?
Или всё таки есть еще одна не описанная изначально иерархия ?
...
Рейтинг: 0 / 0
Разнородные документы
    #38795815
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag, думается мне что это всё-таки иерархия и независимых типов всего 12 (по количеству подтипов)
...
Рейтинг: 0 / 0
Разнородные документы
    #38795841
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLСейчас 4 типа. У одного типа 12 подтипов. Типы планирую добавлять
и
Mr.Fontainevmag, думается мне что это всё-таки иерархия и независимых типов всего 12 (по количеству подтипов)
вообще не стыкуется...
...
Рейтинг: 0 / 0
Разнородные документы
    #38795902
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag, извиняюсь. Невнимательно прочитал. Извините. Гаданием заниматься больше не буду. Сегодня
...
Рейтинг: 0 / 0
Разнородные документы
    #38796273
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagAndrewVLСейчас 4 типа. У одного типа 12 подтипов.

А это ещё как ? Оно не вяжется с первой постановкой... или можно считать что 3 типа + 12 подтипов = пока 15 независимых типов ?
Или всё таки есть еще одна не описанная изначально иерархия ?

все вяжется. можно просто в doc_root добавить поле docType. А подтип для одного типа документа в doc1.DocsubType.
Прочие типы документов хранятся в таблицах типа docX
...
Рейтинг: 0 / 0
Разнородные документы
    #38796733
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLвсе вяжется. можно просто в doc_root добавить поле docType.

я не про это... можно что угодно добавить куда угодно... мне интересно почему 2 + 2 = 9
...
Рейтинг: 0 / 0
Разнородные документы
    #38796738
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagAndrewVLвсе вяжется. можно просто в doc_root добавить поле docType.

я не про это... можно что угодно добавить куда угодно... мне интересно почему 2 + 2 = 9

Да просто все) 4 типа. Каждый хранится в отдельной таблице. У первого типа есть 12 подтипов. Подтип это просто флаг в таблице , имеющий 12 значений
...
Рейтинг: 0 / 0
Разнородные документы
    #38796741
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLДа просто все) 4 типа. Каждый хранится в отдельной таблице. У первого типа есть 12 подтипов. Подтип это просто флаг в таблице , имеющий 12 значений

а если не 4? и если не 12 ? вот я и говорю - чтобы сделать деталь на станке - нужно хотя бы представлять её в уме правильно...
...
Рейтинг: 0 / 0
Разнородные документы
    #38796743
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagAndrewVLДа просто все) 4 типа. Каждый хранится в отдельной таблице. У первого типа есть 12 подтипов. Подтип это просто флаг в таблице , имеющий 12 значений

а если не 4? и если не 12 ? вот я и говорю - чтобы сделать деталь на станке - нужно хотя бы представлять её в уме правильно...

Именно 4 и 12. 4 максимум может увеличиться до 8.
Хотя- это разве принципиально?)
Как вариант docsubtype можно продублировать в docroot. Тогда по подтипу без проблем можно будет выборку делать.
В данном варианте смущает только одно. Что в root для первого типа подтип будет заполнен. А для других типов нет. Смущает чисто концептуально
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Разнородные документы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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