powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблиц с накладными
25 сообщений из 75, страница 3 из 3
Структура таблиц с накладными
    #32585100
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про исбыточность - Информации нет а поле есть, вот какая :)

Я не про обновление говорю, а, скажем, если надо изменить бизнес правило, добавить одну процедуру на документ итп.

Про инсертед - не могу судить так смело, так как не знаю что происходит внутри сервера, но предполагаю что инсертед всеже есть, иначе откуда он узнает что вставлено и куда. :))

Про сервера - да существуют и другие, но анализ по всем проводить не собираюсь, вы-то так и не сказали на каком у вас система, но сказали что от системы не зависит, значит достаточно найти факты хотябы об одном чтобы опровергнуть высказываение?

Про округление - инетерсно, в каком случае проблем с округлением нет?
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585146
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaесли надо изменить бизнес правило, добавить одну процедуру на документ итп.
Под if делается и все.

TimKaПро сервера - да существуют и другие, но анализ по всем проводить не собираюсь, вы-то так и не сказали на каком у вас система
Текущее место работы - MSSQL2000 и ASE. До этого приходилось работать и на DB2/INFORMIX/ORACLE. Про наличие сего факта для MSSQL я уже писал.

TimKaПро округление - инетерсно, в каком случае проблем с округлением нет?
Если как numeric. Более того, он на всех платформах проблем не знает.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585211
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теория, практика...

Вот Вам практика:
Фирма работает 9 лет, все в разных таблицах, даже в нескольких базах.
Закопались так, что признали -- работать так дальше невозможно.
Пригласили меня -- сижу уже пол-года разгребаю эту кучу г... т.е. информации. А теперь о том, что занимает 90% времени:
1. Разбираюсь в структуре каждой таблицы. А структура у каждой таблички разная.
2. Из десяти однотипных, но разных таблиц заливаю данные в одну.

Прибил бы разработчиков...

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

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

А реально программист должен автоматизировать предприятие.
Сказать: работайте, я дал вам все необходимое -- и уйти!
Это в идеале конечно. Если предприятие не расширяется часто.

Нужен новый документ -- пользователь создал новый вид документа.
Нужен новый вид товара -- пользователь создал новый вид товара.
Нужен новый вид корреспондента -- пользователь создал новый вид корреспонднета.
Нужна аналитика -- добавил аналитику.
Нужен отчет -- добавил отчет.
Все сам!
Без создания новых таблиц и изменения в структуре БД.

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

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

так if стоит в триггере на всю таблицу, а не на отдельный документ.

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

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

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

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

А ведь еще есть раздача прав, секурность и все такое :)
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585390
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот теперь скажите, в какую систему проще добавить документ - в однотабличную или многотабличную?

Вам видимо проще в многотабличную... Мне наоборот. Мы оба правы.

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

Нет, не должен. Я вообще ничего не должен.
Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права.
(Чтобы Вы правильно меня поняли -- все это он делает со своего рабочего места, с клиента, о существовании табличек он даже не подозревает.)

Может быть Вы на примере покажете, где я что-то должен.

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

Это называется "просто"? Все. Вы меня окончательно убедили, что многотабличные системы -- это ужас! :)

А ведь еще есть раздача прав, секурность и все такое :)
Обязательно! Обязательно должен быть человек, который занимается раздачей прав. Программа клиент-администратор.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585429
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaно ошибки округления то куда деваются? хоть нумерик хоть карренси, округлять до двух знаков надо
Это с чего это так вдруг до двух-то? У нас например, настройка есть специальная. Да и если одна валюта базовая, другая зависимая (просто через множитель), почему они должны одинаково окруляться?
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585444
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не должен. Я вообще ничего не должен.
Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права.

Ну правильно, а дальше то что происходит? что делает при этом программа, в общих чертах? Мне просто стало интересно, я ведь не спорю... К примеру создает он папку, указывает поля документа, пишет формулы проводок и нажимает ок, дальше что?
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585451
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов TimKaно ошибки округления то куда деваются? хоть нумерик хоть карренси, округлять до двух знаков надо
Это с чего это так вдруг до двух-то? У нас например, настройка есть специальная. Да и если одна валюта базовая, другая зависимая (просто через множитель), почему они должны одинаково окруляться?

ну пять валют, знаков от одного до пяти, какая разница )) округлять то надо, куда ошибки то деваются?
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585472
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaНу правильно, а дальше то что происходит? что делает при этом программа, в общих чертах? Мне просто стало интересно, я ведь не спорю... К примеру создает он папку, указывает поля документа, пишет формулы проводок и нажимает ок, дальше что?

