2014-01-14 3 views
0

다른 제품에는 다른 사양 세트가 있습니다. 제품은 또한 분류됩니다. 이런 종류의 욕구를 없애는 방법? 어떤 아이디어든지 높게 평가 될 것이다. 예 :제품 및 사양에 대한 데이터베이스 디자인에 대한 도움이 필요합니다.

Sony Xperia ZL 

    General Features 
     Form - Touch 
     SIM - Single SIM, GSM 
    Software 
     OS Version - Android OS, v4.1.2 (Jelly Bean) 
     Operating Freq - GSM - 850, 900, 1800, 1900; UMTS - 2100 
    Display 
     Type - TFT Capacitive 
     Size - 5-inch 



LG HD LED Television 

    GENERAL 
     Model 47LN5710 
     Screen Type  - 
     Display Size 47 Inch 

    VIDEO FEATURES 
     Aspect Ratio - 
     Dynamic Ratio - 
     View Angle 178 Degree 
+0

[비슷한 게시물] (http://stackoverflow.com/questions/21010251/inventory-management-with-stock-options/21113170#21113170)을 참조하면 편리 할 수 ​​있습니다. –

답변

2

사용하는 제품에 따라 다릅니다. Product Id, Spec Name, Spec Value라는 세 개의 열만으로 'Spec Attributes'와 같은 테이블을 생성하는 쉬운 솔루션이 있습니다. 이는 쉽게 해결할 수 있지만 지원이나 데이터 무결성을 제공하지 않습니다.

더 나은 해결책은 속성에 대한 몇 가지 보호 책을 마련하는 것입니다. 위와 마찬가지로 '열'(예 : SIM, OS 버전)을 행으로 저장하는 표가 있어야합니다. 미리 정의 된 속성 및 '유형'을 사용하여 쿼리 특성을보다 쉽게 ​​지정할 수 있도록 제한하는 것이 좋습니다. 예를 들어

,이 예에서

DeviceTypes 
    DeviceTypeId |  Name 
    01   |  Camera 
    02   |  Television 
    03   |  Mobile Phone 

    Category 
    CategoryId |  Name 
    01   |  General 
    02   |  Video Features 

    DeviceAttributeTypes 
    DeviceAttribTypeId| DeviceTypeId | CategoryId |AttributeName | DataType 
    01    | 01   | 01   | SIM   | Varchar 
    02    | 01   | 01   | Size   | NUMBER 
    03    | 02   | 02   | Display Size | NUMBER 
    04    | 02   | 01   | Model   | Varchar 

    DeviceAttribut 
    DeviceId | DeviceAttirbTypeId | Value 
    13  | 01     | Single Sim, GSM 
    13  | 02     | 5 
    14  | 04     | 47LN5710 

, 당신이하고 싶은 속성과 유형 '하드 코드'장치 유형 및 카테고리 테이블 것이다. 이렇게하면 속성의 유형 또는 카테고리를 기준으로 속성을 필터링 할 수있는 옵션이 제공됩니다.

즉 모든 장치와 속성의 목록을 얻으려면 아래의 쿼리를 사용하십시오. 그럼 당신은 당신이 열 등의 속성과 결과 집합을 반환해야 쿼리를 만들려면 아이디 나 범주의 이름 또는 장치 유형

SELECT d.DeviceName 
    ,  dat.AttributeName 
    ,  dar.Value 
    FROM Device d 
     LEFT JOIN DeviceAttribute da 
      ON d.DeviceId = da.DeviceId 
     LEFT JOIN DeviceAttributeType dat 
      ON da.DeviceAttribTypeId = dat.DeviceAttribtypeId 

에 'WHERE'에 추가 할 수 있습니다, 난 항상을 사용, 주석. (예 here)

관련 문제