2014-01-24 15 views
0

У меня есть приложение n-уровня, среди прочего, включает уровень доступа к данным (DAL) и уровень бизнес-логики (BLL). Я использую SQL-запросы и хранимые procs в DAL, которые я использую для заполнения своих объектов.Имеет ли порядок сортировки по умолчанию в DAL Нарушает разделение проблем

Так вот мой вопрос:

ORDER BY положение в моих запросах SQL Нарушает ли разделение задач?

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

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

+0

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

+0

@ChadSchouggins Не уверен, что я следую. Вы имеете в виду, что не верите, что тот, кто выполняет DAL, будет включать логику сортировки? –

ответ

0

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

Это сделает код пригодным для повторного использования и гибким движением вперед .... что, если, например, вы хотели бы, чтобы пользователи сами определяли параметры сортировки?

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

+0

Согласитесь с @trucker_jim, добавление предложения order by на уровне DAL просто обеспечивает порядок сортировки по умолчанию, это можно рассматривать как оптимизацию, особенно если этот вид используется довольно часто. Всегда старайтесь, чтобы СУБД выполняла как можно большую часть тяжелого подъема, а также то, что она предназначена для работы. –

+0

Спасибо, что ответили. Я почти полностью пришел к такому выводу, основываясь на том, что было несколько сильных ответов, поэтому я понял, что это не очень важно. Я исхожу из данных, основанных на данных, и соглашаюсь с тем, что база данных выполняет «тяжелый подъем», но я нахожусь в объектно-ориентированном мире, многие люди рассматривают базу данных как гражданина второго сорта и не хотят, чтобы какая-либо «логика» выполнялась на уровень базы данных. Я интерпретирую комментарий @ChadSchouggins о том, что вам не нравится порядок сортировки, исходящий из DAL, как показатель этого мышления. –