사용하는 제품에 따라 다릅니다. 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)
[비슷한 게시물] (http://stackoverflow.com/questions/21010251/inventory-management-with-stock-options/21113170#21113170)을 참조하면 편리 할 수 있습니다. –