powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Представление данных для клиента
14 сообщений из 14, страница 1 из 1
Представление данных для клиента
    #37440190
InnerCloister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На предприятии ведется учет определенных сумм по каждому сотруднику за день.
Сотрудник может выполнять те или иные операции, и для каждого типа операции для данного сотрудника хранится количество обработанных единиц этой операции на определенное число. Грубо говоря, для этого используется таблица с полями ID_сотрудника, ID_операции, Дата, Количество. Соответственно, информация о сотрудниках и об операциях хранится в отдельных, связанных с этой, таблицах (если не углубляться).
На клиенте это должно выглядеть так: пользователь выбирает сотрудника и месяц и видит таблицу, в которой представлено число единиц каждой операции за каждое число месяца. То есть, после столбцов, описывающих операцию, следуют столбцы, связанные с числами месяца (31 столбец для простоты). При этом, пользователь также и вводит данные о выполненных единицах операций через эту таблицу.
Вопрос заключается в том, в каком виде лучше получать информацию непосредственно из БД.
1. Полагаю, можно написать хранимую процедуру, которая сама сформирует таблицу в нужном виде, и мне останется только привязать к этой таблице элемент управления, что-то подредактировав при необходимости. Мне этот вариант нравится тем, что не потребуется особо сложной прослойки между клиентом и SQL сервером.
2. Можно загрузить нужные записи из таблицы о совершенных операциях, а потом программно создать таблицу с требуемой структурой и заполнить ее самостоятельно. При этом, потребуется подгрузить и две другие таблицы (можно, конечно, выбрать все одной таблицей, но тогда передаваемые данные о сотрудниках и операциях будут повторяться, что мне не очень нравится). Этот вариант для меня выглядит более каноничЪным, ибо, все-таки, оформлением данных нужно заниматься на уровне, внешнем по отношению к БД.
Может быть, есть еще какие-то варианты?
Как же именно продумать схему взаимодействия, чтобы не допустить грубых нарушений стандартов разработки и обеспечить возможность гибкой работы с данными и их представлением?
В данный момент я разрабатываю клиент-серверное предложение, и в процессе проектирования возник такой вопрос. Но он интересен для меня и безотносительно к конкретной системе.
MS SQL SERVER + ADO.NET(C#).
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37440220
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloister,

вам в форум по проектированию туда
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37440234
InnerCloister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt, эту тему могут туда перенести или мне нужно ее там создать заново?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37440450
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloister,
> и видит таблицу, в которой представлено число единиц каждой операции за каждое число месяца
сколько этих операций и они постоянны или меняются (добаляются новые)?
данные вводит один человек или несколько могут?
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37440838
InnerCloister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
koJIo6ok,

операции не меняются в течении месяца, но они в любом случае будут загружаться из БД. С базой работает много человек, хотя каждый сотрудник, по идее, сам должен вводить свои данные.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37440997
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloister То есть, после столбцов, описывающих операцию, следуют столбцы, связанные с числами месяца (31 столбец для простоты)Столбцы или строки? Если строки, то результат банально группируется по дате, если столбцы то результат группируется по дате и транспонируется (что на одно действие больше)
InnerCloister При этом, пользователь также и вводит данные о выполненных единицах операций через эту таблицу.Вводит он наверное не через таблицу а через форму заполняя ID_сотрудника, ID_операции, Дата, Количество
InnerCloister а потом программно создать таблицу с требуемой структуройЭто вы на сервере программно табличку создаете?
InnerCloister и заполнить ее самостоятельноСУБД разучились делать группировку
InnerCloister но тогда передаваемые данные о сотрудниках и операциях будут повторяться, что мне не очень нравитсяЭкономим копейки сетевого трафика.
InnerCloister Этот вариант для меня выглядит более каноничЪным, ибо, все-таки, оформлением данных нужно заниматься на уровне, внешнем по отношению к БД.Да, да СУБД не умеют выполнять джойны это не каноничЪно
InnerCloister Как же именно продумать схему взаимодействия, чтобы не допустить грубых нарушений стандартов разработки и обеспечить возможность гибкой работы с данными и их представлением?Данные лежат в СУБД, с этим никто не спорит, интерфейсом заведует клиент с этим тоже никто не спорит. Куда положить логику (джойны, проверки, вычисления и т.п.) однозначного ответа не имеется. Надо смотреть на приложение. Я, как ДБА потащил бы все в СУБД (код поближе к данным), девелопер наоборот тащил бы код из СУБД (обеспечивал бы гибкость и независимость от СУБД) на свое поле.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441083
InnerCloister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257,

таблица на форме имеет следующие поля:
[Код операции][Наименование операции][Единица измерения][Расценка][1][2]...[31]
Вводит он наверное не через таблицу а через форму заполняя ID_сотрудника, ID_операции, Дата, Количество
Для ввода данных нужна именно таблица на весь месяц, т.к. люди привыкли работать в Excel с подобными таблицами. Сотрудник и месяц выбираются из списков, а все операции, которые есть на данный месяц, висят в таблице. Нужно только ввести количество каждой операции за каждое число.
Это вы на сервере программно табличку создаете?
Ну, на том приложении, которое будет принимать сообщения от клиента, отправлять запросы на SQL сервер и передавать данные клиенту. Возможно, реально это будет реализовано внутри клиентского приложения.
Экономим копейки сетевого трафика.
В любой ситуации есть самое лучшее решение. И вряд ли оно приведет к нерациональному использованию ресурсов, даже незначительно.
Буду, наверное, программно реализовывать, все-таки, с MS SQL server не очень много работал.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441101
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloisterтаблица на форме имеет следующие поля:
[Код операции][Наименование операции][Единица измерения][Расценка][1][2]...[31]
Плохая таблица. Данные не нормализованы. Получить такое ПРЕДСТАВЛЕНИЕ для удобства отображения на клиенте можно, легко и разными способами, но хранить НУЖНО в виде нормальной таблицы:

[Дата операции][Код операции][Наименование операции][Единица измерения][Расценка][1][2]...[31]
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441112
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloisterSERG1257,

таблица на форме имеет следующие поля:
[Код операции][Наименование операции][Единица измерения][Расценка][1][2]...[31]
Вводит он наверное не через таблицу а через форму заполняя ID_сотрудника, ID_операции, Дата, Количество
Для ввода данных нужна именно таблица на весь месяц, т.к. люди привыкли работать в Excel с подобными таблицами. Сотрудник и месяц выбираются из списков, а все операции, которые есть на данный месяц, висят в таблице. Нужно только ввести количество каждой операции за каждое число.
Как данные выводятся в форме не имеет никакого отношения к тому, как данные храняться в базе. В конце концов это может быть вьюха.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441115
InnerCloister
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель,

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

авторПолучить такое ПРЕДСТАВЛЕНИЕ для удобства отображения на клиенте можно, легко и разными способами
Я не особо сомневаюсь, что такую таблицу можно получить средствами SQL сервера. Меня волнует, насколько легко потом будет с ней работать, чтобы привести в нужный вид на клиенте. Я имею в виду оформление, контроль ввода данных и т.д. Если я буду создавать таблицу программно, я точно знаю, что я смогу с ней сделать. Но если есть более правильный путь, я готов его освоить.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441150
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное - НЕ ХРАНИТЬ первичные данные в той форме, которую вы разрисовали.

У меня клиентом MS SQL выступает Access ADP, там приходится применять некие трюки для реализации редактируемости данных в форме даты-по-столбикам.

1. Самый простой по реализации. Форма даты-по-столбикам ридонли. Но из любой ячейки можно провалиться в вектор всех операций сотрудника по заданной дате или в вектор операций по всем датам по заданному сотруднику, которые нормально редактируются.

2. Форма на отвязном рекордсете. Реадктруется. Но событие обновления каждой ячейки перехватывается и дублируется запись в первичные нормализованные данные.

3. Форма на временной таблице. Таблица с датами-по-столбикам заполняется данным из первичной нормализованной таблицы. Редактируется. По кнопке Сохранить массово обновляются первичные нормализованные данные.

Для других, более гибких инструментрариев типа VS второй способ, наверное, самое выгодный.
...
Рейтинг: 0 / 0
Представление данных для клиента
    #37441200
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InnerCloister,

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

да я все понимаю) не надо думать, что у меня в БД такие вот таблицы с кучей полей. У меня там сейчас 10 таблиц, максимум 5 полей в таблице
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Представление данных для клиента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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