2012-09-24 5 views
2

제품 표가 으로 NodeID | 부모 노드 ID | NodeName 여기서 "노드"는 "제품"또는 "범주"일 수 있습니다. 예를 들면 다음과 같습니다.제품의 데이터베이스에 "specification-value (s)"관계를 유지하는 방법

NodeID | 부모 노드 ID | NodeName

0 || || 루트

1 || 0 || 전자

2 || 1 || 이동 통신사

3 || 2 || Samsung

4 || 2 || Apple

5 || 2 || Nokia

6 || 5 || Nokia 1100

7 || 5 || 노키아 루미아 800

등등 ..

지금, 루트> 가전 제품> 노키아는 범주이며, 노키아 1100 제품입니다. 각 제품에 대해 제품과 관련된 특정 특성 세트 (사양)가 필요합니다. 테이블에 그 관계를 유지하고 있습니다. ProductAttributes (열 포함) : AttributeId || AttributeName || 가치 || NodeID 여기서 특정 노드 ID (예 : Nokia 1100)에 대한 모든 속성 및 해당 값을 유지합니다.

사용자가 "Nokia 1100"을 게시 할 때 UI에 미리 채워진 값이있는 모든 속성을 갖게됩니다.

예를 들어 사용자가 게시하는 내용이 데이터베이스에 없습니다 (예 : 그가 "삼성 포커스"를 올리고 있다고 말한다. 그는 이제이 요청서 인 "Mobiles"를 게시 할 "카테고리"를 선택할 수있는 옵션을 갖게됩니다.

내가 원하는 것은 어떻게 든됩니다. 사용자는 Mobiles와 관련된 속성 (기본값이 있거나 없음)을 표시해야합니다. 그러면 사용자는 해당되는 것을 선택하고 요청을 게시 할 수 있습니다.

이 경우 나는 그가 카테고리를 선택할 때마다 사용할 수있는 "카테고리"에 몇 가지 기본 속성을 추가 할 생각입니다.

하지만이 방법과 관계에 대한 적절한 테이블 구조를 생각해 낼 수 없습니다. 즉, 단일 카테고리에 대해 여러 속성이있을 수 있으며 각 속성에 대해 여러 값이있을 수 있습니다.

나는 여기 내가 무엇을하려고 하는지를 묘사 할 수 있기를 바랍니다. 어떤 도움을 주시면 감사하겠습니다. 당신이 EAV 찾고있는 것처럼 소리

답변

0

이 방법은 (일부 안티 패턴을 말한다) 함정 천지되어 있지만

http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

가 알고 있어야 패턴 (엔티티 속성 값).

+0

이 문제는 일반적인 문제인 것처럼 보이지만 아직 수행하려는 작업을 처리하는 방법에 대한 좋은 답변을 아직 보지 못했습니다. 이런 종류의 데이터를 추적하는 사이트가 많이 있다는 것을 알고 있지만 각 제품 유형에 대해 '세부 정보'표를 갖기 위해 수천 개의 다른 표가 있다고 상상하기 어렵습니다. 그들은 모두 EAV를 사용하고 EAV-naysayers는 기술적으로 올바르지 만 그러한 유형의 모델을 사용하면 성능이 과장되고 있다고 생각할 수 있습니까? – Nitish

관련 문제