Да собственно все. На этом работа начальника отдела заканчивается. Дальше пользователь/оператор становится на эту папку, создает документ, заполняет, сохраняет. Все. Проводки есть. Можно смотреть отчеты/остатки/движение...

Видно, что знаете область, приятно с Вами иметь дело.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585499
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо быть таким начальником, у которого работа на этом заканчивается :) Зашел в программу - создал папку - пошел отдыхать :) Но я то про программу спросил :))
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585501
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaкуда ошибки то деваются?
Странный вопрос.

Данные в БД большей частью попадают неокругленые (не только суммы валют, то же количество). В момент расчета (суммы, доступного остатка,...) производится округление.

В общем, вопрос я не понял. По мне он аналогичне вопросу, куда деваются крошки от мацы, воск со свечей и далее как в известном анекдоте.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585553
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вы написали, что тип currency знает проблемы с округлением, а тип numeric нет, независимо от платформы, вот и вопрос - какие проблемы то? я не шучу, мне правда это важно знать.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585565
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо быть таким начальником, у которого работа на этом заканчивается :) Зашел в программу - создал папку - пошел отдыхать :)

А программистом быть еще лучше. :) Он даже папку не создавал, он вообще ничего не делал. Он вообще в Quake играет... :)

Но я то про программу спросил :))

А что программа должна делать?
Появилась запись в т. "Папки документов", появилась запись в т. "Правила создания документов". Появились записи в т. "Права пользователя".
Я упрощаю конечно, но логика именно такая.
Начали появляться записи в т. "Документы", в т. "Содержимое документа" в т. "Дерево документов"...
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585614
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Николай, вобщем то же самое происходит и в многотабличной среде, только появляется еще и таблички отдельные, никем не перепутаные :)

А программист все пьет и пьет пиво и играет в квейк :)
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585621
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimKaну вы написали, что тип currency знает проблемы с округлением, а тип numeric нет, независимо от платформы
1) Что будет с currency, если сделать дамп на одной платформе и поднять на другой?
2) Хранение сумм по конкретной валюте может зависеть от настроек округления currency? А если мне надо 6 знаков после запятой (в простейшем случае - кросс-курс, если в системе есть валюты в 1000 раз больше и в 1000 раз меньше некоторой)?
Есть еще причины, н они с SQL не связаны, например, внутренний формат хранения money в BDE, из-за которого может возникать небольшая но все же ошибка. Собственно, это не аргумент, это так.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585691
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем, с каренси понятно - зависимость от платформы. Я с этим слабо знаком, но думаю что найдутся и другие типы, что могут пострадать при переносе....

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

Ситуация №1
И вы написали новую версию клиента. И нужно структуру базы обновить.
В случае однотабличной структуры вы не задумываетесь над тем, чем занимается предприятие и пишете для всех своих предприятий -- (вы хороший программист и ваша программа используется на нескольких фирмах) одинаковый скрипт обновления.

В случае многотабличной структуры Вы не представляете структуру БД каждого предприятия, не знаете сколько там таблиц, не знаете структуры новых таблиц, вы не знаете ничего -- и чтобы обновить версию Вы объезжаете каждую фирму отдельно...
Да о каком обновлении может идти речь, если везде разные клиентские программы -- под разные структуры.

Впрочем, если Вы решаете эти проблемы -- Вы действительно хороший программист. :)

Ситуация №2
Вам предложили работу в другой фирме, где другая структура БД, на большую зарплату.

В случае монотабличной структуры время на освоение новой базы будет минимальным, поскольку единая т. Документы не может сильно отличаться от единой т. Документы в другой базе.

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

Впрочем мое мнение конечно необъективно... :)
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585785
Nikola18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долго читал, и решил поделиться своим опытом.
По-началу тоже счёл, что приход и расход суть движения с одинаковыми атрибутами и засунул всё в одну таблицу. Потом туда засунул также и возврат, и переоценку.

Со временем, у расхода появилось много дополнительной информации и, честно говоря, уже пожалел, что сделал одной таблицей. Просто устаю вспоминать, какой флаг что значит (приход-новый, приход-возврат, расход-опт, расход-рознциа, расход-переоценка и т.д.), написал даже памятку себе :).

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

А также по поводу:
Николай МВ вы должны залезть и поправить триггеры, работающие на обеспечение целостности, как минимум...

