powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / структура БД
9 сообщений из 9, страница 1 из 1
структура БД
    #35229582
M2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
M2k
Гость
есть таблица - опись документов
------------------------------------
id_dokumenta - идентификатор документа
id_tome - место нахождение в архиве
id_dela - тоже самое тока в большем маштабе
names - название документа
vladelec - кто его создал
text_dok - текст документа
list - количество листов в документе
list_n - лист с которого документ начинается
list_k - лист который говорит где документ заканчивается
----------------------------------------------------

сейчас а таблице около 5 000 000 записей. понятно, что когда документ изменяется (ну скажем начинался с 100 странице, а заканчивался 120 и становится на 3 листа больше ) то место положение всех остальных документов этого тома приходится пересчитывать в среднем сейчас это занимает 20-30 минут (прирост документов постоянный ориентировачно 1 000 000 документов в год)

вопрос в следующем уменьшется ли существенно время пересчет место положения документов, если разбить эту таблицу ну скажем каждый, том - отдельная таблица (ограничения тома 500 листов), или имеет смысл брать деление таблиц по делам (ограничения по количеству томов нет, ограничение томов тоже 500 листов)
...
Рейтинг: 0 / 0
структура БД
    #35229671
EC1040
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. По-моему достаточно полей list и list_n. list_k - или на нем может быть окончание одного документа и начало другого.
2. Не лучше ли хранить порядковый номер документа в деле и считать страницу начала при требовании конкретного документа? Тогда
даже поле list необязательно. Как понимаю "приходится пересчитывать "= "приходится править записи в базе."
Сделайте поля с номерами страниц расчетными - возможно будет быстрее.

По созданию разных таблиц - вместо того, чтобы динамически создавать таблицы в базе и, соответственно, динамически генерить к ним запросы я бы лучше задумался о секционировании.
...
Рейтинг: 0 / 0
структура БД
    #35229681
Фотография PaulYoung
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M2k
list_n - лист с которого документ начинается
list_k - лист который говорит где документ заканчивается

Зачем вам эти поля, можно полюбопытствовать?
...
Рейтинг: 0 / 0
структура БД
    #35229730
_DocSerzh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
M2kесть таблица - опись документов
------------------------------------
id_dokumenta - идентификатор документа
id_tome - место нахождение в архиве
id_dela - тоже самое тока в большем маштабе
names - название документа
vladelec - кто его создал
text_dok - текст документа
list - количество листов в документе
list_n - лист с которого документ начинается
list_k - лист который говорит где документ заканчивается
----------------------------------------------------

сейчас а таблице около 5 000 000 записей. понятно, что когда документ изменяется (ну скажем начинался с 100 странице, а заканчивался 120 и становится на 3 листа больше ) то место положение всех остальных документов этого тома приходится пересчитывать в среднем сейчас это занимает 20-30 минут (прирост документов постоянный ориентировачно 1 000 000 документов в год)

вопрос в следующем уменьшется ли существенно время пересчет место положения документов, если разбить эту таблицу ну скажем каждый, том - отдельная таблица (ограничения тома 500 листов), или имеет смысл брать деление таблиц по делам (ограничения по количеству томов нет, ограничение томов тоже 500 листов)

почетче картину можно? "лист с которого документ начинается" - не знаю таких типов данных
...
Рейтинг: 0 / 0
структура БД
    #35230015
M2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
M2k
Гость
EC10401. По-моему достаточно полей list и list_n. list_k - или на нем может быть окончание одного документа и начало другого.
2. Не лучше ли хранить порядковый номер документа в деле и считать страницу начала при требовании конкретного документа? Тогда
даже поле list необязательно. Как понимаю "приходится пересчитывать "= "приходится править записи в базе."
Сделайте поля с номерами страниц расчетными - возможно будет быстрее.

По созданию разных таблиц - вместо того, чтобы динамически создавать таблицы в базе и, соответственно, динамически генерить к ним запросы я бы лучше задумался о секционировании.

list_n. list_k нужны так как при изяти документа номерация остальных, должна сохранится, она пересчитывается тока при изменении документа
(это делает тригер)

поле list - служит для статистики и контроля

что касается привязок то сейчас сделано так (есть 3 таблицы с привязками 1 ко многим (дело - том - документ )) в деле - список всх дел и ключи к ним в томе привязка к делу и список всех томов по всем делам , а в документ список всех документов с привязкой по делу и тому

