2014-01-24 1 views
0

DAT (데이터 액세스 계층)와 BLL (비즈니스 논리 계층)이 포함 된 n- 계층 응용 프로그램이 있습니다. SQL 쿼리를 사용하고 DAL에 procs를 저장하여 개체를 채 웁니다.DAL에서 기본 정렬 순서가 우려 사항을 분리합니까?

내 SQL 쿼리의 ORDER BY 절의 분리를 위반 하는가 :

그래서 여기 내 질문?

한편으로는 정렬 순서가 특정 순서로 데이터를 표시하려는 이유를 결정하는 비즈니스 규칙이기 때문에 비즈니스 계층에 정렬 논리가 속한 것으로 보입니다. 또한 동일한 데이터를 여러 가지 방식으로 표시하고자 할 수 있습니다. 또한 내 데이터 액세스 코드가 어떻게 표시되는지와 같은 우려 사항을 인식해서는 안됩니까?

반면 데이터베이스는 일반적으로 응용 프로그램 코드보다 데이터를 정렬하는 것이 더 효율적이므로 성능상의 이유로 BLL에서 정렬보다 ORDER BY 절을 사용하는 인센티브가 있습니다. 또한, DAL에서 기본 정렬 순서를 지정하면 실제로 관심사의 분리를 위반하는지 확실하지 않습니다. 레코드는 어떤 방식 으로든 데이터베이스에서 나옵니다. 가장 일반적인 시나리오에 따라 정렬하지 않는 이유는 무엇입니까? 기본값과 다른 정렬 순서가 필요한 경우 BLL의 일부 메서드를 통해 정렬 할 수 있습니다.

+0

내가 거기에있는 정렬에 반대할지 모르겠지만 개인적으로 내 액세스 계층의 정렬에 의존하는 비즈니스 로직에 대해 불편할 것이라고 생각합니다. –

+0

@ChadSchouggins 잘 모릅니다. DAL을하는 사람이라면 누구나 정렬 논리를 포함한다는 것을 믿지 않는다는 뜻입니까? –

답변

0

프로 시저에 정렬 설정이없는 경우 적용되는 '기본'정렬 설정이 있으면 좋다고 느낍니다.

이렇게하면 코드를 재사용하고 유연하게 만들 수 있습니다. 예를 들어 사용자가 정렬 설정을 직접 정의하도록 허용하려면 어떻게해야합니까?

나는 많은 테이블이 그렇지 않으면 다시 시간과 시간을 다시 적용해야 할 분명한 기본 정렬 논리를 가지고 있다고 생각하여 위반이라고 생각하지 않습니다. 그리고 데이터베이스 수준에서 정렬을 적용하는 것이 더 효과적이라고 말하는 것이 맞습니다.

+0

@trucker_jim에 동의하십시오. DAL 수준에서 order by 절을 추가하면 기본적으로 기본 정렬 순서가 제공됩니다. 특히이 정렬이 자주 사용되는 경우 최적화로 볼 수 있습니다. DBMS가 할 수있는 한 많은 작업을 할 수 있도록 항상 노력하십시오. –

+0

답변 해 주셔서 감사합니다. 저는 거의 강한 반응이 없다는 사실을 토대로이 결론에 이르렀습니다. 그래서 큰 의미는 아닙니다. 나는 데이터 중심의 배경에서 왔고 데이터베이스를 "무거운 짐을 싣는 것"으로 만드는 것에 동의하지만, 객체 지향 세계에서 많은 사람들이 데이터베이스를 제 2의 시민으로 취급하고 "논리"를 수행하는 것을 원하지 않습니다. 데이터베이스 수준. 나는 @ChadSchouggins가 그 사고 방식을 나타내는 지표로서 DAL에서 오는 정렬 순서에 익숙하지 않다는 것을 해석한다. –

관련 문제