Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Господа! Огласите свое мнение, плиз, по способам хранения и обработки информации при помощи предлагаемых структур: Вариант № 1: Table t_table(key, field_data_1, field_data_2, ...,field_data_N) Вариант № 2: Table t_name_field(key_field, field_name) Table t_table(key, key_field, field_data) Дополнительная информация: 1) key - в месяц примерно 20 000- 25 000 записей; 2) N - порядка 10. (Возможно изменение количества); 3) field_data _i - может быть NULL; 4) Выборки будут производиться и по key (sum(field_data)), и по key_field (+ всякая дополнительная хpень). 5) SQL Anywhere 5.0 У обоих вариантов можно найти свои плюсы и минусы. Мне больше нравится вариант №2, он позволяет масштабировать данные без напрягов и обходиться без динамических SELECTов. Но у первого, тоже есть плюс - поиск по конкретному key (с подсуммировкой входящих) должна проходить быстрее (вроде бы). Ну и т.д. Хотелось бы услышать от специалистов аргументированные мнения в пользу первого или второго варианта (или предложить третий ;) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 08:11 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Я бы прежде всего задался вопросом : изменение N это стандартный бизнес-процесс или это результат каких-то изменений в системе, например создания новой версии ? Если это БП, то нужно его проанализировать : N только увеличивается или может и уменьшится; как часто это происходит; связано ли это с другими событиями; можно ли выделить некое абсолютно минимальное N ? Тогда возможны варианты, например первые несколько полей хранить по способу 1, остальные по способу 2. Что будет быстрее - можно сказать только по конкретным запросам, хотя в целом вар.1 обычно намного быстрее. Короче, я бы шел от модели данных, а не от желания сделать так или иначе. Washington Irving ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 09:38 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Может надо сразу оба варианта использовать: 2 - как базовый и 1 на тригерах? А вобще то мало информации о проектируемой системме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 11:20 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Расчет коммунальных платежей. N - предоставляемые услуги (с последующей оплатой) - вроде бы постоянная, но в пределах лицевого счета может меняться ( сегодня: 1 - 1,2,3,6; 2 - 2,5,7,10; и т.д., завтра: 1 - 2,3,4,6,7,8,9,10,15; 2 - 1,5;). Необходима настройка на каждую морду лица, расчет по этой настройке, хранение данных. Схемка приведена упрощенная, будут дополняться field_data_N_1, field_data_N_2, field_data_N_J, т.е. на каждый ключ определяющий услугу, вешается объем услуги, выставленная сумма ну и т.п. Еще пытаюсь заботиться о себе любимом: со вторым вариантом минимизируется мое участие в БП пользователя - юзер сам все делает, причем не влезая в дебри (от меня только способ расчета этой услуги, и то хочу подумать как свесить ее на пользователя). Затраты на разработку или изменение пользовательского интерфейса незначительные, для отчетов можно навесить на запрос Crosstab с группировками и еще обойтись несколькими жестко прописанными формами изменяя только параметры запросов. При первом же варианте, для добавления вида услуги требуется дополнительно изменение структуры таблиц, изменение форм GUI, а разрабатывать динамические формы - лень (или знаний не хватает - пока еще не определился). Сочетание вариантов первый + второй - не нравится, т.к. потом (через годик после внедрения и если все работает), когда попросят что-то поменять, пытаешься вспомнить и начинаешь думать: а с какого перепуга, собственно, я , данные относящиеся к одному классу храню в разных таблицах (Т.З., описания и пр. вещь конечно хорошая, но кто же их в здравом уме пишет..., ... а потом читает)? Да и собирать их сложнее. По моему. Насчет VIEW - знаю, но их же тоже надо писать! А перед этим ДУМАТЬ!!! ;). Если серьезно - хочется иметь БД удобочитаемую и легко изменяемую (а еще она должна работать, работать быстро, правильно и т.п.) ;) P.S. А вообще интересно услышать - кто и как побеждал коммунальные услуги? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 12:55 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Послушайте доброго совета, не разбивайте вы услуги по полям, не только намаетесь, а просто будете все переделывать. Если бы в коммунальных платежах так все было просто ... :) На каждую услугу свои поставщики, свои субсидии, свои льготы для каждого лицевого счета, еще куча разрезов, по которым потом требуется проводить группировку в отчетности, плюс оплата, которая должна разбиваться по услугам, далее сальдо тоже хранится по услугам, ну и т.д. и т.п. Вообще кварплата задача очень сложная и самое главное - это очень и очень серьезно подойти к проектированию модели БД, для этого рекомендую составить как можно более полное ТЗ и определиться с методиками хранения и обработки данных на СУБД, так как многое в кварплате требует своего подхода и тщательной разработки многих критических мест с целью уменьшения их зависимости от постоянно изменяющихся условий ТЗ на фоне всяких жилищно-коммунальных реформ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 13:48 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
2 ASCRUS Согласен насчет сложности и прочего бреда в коммунальном хозяйстве. Те удоды, которые издают законы и рассказывает как считать, сами ничего этого не считают, а по сему их совершенно не волнует как новый алгоритм расчета будет увязан с предыдущими. ;( Поясните, плз, для тех кто в танке, " не разбивайте вы услуги по полям " - Вы против варианта № 1? Я уже писал, что мне больше нравиться второй, т.к. он должен легче настраиваться и модифицироваться(ИМХО). Или я Вас не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 14:48 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
насчет вообще подобной структуры БД - я уже как-то описывал ее +/- Так как вариант рабочий и на 100% стандартный - вы создаете метомодель которая позволяет легко добавлять атрибуты к сущностям на самом деле не модифицируя БД. Такой подход используется если сложность стуктуры моделируемым объектов достаточно высока или если требования к модели регулярно меняются заказчиком во время проектирования. Он имеет свои проблемы - например созданные атрибуты на самом деле не являются структурами БД и вы не сможете использовать SQL чтобы выполнить их непосредственную выборку. Если ваша задача действительно требует такого подхода - то я бы советовал посмотреть в сторону какого-либо современного CASE-средства ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:46 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
В моем предыдущем сообщении как раз я ругался на первый вариант :) Простите - забыл уточнить. Против второго варианта я ничего против не имею, как раз его и считаю правильным к данной задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 15:53 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
я тоже согласен с ASCRUS. Имхо делать лучше способом 2, ибо может и дольше считает, но услуг может быть много, они могут менятся (вот после года работы у меня справочник начислений и удержаний стал около 20 позиций). автор писал:(от меня только способ расчета этой услуги, и то хочу подумать как свесить ее на пользователя) я у себя сделал три типа рассчёта услуги : 1) сумма 2) на человека 3) на кв. метр. по-моему больше комунальные рассчёты никак не делаются. вода(почеловечно), отопление (по квадратам..) и т.д. единственное что - это справочники чуть-чуть расширить. а так. красота - есть справочник начислений. в него забиваются начисления и метод рассчета (например отопление, на кв. метр; гар.вода, на человека) А дальше пользователь сам выставляет тарифы для каждой группы (выбрав перед этим необходимые ему). с ув. наутилус ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 17:25 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
наутилус ну ты дал а у меня на все счетчики стоят.... и как ты мне через такую бд все начислиш.... вода гор - 6 тонн я от силы 1.5 за мес потребляю вода хол - 8 тонн я 3 ну и как ты меня тарифицыруеш.... нет это невыход тут глубже надо копать.... от ед измерения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2003, 18:20 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
2 toshik-star Элементарно. Добавляется переключатель(норма/счетчик), пара полей для приема показаний, изменяется процеДурка, несколько телодвижений для настройки и получаете счет за свои 1.5/3 т. 2 ALL Спасибо за внимание ,ответы и советы. Если будет еще что сообщить, наставить на путь истиный, выразить соболезнования ;) - пишите. С удовольствием выслушаю. С уважением, Centner. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2003, 06:40 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
У меня был аналогичный проект, но только не в коммунальных услугах, а в банке. Причём, система исключительно аналитическая (данные не вводятся вручную, а загружаются из разных источников большими порциями). Для обеспечения гибкости была выбрана вторая модель. Для построения аналитических отчётов использовался программный продукт Microstrategy (умеет сам генерировать SQL-запросы, в частности, к структурам подобного рода). Жалеть не пришлось. Кроме гибкости было экспериментально выявлено, что такая модель может даже иметь достаточно сильное преимущество по скорости. В частности, когда нужно выбрать какой-то показатель для группы клиентов, то приходится сканировать меньшее количество строк, чем в варианте №1 (в котором количество строк при сканировании потенциально одно и то же), поскольку работает индекс по столбцу, в котором хранится идентификатор показателя. Я ставил эксперименты и на широкой таблице (вариант №1 в данном случае) чтобы сравнить производительность. Были, конечно, отчёты, которые выполнялись быстрее на широкой таблице, но однозначно сказать, что вариант №1 быстрее я не могу. Характер запросов - выборка отдельных показателей с группировкой в различных разрезов, а потом арифметика над ними с группировкой в тех же разрезах. Я за вариант №2. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2003, 20:16 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
>>Т.З., описания и пр. вещь конечно хорошая, но кто же их в здравом уме >>пишет..., ... а потом читает Отсюда видно, что Ваш проект уже завален. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2003, 09:17 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
Ой, когда-то я лет 5 занимался квартплатой, это счас по всей москве рекламируют, вот мол, принцып одного окна....... а я в Сибири это ещё в 95-м делал.... Естественно, расчёт делал по-человечно, за каждый прожитый день, при этом учитывая максимально выгодные льготы для человека, в итоге всё складывал = получал итого по лицевому счёту. Ещё начал с того что паспортный стол сам делал и это была единая прога с начислением, поскольку всякие житейские россейские неувязки по прописке, фактическому проживанию влияют на начисление короче в енту систему забабахал много чего, зато потом только пожинай плоды (можно всяко разно анализировать квартиросъёмщиков - хоть по группе крове искать, хоть избирательные списки искать, хоть однофамильцев или лиц, имевших судимость, хоть номера телефонов и проч. прочее) была ещё одна такая тема: Администрация города придумает так: считаем пеню спустя два месяца после задолженности, потом этот срок увеличит до 4-х месяцев в связи с невыплатой зарплаты, потом вообще отменит) Поэтому помимо версионности записей таблиц ещё надо было версионность алгоритмов расчёта......но увы, при такой колбасне не всегда можно пересчитать по требованию квартиросъёмщика за весь его период от царя гороха (если вообще можно)... ох уж эти квартиросъёмщики (точнее они у нас были разбалованы что-ли) всё-то им объясни, всё расскажи, хоть целый полк бухгалтеров-объясняльщиц сажай рядом (только какое штатное расписание это дозволит)...бывало так, что люди просто приходят поскандалить, пообщаться, а то и вовсе сумашедшие........ короче, я сделал так, что при расчёте заодно в текстовые файлы писалось как выполнлся расчёт, например: Иванов А.А. начислено за горячую воду=тариф по горячей воде * колво прожитых дней/число дней в месяце* 0,5 (льгота такая-то) = ХХруб*20/30*0,5=... Хоть и файл получался немерянных размеров, но если кому надо разбираться - распечатал такую длинную портянку по лицевому счёту - и на мол, иди домой разбирайся.....против такого аргументированного отчёта ни у кого не возникали вопросы (ни у жильцов, ни у проверяющих органов, и бухгалтера всегда могли проверить мои алгоритмы как чаво там внутри считается) ну вообщем дел много, задача ой какая сложная (тут столько полёта для фантазии) удачи!!! и хороших Вам мэров и начальников ДЕЗ-ов ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 13:32 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
2 Centner делал расчет квартплаты для своего кондоминиума, ну и считал ее года 3 потом...а сделал - на оракле, в девелопоре... ну и в модели БД сразу все заложил...как надо....все через услуги (Вариант № 2). И почти все НСИ делал динамические, с привязкой к дате начала_конца.... В итоге по квартире все могло меняться как хотело, и все расчеты можно было задним числом повторить. Особенно со льготниками хорошо получилося...через справочники алгоритмов.... Выбирай те Вариант № 2. И не забудьте всю НСИ с версиями изменения хранить. И на квартиру - объект учета - добавьте избыточный ID (версия типа), люди понимаешь....иногда разводятся....сходятся.... что при расчёте заодно в текстовые файлы писалось как выполнялся расчёт, 2 superbluesman а вот такого я тогда не додумался... классная штука - система диагностики принятия решения.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2004, 14:17 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
2 all Еще раз спасибо за ответы, к сожалению они не пригодились в данной задаче (заказчик жлоб, хочЮ, говорит, в два раза дешевле и в два раза быстрее - пришлось расстаться). Хотя у меня тоже проскакивали мысли осуществленные superbluesman - обеспечение заинтересованных организаций информацией по людЯм (много чего придумать можно). Но ничего, где нибудь Ваши советы все равно пригодятся. Знаний много не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2004, 12:05 |
|
||
|
Расположение данных: горизонтально или вертикально?
|
|||
|---|---|---|---|
|
#18+
так второй вариант как раз дешевле и получается.... когда оператор добавляет самостоятельно параметр или м еняет ему единицы измерения и все автоматически пересчитывается... по первому варианту нужен будет постоянно программист, которому надо платить.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2004, 05:55 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32327641&tid=1546617]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 398ms |

| 0 / 0 |
