2017-05-09 1 views
0

C# + SQL을 사용하여 응용 프로그램 구조를 작성하려고합니다. 내 생각이 효율적인지 토론하고 더 나은 방법이 있는지 물어보십시오. 고유/공통 속성을 가진 하위 카테고리의 항목을 분류하기 위해 정보 기반을 구축한다고 가정 해 보겠습니다. 예를 들어 는 :런타임 확장을 통한 구조 확장

>Entities     
    >Living    
     >Plants   
      >Spore Bearing Plants  
      *hasSeed - FALSE   
      Seed Bearing Plants  
      *hasSeed - TRUE  
     >Animals    
      >Vertebrates   
       >Cats 
       *hasTail = TRUE 
        >Tiger 
        *averageLifeSpan = 23 
       >Humans 
       *hasTail =FALSE 
       *averageLifeSpan = someInt 
        >Human1 
        *name = george 
        *age = 35 

이제 런타임에, 내 어플은 척추 동물의 수준에서 새 하위 범주 아래, 말, 곤충을 소개 할 때 새로운 구조를 삽입, 독특한 속성을 구축 할 수 있도록하려면 예를 들어 문자열 chitinColor에 대한

내 생각은 : 다음

id name parentID 
0 Etity null 
1 Plants 0 
2 Animals 0 
3 Vertebrates 2 
4 Cats 3 
5 Humans 3 
6 Human1 5 
7 Tiger 4 
8 Spore Bearing Plants 1 
9 Seed Bearing Plants 1 

테이블의 : 모든 범주, 하위 범주 및 종에 대해 하나 개의 dB 테이블을 만들려면 런타임에서 그래서

IntValueTable   
Id entityID attributeID value 
0 7 0 23 
1 6 1 35 

BoolValueTable   
Id entityID attributeID value 
0 8 0 FALSE 
1 9 0 TRUE 
2 4 1 TRUE 
3 5 1 FALSE 

, 사용자가 종 가족 또는 새로운 속성을 소개합니다 경우 : 각 데이터 유형에 마지막으로

IntTable   
id attributeName entityID 
0 averageLifeSpan 3 
1 age 5 

BoolTable  
id attributeName entityID 
0 hasSeed 1 
1 hasTail 3 

, 각 데이터 유형에 대한 값 테이블 속성 엔터티를 추가 할 수 있습니다. 이것이 가장 적합한 방법입니까? XML 파일에 대한 호출처럼 보이지만 C#에서는 많은 XML 작업을 알지 못합니다. 그러나 SQL은 훌륭합니다. 참을성있게 읽어 주셔서 감사합니다. 감사합니다.

+0

xml 파일에 테이블을 출력하고 어딘가에 저장하는 프로그램을 작성해야합니다. 그리고 프로그램에로드하고 파싱합니다. –

+0

답장을 보내 주셔서 감사합니다. 지금은 XML을 사용하지 않는 것이 좋습니다. – Rivendare

답변

0

당신이 생각하는 패턴은 Entity Attribute Value입니다. 일반적으로 말하자면 EAV를 가져 오면 사람들은 숨을들이 마시면서 저주를 우물 거립니다. 예를 들어 Magento (일반적인 전자 상거래 플랫폼)는 EAV를 사용하여 제품 색인을 생성하므로 대규모 문제가 발생하여 제 3자가 EAV 테이블을 통해 정기적으로 비정규 화하는 프로그램을 작성했습니다.

즉, 그 용도가 있습니다. 나는 this answer가 장단점을 재평가하려고 시도한다고 생각한다.

+0

답변 해 주셔서 감사합니다. 링크를주의 깊게 읽었습니다. 글쎄, 그것은 사용자가 런타임에 새로운 내용을 넣을 수 있어야합니다. 대안이없는 것처럼 보입니다. – Rivendare