Лучшие практики для создания различных прогнозов из базы данных для использования с C # - PullRequest
0 голосов
/ 13 апреля 2011

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

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

1) Я создаю DataSet с конструктором, который содержит все необходимые мне таблицы. Затем я создаю проекции с помощью Linq2DataSet и передаю результаты компоненту представления.
2) Я создаю DataSet, который содержит 6 пользовательских адаптеров таблиц, по одному для каждой проекции, а затем заполняю ими таблицы данных и передаю таблицы компоненту представления.

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

Итак, какое из этих решений было бы лучше, и есть ли другие, более лучшие решения, доступные также?

РЕДАКТИРОВАТЬ: Добавление некоторого контекста

Так что я решил привести пример типа данных, с которыми я работаю. По сути, у меня есть таблица, которая содержит результаты. Результат имеет тип и может иметь одно или несколько отношений. Они определены как, например, truckID, routeID или countryID.

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

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

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

1 Ответ

1 голос
/ 13 апреля 2011

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

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

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