2011-03-30 7 views
1

모호성을 제거하려면 EDIT : 데이터베이스보기가 아닌 MVC에서보기.조건에 따라 다른 열을 선택하는 방법이 있습니까?

안녕하세요,

은 내가 디자인 결정 난 데이터베이스 기반 애플리케이션을 개발할 때마다 직면하고있다. 테이블 X가 있고 뷰를 기반으로 다른 열을 가져 오려고합니다. 보기에는 열이 있어야하고, 다른보기에는 모든 열이 필요합니다.

현재 수행중인 모든 열 select * from X 및보기에 따라 열을 바인딩하는 단일 저장된 프로 시저가 있습니다. 불필요한 열을 선택하고 데이터베이스가 거대하며 트래픽이 증가함에 따라 올바른 접근 방식이라고 생각하지 않습니다.

이런 종류의 디자인에 접근하는 가장 좋은 방법은 무엇입니까? 1 SP 방식을 유지하거나 각보기에 대해 저장 프로 시저가 있어야합니다 (각 SP는 다른 열을 반환합니다). 여기에 유용한 설계 패턴이 있습니까? SP에 대한 열을 지정하는 방법에 대해 생각했지만 각 뷰의 열 인수를 추적해야하므로 관리가 악몽이됩니다.

감사합니다.

+0

나는 귀하의 질문에 "보기"당신의 모든 용도는 MVC (또는 MVP) 응용 프로그램에서 조회수와 관련 있다고 가정 및 뷰를 SQL로하지? –

+0

단어보기의 모호한 사용에 불편을 끼쳐 드려 죄송합니다. – Ali

답변

0

SP에 매개 변수를 전달하여 검색 할 열의 목록을 식별하고 동적으로 명령문을 실행하여 돌아올 수 있습니다.

귀하는 두 가지 방법을 할 수있는 :

  • 는 저장 프로 시저에 문자열로 열 목록을 전달합니다. 안전하지 않고 액세스 할 대상을 추적하기가 어렵습니다.
  • 검색 할 열 목록을 나타내는 id를 전달하십시오. 이 id는 가장 관련성이 높은 열 집합을 저장하는 구성 테이블을 찾는 데 사용할 수 있습니다 (가능한 모든 하위 집합이 아님). 더 안전하고 관리하기 쉽습니다.
+0

답장을 보내 주셔서 감사합니다. look up 구성 테이블은 흥미로운 것으로 들립니다. 나는 그 자신을 탐구하려고 노력할 것이다, 그러나, 당신은 이전에 그렇게했던 적이 있습니까?그렇다면 예제를 줄 수 있습니까? 감사. – Ali

+0

내가했는데 어떤 언어와 데이터베이스를 사용하고 있는지 모르기 때문에 여기서는 관련이 없을 수도 있습니다 :) –

+0

왜 중요합니까? 이 문제 (나는 그것을 문제로 생각한다)가 언어/DB에 무관심하지 않습니까? – Ali

1

데이터 액세스를 위해 저장 프로 시저를 사용하여 판매 한 경우보기 당 하나의 저장 프로 시저를 사용하는 것이 좋습니다. 프로 시저 이름과 뷰 이름이 1-1 형식의 형식을 갖도록 규칙을 도입 할 수도 있습니다.

이렇게하면 각보기에서 저장된 프로 시저를 쉽게 확인할 수 있습니다. 또한 각 프로 시저에 적절한 (다른) 필터를 적용하고 다른 매개 변수를 전달할 수 있음을 의미합니다.

일부 ORM 또는 DAL 형식을 사용하는 대신 직접 데이터베이스 액세스를 수행한다고 가정합니다. 이러한 시스템의 대부분은 스토어드 프로 시저를 강력하게 지원할 경우 스토어드 프로 시저가 항상 동일한 "셰이프"(즉 동일한 열)의 결과 집합을 반환한다는 전제를 바탕으로 구축됩니다.

0

저장 프로 시저에 대한 매개 변수에 따라 CASE 문을 사용하여 다른 열 (다른 열)에서 다른 값을 반환 할 수 있습니다. 그러나 실제 열 이름은 고정됩니다.

의사 코드 :

procedure get_stuff (@p_what varchar) 
as 
begin 

    select case @p_what 
     when 'NAME' then t.name 
     when 'DESCR' then t.description 
     else null 
    end as the_column 
    from my_table t 

end 
+0

나는 왜 내가 사건에 대해 생각해 보지 못했는지 모른다. 생각 이상으로 생각하고 끝났습니다! 빠른 프로토 타입을 작성하여 진행 상황을 확인합니다. – Ali

+0

@Ali : 문제를 해결하거나 답변을 upvoting하는 경우이를 허용 된 솔루션으로 표시하는 것이 좋습니다. – ObiWanKenobi

관련 문제