데이터베이스에 ThingsInACircle
이라는 테이블이 있습니다. Thing
이 ThingsInACircle
에 추가 될 때마다 자동으로 증가되는 ThingId
이 추가됩니다.주어진 ID와 동일한 id + offset 사이에서 행을 반환하려고 시도합니다. 데이터를 검색하는 방법을 결정하기 위해 대부분의 로직을 사용해야합니까? : BLL 또는 DAL
이 표의 Things
을 원으로 상상해보십시오. SELECT Thing FROM ThingsInACircle WHERE ThingId = 10
은 SELECT Thing FROM ThingsInACircle WHERE ThingId = 11
옆에 있습니다. 또한
... SELECT Thing FROM ThingsInACircle WHERE ThingId = min(ThingId)
내가 말할 수 있어야합니다 SELECT Thing FROM ThingsInACircle WHERE ThingId = max(ThingId)
옆에 : 주어진 ThingId와 오프셋이 ThingsInACircle가 ThingId에서에 이르기까지의 모든 레코드를 반환 (ThingId + 오프셋) (오프셋은 음수 일 수 있음). 그래서
가 설정된 예를 들어 이것을 취 여기우리 ThingIds 목록 : 1 2 3 4 5 6 7 8 9
I 모든 ThingIds 원한다면 여기서 @ThingId = 2 @ThingId = 8 @offset는 = 3, 다음이 어디에 나는 모든 ThingIds를 원하는 경우, 2 3 4 5
그러나 : 및 @offset = 3, 문제
SELECT ThingId FROM ThingsInACircle WHERE
ThingId BETWEEN @ThingId AND (@ThingId + @offset)
없다 그것은 반환 문제
기능은 반환해야합니다 : 7 8 9 1
그래서 여기 내 딜레마, 내 데이터 액세스 레이어이(선택 최소, 최대를 더 복잡한 저장 프로 시저를 사용하는 쿼리를 포함하고 사용한다 &이면 초과했는지 여부를 확인하십시오.)을 사용하여 레코드를 원으로 링크 된 것으로 간주하기 위해 검색 할 레코드를 정확히 결정합니까?
또는 비즈니스 로직 계층는 사용자가 ID +가 최소 또는 최대 다음 사용 간단한 DAL 방법은 그것을 반환 할 필요가 무엇을 달성하기를 초과 오프셋 요청 여부를 결정해야한다?
이것은 단지 의견 일뿐입니다. 저는 방금 microsofts tutorial에 따라 3 일 전에 3 층 구조에 대해 배우기 시작했습니다. 그래서 사람들이 DAL과 BLL을 어떻게 형성해야한다고 생각하는지 알고 싶습니다. DAL이 간단해야하고 BLL이 모든 검증을해야한다면. .. 또는 다른 길 ... 또는 내가 함께 놓친 것.
7에서 4 사이를 선택하면 반드시 7 8 9 1 2 3 4를 반환 할 필요는 없지만 MIN (ThingID)이 1 일 필요는 없다는 것을 고려하면 ThingID가 해당 범위에있는 레코드 만 반환하면됩니다. 그 사이에있는 모든 ID가 있다는 보장이 아닙니까? – Raj