Нет, не должен. Я вообще ничего не должен.
Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права.
(Чтобы Вы правильно меня поняли -- все это он делает со своего рабочего места, с клиента, о существовании табличек он даже не подозревает.)
Ну тут флаг в руки программисту для написания "программы клиент-администратора" с возможностью добавлять и новые папки и т.д.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585814
Николай МВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Nikola18
См. мой пост выше № 777380.
Предположительный вариант развития Вашей базы.
Не хочу Вас обидеть, конечно если делать хорошо, то оно всегда хорошо. :)
Флаг в руках, программа клиент-администратор тоже... ;)
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32585934
TimKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация №1

Новый клиент под одну таблицу ничем не отличается от нового клиента под многие - как в первом так и во втором случае вы должны знать документооборот на каждом предприятии, и бизнес процессы - а привязать к клиенту одну табличку или десять - в соответствии со структурой документов - дело техники, если есть система в наименованиях таблиц - это делается так же одним скриптом. В самом деле - у вас пять форм под пять документов. У каждого свои поля. В чем отличие, привязываете ли вы к ним одну таблицу, но читая оттуда разные поля, в зависимости от документа, или пять? Да только в том, что путаницы меньше с полями.

Ситуация №2

А вот здесь я полностью согласен с вами в той части, что несколько таблиц обязывают к дисциплине, и если нет системы, соглашений имен, соглашений об обязательных полях итд итп то в такой каше значительно труднее разобратся - но это вопрос к тому, кто до вас создавал ее, мы-то с вами умнее ;)
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32586267
Фотография vma_mnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было у меня несколько проектов на тему. Тоже писал и одной таблицей, и в разные.

Вывод такой.
Самая простая и понятная, и удобная структура - это Шапка + подчиненная таблица для прихода, расхода, списания, передачи в производство и т.д.

Все остальное со временем превращается в большие заморочки.

Сам, когда приходится что-то править в старых своих однотабличных проектах, думаю, какой дурак все это придумал.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32586889
Пользователь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я по большей части пользователь, но все же у меня сложилось твердое свое мнение об учетной системе (склад - бухгалтерия, без аналитики - всяких олапов).

В одной - многих таблицах - для меня не суть.

Разделение для меня происходит по следующему критерию:
- есть первичные документы, те что приходят или генерятся (отличительная черта - объем растет линейно со временем).
- есть статистика по первичным документам (остатки, реестры, регистры, справочники, ...) (объем почти не растет).

И для меня правильно организованная структура хранения такая:
- четко отделять области первичных документов и статистики по ним (скорость доступа к первичным документам не важна, к статистике - критична),
- пользователь работает ТОЛЬКО со статистикой, в первичные дкументы почти не лезет (если лезет - то только прочитать).

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

Мнения против этого - обычно - что нельзя наладить статистику на все случаи жизни. И отсюда возникают тяжелые запросы ко всей накопленой базе и заторы. А может я просто больших баз не видел, может там сделано правильно.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32586898
Пользователь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я по большей части пользователь, но все же у меня сложилось твердое свое мнение об учетной системе (склад - бухгалтерия, без аналитики - всяких олапов).

В одной - многих таблицах - для меня не суть.

Разделение для меня происходит по следующему критерию:
- есть первичные документы, те что приходят или генерятся (отличительная черта - объем растет линейно со временем).
- есть статистика по первичным документам (остатки, реестры, регистры, справочники, ...) (объем почти не растет).

И для меня правильно организованная структура хранения такая:
- четко отделять области первичных документов и статистики по ним (скорость доступа к первичным документам не важна, к статистике - критична),
- пользователь работает ТОЛЬКО со статистикой, в первичные дкументы почти не лезет (если лезет - то только прочитать).

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

Мнения против этого - обычно - что нельзя наладить статистику на все случаи жизни. И отсюда возникают тяжелые запросы ко всей накопленой базе и заторы. А может я просто больших баз не видел, может там сделано правильно.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32587915
Фотография Leonid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень полезная тема.

To Сергей Васкецов:
Подход с одной таблицей интересен и привлекателен с точки зрения некой базовой универсальности.
Хочу Вас спросить, а нет ли у Вас проблем с блокировками в этой связи?
В данном случае возрастет количество обращений к двум таблицам (условно "шапка" и "сроки") -> повышается вероятность эскалации блокировок.
...
Рейтинг: 0 / 0
Структура таблиц с накладными
    #32587934
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidВ данном случае возрастет количество обращений к двум таблицам (условно "шапка" и "сроки") -> повышается вероятность эскалации блокировок.
На ASE (слава богу! в отличие от MSSQL) можно задать уровень блокировки, он у нас везде lock datarows.
Для обеих платформ у нас имеется некий механизм собственной блокировки, который дело до begin tran может даже и не довести.
В целом - проблем нет.
...
Рейтинг: 0 / 0
25 сообщений из 75, страница 3 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблиц с накладными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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