вот я и спрашиваю что лучше хранить 1 маленькую 1 среднюю и 1 большую таблицу как сейчас
или имеет смысл разбть большую таблицу на множество маленьких которые соответсвуют томам (тоесть ограничивается табличка 500 листами и затем по мере надобности генерится новая ) ? или разбить ее на большего размера по делам тоесть таблицы соответсвуют делам и хранят документы водящии тока в 1 дело ?
во втором случии мы имеем количестов таблиц соответствующее томам которых очень много, а в третьем случии мы имеем меньше таблиц соответствующие делам

что будет быстрее работать и удобнее хранить?
...
Рейтинг: 0 / 0
структура БД
    #35230045
M2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
M2k
Гость
_DocSerzh

почетче картину можно? "лист с которого документ начинается" - не знаю таких типов данных

это не тип данных а описание столбца - тоесть то для чего он служит а тип там стоит ( int )
...
Рейтинг: 0 / 0
структура БД
    #35230376
EC1040
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я понимаю, что для программиста русская грамматика не критична, но все таки читать Ваши посты неприятно
M2k
list_n. list_k нужны так как при изяти документа номерация остальных, должна сохранится, она пересчитывается тока при изменении документа
(это делает тригер)
Что значит пересчитывается? Изменяются значения полей list_n и list_k?
Выложите типы всех полей в таблице документов и индексы, которые на этой таблице есть

M2k поле list - служит для статистики и контроля
Какую статистику Вы собираете и что контролируете?
M2k
вот я и спрашиваю что лучше хранить 1 маленькую 1 среднюю и 1 большую таблицу как сейчас
или имеет смысл разбть большую таблицу на множество маленьких что будет быстрее работать и удобнее хранить?
Вопрос удобства как вопрос вкуса - кому как. По моему мнению удобнее как сейчас. По скорости - скорее всего будет быстрее несколько маленьких таблиц, однако при неразумном их создании, неграмотном построении запросов к этим таблицам и т.п. вы можете потерять в скорости по сравнению с большой секционированной таблицей.

По имеющейся информации повторяю - вам нужен номер документа в деле и количество листов. Пересчитывать номера листов в триггере на таблице в 5 млн. записей НЕРАЗУМНО!
...
Рейтинг: 0 / 0
структура БД
    #35230822
M2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
M2k
Гость
EC1040Я понимаю, что для программиста русская грамматика не критична, но все таки читать Ваши посты неприятно


за граматику приношу извинения, надеюсь я не много доставил неприятностей когда вы читали мою ахинею

-----------------------------
Что значит пересчитывается? Изменяются значения полей list_n и list_k?
Выложите типы всех полей в таблице документов и индексы, которые на этой таблице есть

------------------------------
1.да эти значения меняются, в том случии если документ меняется (тоесть меняется колличество листов в документе), если документ просто изымается то поля остаются такими как есть

2.по поводу контроля это поле нужно для контроля нахождения документа в томе, так как длина тома ограничена количеством листо, то по этому полю сейчас расчитывается в каком томе должен находится документ

и 1 и 2-ю задачу выполняют тригеры и хранимые процедуры

не спрашивай по чему так (тут замешана большая политика руководства и повлиять на нее не в моих силах) (эта база задумывалась как маленькая картотека и никто не расчитывал, что ей начнут пользоватся в канторе)

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

(тока пока не знаю, что лучше очень много маленьких таблиц (томов) и генерация их по мере появления новых томов или всетаки отталкиватся от колличества дел и заводить таблицы по колличеству дел
в числовом варианте выглядит это так - дела сейчас 58 869 и заводятся новые редко, а вот томов ну если примерно, то в кажом деле - томов штук 5 точно есть , а может и большеи и заводятся они в месяц по 3-4, правда не во всех делах )

что касается секционирования то я - сейча читаю доки об этом звере попробую сделать 2 варианта посмотрим что выйдет

если есть какие нибудь еще предложения или варианты буду рад их выслушать
...
Рейтинг: 0 / 0
структура БД
    #35233362
EC1040
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я не совсем понял.
58000 дел
по 5 томов в каждом, т.е. ~300000 томов
не более 500 листов в каждом томе

если на таблице документов есть индекс по id_tome и никаких других нет, то
Код: plaintext
update опись документов set list_n=*, list_k=list_n+list where id_tome=@id_tome 
должен выполняться строго по индексу. Если при этом задействовано не более 500 строк, то не должно уж быть дикого проседания базы.
Сколько пользователей, насколько часто изменяются данные.
Уже звучало, что хорошо бы индексы и типы полей. Версию сервера и какие нибудь данные о производительности машины.

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


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