Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Про исбыточность - Информации нет а поле есть, вот какая :) Я не про обновление говорю, а, скажем, если надо изменить бизнес правило, добавить одну процедуру на документ итп. Про инсертед - не могу судить так смело, так как не знаю что происходит внутри сервера, но предполагаю что инсертед всеже есть, иначе откуда он узнает что вставлено и куда. :)) Про сервера - да существуют и другие, но анализ по всем проводить не собираюсь, вы-то так и не сказали на каком у вас система, но сказали что от системы не зависит, значит достаточно найти факты хотябы об одном чтобы опровергнуть высказываение? Про округление - инетерсно, в каком случае проблем с округлением нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 13:24 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
TimKaесли надо изменить бизнес правило, добавить одну процедуру на документ итп. Под if делается и все. TimKaПро сервера - да существуют и другие, но анализ по всем проводить не собираюсь, вы-то так и не сказали на каком у вас система Текущее место работы - MSSQL2000 и ASE. До этого приходилось работать и на DB2/INFORMIX/ORACLE. Про наличие сего факта для MSSQL я уже писал. TimKaПро округление - инетерсно, в каком случае проблем с округлением нет? Если как numeric. Более того, он на всех платформах проблем не знает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 13:34 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Теория, практика... Вот Вам практика: Фирма работает 9 лет, все в разных таблицах, даже в нескольких базах. Закопались так, что признали -- работать так дальше невозможно. Пригласили меня -- сижу уже пол-года разгребаю эту кучу г... т.е. информации. А теперь о том, что занимает 90% времени: 1. Разбираюсь в структуре каждой таблицы. А структура у каждой таблички разная. 2. Из десяти однотипных, но разных таблиц заливаю данные в одну. Прибил бы разработчиков... Понапихали все в разные таблицы, теперь элементарное сальдо по корреспонденту посчитать не могут, потому что у них один и тот же корреспондент в трех-четырех разных таблицах сидит. И еще один плюс насчет объединения данных в меньшем количестве таблиц. Почему-то все считают, что фирма должна иметь в штате команду программистов, которые будут под каждый чих директора настраивать базу данных. Точнее так считают программисты, которые всегда хотят кушать и всегда готовы работать над базой -- лишь бы делом не заниматься. А реально программист должен автоматизировать предприятие. Сказать: работайте, я дал вам все необходимое -- и уйти! Это в идеале конечно. Если предприятие не расширяется часто. Нужен новый документ -- пользователь создал новый вид документа. Нужен новый вид товара -- пользователь создал новый вид товара. Нужен новый вид корреспондента -- пользователь создал новый вид корреспонднета. Нужна аналитика -- добавил аналитику. Нужен отчет -- добавил отчет. Все сам! Без создания новых таблиц и изменения в структуре БД. Конечно это в идеале, но к этому иделу нужно стремиться! Нужно стремиться к автоматизации деятельности предприятия к самостоятельной работе пользователей а не завязывать на себе все потоки. Понятно, что нужна четкая система распределия прав. Но это всегда нужно. В реальности большинстов программистов готовы каждый день наворачивать структуру базы, исправлять свои ошибки, курочить уже работающее, переделывать плохо сделаное, наспех делать новое с одной целью -- постоянно доказывать начальству, что без него никак, что он с утра до вечера занят, что он трудится не покладая рук, что ему нужно повысить зарплату, нанять еще двоих-троих подчиненных... и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 13:52 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
2 Сергей так if стоит в триггере на всю таблицу, а не на отдельный документ. ну ладно, оставим про триггеры и связи пока я сам не испытаю это на своей шкуре )) если одни говорят одно, а другие - другое, надо испытывать самому. но ошибки округления то куда деваются? хоть нумерик хоть карренси, округлять до двух знаков надо... и в топике про округления народ весь за каренси голосует. 2 Николай - полностью согласен - в том плане что должна быть система и грамотно спроектировано все. Если не грамотно - что много табличек что одна, замучаешься разгребать. А вот теперь скажите, в какую систему проще добавить документ - в однотабличную или многотабличную? Разница в том, если так можно выразится, что часть работы при многотабличной организации перетекает с кода на структуру - если вы однотабличной вы добавили тип документа, вы должны залезть и поправить триггеры, работающие на обеспечение целостности, как минимум... В многотабличной вы просто генерите из шаблона таблицы и отношения, и триггеры к ним, и базовые процедуры - добавить провести док итп. и все в одном месте, систематизировано по названию. Почему генерить документы без изменения структуры вы считаете проще, чем с изменением, не пойму... Конечно, если сервер выполняет функцию хранилища данных да и только, а вся бизнеслогика реализована на клиенте, возможно это и так... А ведь еще есть раздача прав, секурность и все такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 14:25 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
А вот теперь скажите, в какую систему проще добавить документ - в однотабличную или многотабличную? Вам видимо проще в многотабличную... Мне наоборот. Мы оба правы. вы должны залезть и поправить триггеры, работающие на обеспечение целостности, как минимум... Нет, не должен. Я вообще ничего не должен. Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права. (Чтобы Вы правильно меня поняли -- все это он делает со своего рабочего места, с клиента, о существовании табличек он даже не подозревает.) Может быть Вы на примере покажете, где я что-то должен. В многотабличной вы просто генерите из шаблона таблицы и отношения, и триггеры к ним, и базовые процедуры... Это называется "просто"? Все. Вы меня окончательно убедили, что многотабличные системы -- это ужас! :) А ведь еще есть раздача прав, секурность и все такое :) Обязательно! Обязательно должен быть человек, который занимается раздачей прав. Программа клиент-администратор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 14:41 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
TimKaно ошибки округления то куда деваются? хоть нумерик хоть карренси, округлять до двух знаков надо Это с чего это так вдруг до двух-то? У нас например, настройка есть специальная. Да и если одна валюта базовая, другая зависимая (просто через множитель), почему они должны одинаково окруляться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 14:54 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Нет, не должен. Я вообще ничего не должен. Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права. Ну правильно, а дальше то что происходит? что делает при этом программа, в общих чертах? Мне просто стало интересно, я ведь не спорю... К примеру создает он папку, указывает поля документа, пишет формулы проводок и нажимает ок, дальше что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 14:57 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецов TimKaно ошибки округления то куда деваются? хоть нумерик хоть карренси, округлять до двух знаков надо Это с чего это так вдруг до двух-то? У нас например, настройка есть специальная. Да и если одна валюта базовая, другая зависимая (просто через множитель), почему они должны одинаково окруляться? ну пять валют, знаков от одного до пяти, какая разница )) округлять то надо, куда ошибки то деваются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 14:59 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
TimKaНу правильно, а дальше то что происходит? что делает при этом программа, в общих чертах? Мне просто стало интересно, я ведь не спорю... К примеру создает он папку, указывает поля документа, пишет формулы проводок и нажимает ок, дальше что? Да собственно все. На этом работа начальника отдела заканчивается. Дальше пользователь/оператор становится на эту папку, создает документ, заполняет, сохраняет. Все. Проводки есть. Можно смотреть отчеты/остатки/движение... Видно, что знаете область, приятно с Вами иметь дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:04 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Хорошо быть таким начальником, у которого работа на этом заканчивается :) Зашел в программу - создал папку - пошел отдыхать :) Но я то про программу спросил :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:15 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
TimKaкуда ошибки то деваются? Странный вопрос. Данные в БД большей частью попадают неокругленые (не только суммы валют, то же количество). В момент расчета (суммы, доступного остатка,...) производится округление. В общем, вопрос я не понял. По мне он аналогичне вопросу, куда деваются крошки от мацы, воск со свечей и далее как в известном анекдоте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:15 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
ну вы написали, что тип currency знает проблемы с округлением, а тип numeric нет, независимо от платформы, вот и вопрос - какие проблемы то? я не шучу, мне правда это важно знать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:32 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Хорошо быть таким начальником, у которого работа на этом заканчивается :) Зашел в программу - создал папку - пошел отдыхать :) А программистом быть еще лучше. :) Он даже папку не создавал, он вообще ничего не делал. Он вообще в Quake играет... :) Но я то про программу спросил :)) А что программа должна делать? Появилась запись в т. "Папки документов", появилась запись в т. "Правила создания документов". Появились записи в т. "Права пользователя". Я упрощаю конечно, но логика именно такая. Начали появляться записи в т. "Документы", в т. "Содержимое документа" в т. "Дерево документов"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:34 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Николай, вобщем то же самое происходит и в многотабличной среде, только появляется еще и таблички отдельные, никем не перепутаные :) А программист все пьет и пьет пиво и играет в квейк :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:50 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
TimKaну вы написали, что тип currency знает проблемы с округлением, а тип numeric нет, независимо от платформы 1) Что будет с currency, если сделать дамп на одной платформе и поднять на другой? 2) Хранение сумм по конкретной валюте может зависеть от настроек округления currency? А если мне надо 6 знаков после запятой (в простейшем случае - кросс-курс, если в системе есть валюты в 1000 раз больше и в 1000 раз меньше некоторой)? Есть еще причины, н они с SQL не связаны, например, внутренний формат хранения money в BDE, из-за которого может возникать небольшая но все же ошибка. Собственно, это не аргумент, это так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 15:52 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Вобщем, с каренси понятно - зависимость от платформы. Я с этим слабо знаком, но думаю что найдутся и другие типы, что могут пострадать при переносе.... Сам кросс курс конечно глупо хранить в каренси, потому что курс это не деньги а коэффициент... С правилами округления вообще надо быть осторожным - тут как раз зависимость и от платформ и о компиляторов всегда была, надо просто использовать функции округления, которые заранее известно как округляют на любой платформе, имхо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:13 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
А теперь представим себе что Вы программист. Ситуация №1 И вы написали новую версию клиента. И нужно структуру базы обновить. В случае однотабличной структуры вы не задумываетесь над тем, чем занимается предприятие и пишете для всех своих предприятий -- (вы хороший программист и ваша программа используется на нескольких фирмах) одинаковый скрипт обновления. В случае многотабличной структуры Вы не представляете структуру БД каждого предприятия, не знаете сколько там таблиц, не знаете структуры новых таблиц, вы не знаете ничего -- и чтобы обновить версию Вы объезжаете каждую фирму отдельно... Да о каком обновлении может идти речь, если везде разные клиентские программы -- под разные структуры. Впрочем, если Вы решаете эти проблемы -- Вы действительно хороший программист. :) Ситуация №2 Вам предложили работу в другой фирме, где другая структура БД, на большую зарплату. В случае монотабличной структуры время на освоение новой базы будет минимальным, поскольку единая т. Документы не может сильно отличаться от единой т. Документы в другой базе. В случае многотабличной структуры Вам придется изучать все новые таблицы и разбираться со структурой каждой новой таблицы. И времени уйдет гораздо больше. Впрочем мое мнение конечно необъективно... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:29 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Долго читал, и решил поделиться своим опытом. По-началу тоже счёл, что приход и расход суть движения с одинаковыми атрибутами и засунул всё в одну таблицу. Потом туда засунул также и возврат, и переоценку. Со временем, у расхода появилось много дополнительной информации и, честно говоря, уже пожалел, что сделал одной таблицей. Просто устаю вспоминать, какой флаг что значит (приход-новый, приход-возврат, расход-опт, расход-рознциа, расход-переоценка и т.д.), написал даже памятку себе :). С тех пор пришёл к выводу, что если есть хоть какой-то намёк на разный функционал у 2-х типов объектов, то разношу их в разные таблицы. И очень рад этому своему решению, т.к. сопровождение стало просто на 2 порядка легче в понимании и багов при всяких обновлениях меньше. А также по поводу: Николай МВ вы должны залезть и поправить триггеры, работающие на обеспечение целостности, как минимум... Нет, не должен. Я вообще ничего не должен. Начальник отдела создает новую папку, обзывает ее "Новый документ хитрого прихода", в свойствах папки указывает, по каким правилам должен формироваться документ, раздает права. (Чтобы Вы правильно меня поняли -- все это он делает со своего рабочего места, с клиента, о существовании табличек он даже не подозревает.) Ну тут флаг в руки программисту для написания "программы клиент-администратора" с возможностью добавлять и новые папки и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:48 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
2 Nikola18 См. мой пост выше № 777380. Предположительный вариант развития Вашей базы. Не хочу Вас обидеть, конечно если делать хорошо, то оно всегда хорошо. :) Флаг в руках, программа клиент-администратор тоже... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:00 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Ситуация №1 Новый клиент под одну таблицу ничем не отличается от нового клиента под многие - как в первом так и во втором случае вы должны знать документооборот на каждом предприятии, и бизнес процессы - а привязать к клиенту одну табличку или десять - в соответствии со структурой документов - дело техники, если есть система в наименованиях таблиц - это делается так же одним скриптом. В самом деле - у вас пять форм под пять документов. У каждого свои поля. В чем отличие, привязываете ли вы к ним одну таблицу, но читая оттуда разные поля, в зависимости от документа, или пять? Да только в том, что путаницы меньше с полями. Ситуация №2 А вот здесь я полностью согласен с вами в той части, что несколько таблиц обязывают к дисциплине, и если нет системы, соглашений имен, соглашений об обязательных полях итд итп то в такой каше значительно труднее разобратся - но это вопрос к тому, кто до вас создавал ее, мы-то с вами умнее ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:49 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Было у меня несколько проектов на тему. Тоже писал и одной таблицей, и в разные. Вывод такой. Самая простая и понятная, и удобная структура - это Шапка + подчиненная таблица для прихода, расхода, списания, передачи в производство и т.д. Все остальное со временем превращается в большие заморочки. Сам, когда приходится что-то править в старых своих однотабличных проектах, думаю, какой дурак все это придумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 05:26 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Хотя я по большей части пользователь, но все же у меня сложилось твердое свое мнение об учетной системе (склад - бухгалтерия, без аналитики - всяких олапов). В одной - многих таблицах - для меня не суть. Разделение для меня происходит по следующему критерию: - есть первичные документы, те что приходят или генерятся (отличительная черта - объем растет линейно со временем). - есть статистика по первичным документам (остатки, реестры, регистры, справочники, ...) (объем почти не растет). И для меня правильно организованная структура хранения такая: - четко отделять области первичных документов и статистики по ним (скорость доступа к первичным документам не важна, к статистике - критична), - пользователь работает ТОЛЬКО со статистикой, в первичные дкументы почти не лезет (если лезет - то только прочитать). И плохо, что в обычных системах все это в одной каше, не разделяется. Мнения против этого - обычно - что нельзя наладить статистику на все случаи жизни. И отсюда возникают тяжелые запросы ко всей накопленой базе и заторы. А может я просто больших баз не видел, может там сделано правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 12:23 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Хотя я по большей части пользователь, но все же у меня сложилось твердое свое мнение об учетной системе (склад - бухгалтерия, без аналитики - всяких олапов). В одной - многих таблицах - для меня не суть. Разделение для меня происходит по следующему критерию: - есть первичные документы, те что приходят или генерятся (отличительная черта - объем растет линейно со временем). - есть статистика по первичным документам (остатки, реестры, регистры, справочники, ...) (объем почти не растет). И для меня правильно организованная структура хранения такая: - четко отделять области первичных документов и статистики по ним (скорость доступа к первичным документам не важна, к статистике - критична), - пользователь работает ТОЛЬКО со статистикой, в первичные дкументы почти не лезет (если лезет - то только прочитать). И плохо, что в обычных системах все это в одной каше, не разделяется. Мнения против этого - обычно - что нельзя наладить статистику на все случаи жизни. И отсюда возникают тяжелые запросы ко всей накопленой базе и заторы. А может я просто больших баз не видел, может там сделано правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 12:27 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
Очень полезная тема. To Сергей Васкецов: Подход с одной таблицей интересен и привлекателен с точки зрения некой базовой универсальности. Хочу Вас спросить, а нет ли у Вас проблем с блокировками в этой связи? В данном случае возрастет количество обращений к двум таблицам (условно "шапка" и "сроки") -> повышается вероятность эскалации блокировок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 20:10 |
|
||
|
Структура таблиц с накладными
|
|||
|---|---|---|---|
|
#18+
LeonidВ данном случае возрастет количество обращений к двум таблицам (условно "шапка" и "сроки") -> повышается вероятность эскалации блокировок. На ASE (слава богу! в отличие от MSSQL) можно задать уровень блокировки, он у нас везде lock datarows. Для обеих платформ у нас имеется некий механизм собственной блокировки, который дело до begin tran может даже и не довести. В целом - проблем нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2004, 20:43 |
|
||
|
|

start [/forum/topic.php?fid=32&gotonew=1&tid=1546382]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 384ms |

| 0 / 0 |
