2011-01-12 13 views
0

이 문제에 대한 데이터 구조를 결정하는 데 도움이 필요합니다. 데이터 유형과 하위 유형이 있으며 대부분 하위 유형이 null이지만 매우 적은 유형의 경우 하위 유형에 값이 있습니다. 다른 테이블에서 사용할 수있는 소스 테이블에서 데이터를 읽어야합니다. 이 모든 정보를 저장하기 위해 응용 프로그램에서 사용할 수있는 데이터 구조는 무엇입니까? 응용 프로그램에는 Type_id에 대한 정보가 없습니다. 그것만 데이터베이스에 대한. 그래서 Type, SubType, Source Table을 데이터 구조에 저장해야합니다. alt text이 특정 문제에 어떤 데이터 구조를 사용해야합니까?

+1

데이터 구조 또는 클래스 구조를 묻는 중입니까? –

+0

클래스를 사용하고 싶지 않습니다. 구성 할 수 있기 때문입니다. 즉우리는 타입 테이블에 새로운 컬럼을 추가 할 수 있어야하고 어플리케이션은 새로운 컬럼을 가져와야합니다. 이러한 모든 값을 응용 프로그램 캐시에 저장해야합니다. 따라서 유형 및 하위 유형의 특정 조합에 대한 애플리케이션 요청 소스 테이블이 데이터 구조에서이를 검색 할 수 있어야합니다. 나는 2 개의 사전을 사용하는 것을 생각했다. 나 타입 및 기타 중 하나의 유형 또는 하위 유형 및 값에 대한 소스 테이블을 제공합니다. 그러나 dictionary는 type_id에 중복 값을 허용하지 않습니다. 3 ad 4 type is C –

+0

이 데이터에서 수행해야 할 작업은 무엇입니까? 이 데이터는 어떻게 사용됩니까? – Davidann

답변

2

두 클래스를 사용하면 어떨까요?

유형은 하위 유형 인스턴스 필드가있는 기본 클래스입니다 (null 일 수 있음).

class Type 
{ 

    public SubTypeClass SubType {get; set;} 

    public string Id {get;set;} 

} 

나는 그것을 configuratble 만들려고 노력 을이기 때문에 클래스를 사용하지 않습니다. 즉 우리는 유형 테이블에 새 열 을 추가 할 수 있어야 진짜 필요하지 않는 한 응용 프로그램 해야 픽업 새 열

나는이에 추천 할 것입니다. 일반적으로 데이터베이스 테이블이 변경되면 정말 좋은 이유가 있고 응용 프로그램 디자인을 재고해야합니다 ... 열을 미친 듯이 키울 수있는 테이블이 있으면 데이터베이스 디자인이 아마도별로 좋지 않고 공식화되지 않을 것입니다 (표준 SQL 데이터베이스).

sub_type은 실제로 큰 정의가 아니며 분류를위한 예제로 사용하고 있다고 가정합니다. 알아낼 수 있도록 은색 데이터 구조를 만들지 마십시오. 그것은 더 많은 문제를 가져옵니다. 주어진 관련 데이터 테이블이 변경되면 좋은 디자인으로 한 클래스를 변경하면 직접 SQL 쿼리보다 간신히 작동하는 모든 클래스에 좋은 점이 많지 않습니다.

1

편집 : 어떻게 데이터를 모른 채

SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table2 on table1.type_id = table2.type_id; 

최종 편집

:

같은 쿼리를 사용하여 DB에서 유형/하위 유형/소스의 튜플을 가져 오기 을 사용하는 경우 다음을 수행 할 수 있습니다.

(하나의 유형/부속/소스 튜플을 나타냅니다) columnData에 삽입 할 때

은,이 같이 할 것입니다 : 새로운 열이 추가 될 때

columnData.put("Type", type); 
columnData.put("SubType", subtype); 
columnData.put("Source", source); 

이 방법, 당신은 클래스 구조를 변경할 필요가 없습니다 DB에.

그리고 메인 응용 프로그램에서, 당신은 사용할 수 있습니다 : 물론

List<MyData> list; 

,이 답변이 데이터가 사용되는 방법에 따라 변경 될 수 있습니다.

+0

Type-Sub-Type-Source를 어떻게 매핑 할 수 있습니까? 즉, 유형 및 하위 유형을 기반으로 소스를 찾고/가져올 수있는 방법은 무엇입니까? 대부분의 경우 하위 유형을 null로 지정할 수 있습니까? 목록에 입력 할 형식 및 하위 형식입니다. 소스를 검색하고 싶습니까? –

+0

질문에, Type_id를 프로그램에서 사용할 수 없다고 말하면 SQL 쿼리를 사용하여 Type/SubType/Source 튜플을 생성합니다. SELECT table1.Type, table1.SubType, table2.Source from table1 JOIN table1.type_id = table2.type_id의 table2. 그런 다음이 튜플을 프로그램에 제공 할 수 있습니다. 또한 질문에 Type/Subtype을 기반으로 Source를 찾고/가져오고 싶다는 사실을 기재하십시오. – Davidann

관련 문제