2012-04-23 3 views
0

사이트 관리자가 데이터베이스 테이블에 속성을 만들 수있는 권한을 부여해야합니다. 웹 사이트에는 판매자와 구매자가 있으며 특정 제품을 추가 할 때 각 판매자가 특정 제품에 필요한 필드를 채운 다음 제품을 게시합니다. 나는이 일이 어떻게 될 것인지 혼란 스럽다. 모든 제품에 특정 필드가있는 경우 사이트에 2.000 개의 제품이 있으면 2.000 개의 테이블을 갖게됩니다. 그런 일은 한 번도 해본 적이 없어서 어떻게 처리해야할지 모르겠다. 또한, 관리자 기능에서 속성을 만듭니다. 제품이 토마토라고 가정 해 봅시다. 관리자는 "조건"이라고 불리는 토마토 필드를 추가하고 "고정"및 "신선한"과 같은 옵션을 갖습니다. 그런 다음 판매자 중 일부가 토마토 제품을 만들려고 할 때 토마토의 상태가 신선하거나 얼 었는지 선택해야합니다. 필자는 텍스트를 담을 테이블을 생성 한 다음 텍스트를 보유 할 다른 테이블을 생성하는 등의 가능한 솔루션을 생각했습니다.PHP : 관리자 패널에서 속성 생성

product_tomato (PRODUCT_ID, USER_ID, 이름, 설명, 상태)

product_select은 (select_id, PRODUCT_ID, select_text)

product_option은 (option_id, select_id, option_text는)

그래서,이 방법 I 이것을하기위한 테이블을 상상했다. 따라서 관리자가 제품 테이블에 필드를 추가 할 때 제품 테이블에 열을 추가 한 다음 prodcut_select 테이블에 새 행을 작성한 다음 product_option 테이블에 가능한 옵션을 나열합니다. 그러나 제품 페이지에 표시하는 방법에 대해 혼란스러워합니다. 관리자가 만든 열의 이름이 무엇인지 모르면 코드에서 어떻게 처리할까요?

+0

이 참조는 도움이 될 수도 있습니다. http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model –

+0

참조 해 주셔서 감사합니다. – Darko

답변

3

질문의 문구는 매우 혼란 스럽지만, 나는 당신이 말하는 것을 요지로 생각합니다.

아니요, 모든 단일 제품에 대해 테이블을 만들지는 않을 것입니다. 매우 우스꽝 스럽습니다. 3 개의 테이블이있는 여러 제품에 대해이 작업을 쉽게 처리 할 수 ​​있습니다.

Tables: 

Product 
Product_Attributes 
Seller_Product 

가상의 토마토를 예로 들어 봅시다.

관리자는 자신의 사이트가 현재 토마토를 제품으로 제공 할 것이라고 결정합니다. 그는 제품을 만들어 제품 테이블에 추가합니다. 그런 다음 그는 토마토가 신선하고 얼어 붙은 두 가지 값을 갖는 "조건"속성을 가져야한다고 결정합니다. 따라서 그는 Product_Attributes 테이블에 Product, Condition, Value라는 세 개의 필드가있는 두 개의 행을 추가합니다.

따라서 테이블은 다음과 같습니다. 당신의 판매자가 사이트 저장소 또는 무엇이든 그것이 항목을 추가 할 때

Product Table: 

*Name |* 
Tomato 

Product_Attribute Table: 

*Product | Attribute | Value* 
Tomato | Condition | Fresh 
Tomato | Condition | Frozen 

마지막으로, 당신은 그들이 그 제품에 대한 Product_Attribute 테이블에서 조건과 잠재적 인 가치를 잡고 양식에 데이터를 입력 할 것이다. 이 경우 속성이 하나뿐이므로 조건을 채울 수 있습니다. 신선한 토마토와 냉동 토마토를 각각 판매하는 두 명의 판매자 Jim과 Tom이 있다고 가정 해 보겠습니다. 마지막 세 개의 테이블은 다음과 같습니다.

Product Table: 

*Name |* 
Tomato 

Product_Attribute Table: 

*Product | Attribute | Value* 
Tomato | Condition | Fresh 
Tomato | Condition | Frozen 

Seller Product Table: 

*Seller | Product| Attribute | Value* 
Jim | Tomato | Condition | Fresh 
Tom | Tomato | Condition | Frozen 

이렇게하면 세 개의 테이블을 사용하는 제품에 대한 다양한 사용자 정의 필드를 저장할 수 있습니다. 필요에 따라 정규화하거나 비정규 화해야합니다. 판매자의 제품에 대한 테이블 만 필요로하고 조건을 별도의 테이블에 저장할 수 있습니다. 어쨌든 위에서 설명한 방법은 작업을 완료하게됩니다.제품 ID, 카테고리 ID, 이름, 가격, 설명

product_meta - - 제품 ID, ATTRIBUTE_NAME, ATTRIBUTE_VALUE

product_variants - 제품 ID, 변형

product_data : 여기 생각

+0

좋아, 이것은 단지 훌륭했다. 당신은 나를위한 순수한 괴물입니다! 내 비참한 삶에 빛을 가져 왔어! 사랑해! – Darko

1

좋은 계획입니다 ID, 변형 값

변형 이름과 카테고리 이름/설명에 대해 별도의 테이블을 원할 수도 있습니다.

예 :

ID | Category_ID | Name | Price 
251 | 14   | Tomato | 5.00 

ID | Attribute | Value 
251 | Condition | Fresh 
251 | Color  | Red 

ID | Variant_ID | Name | Value 
251 | 50   | Size | Small 
251 | 50   | Size | Huge 

그래서 기본적으로 당신이 주변에 5-10 테이블 (DB 정상화의 구글 3 단계)을해야합니다. 모든 테이블은 ID로 연결됩니다.

JOIN 문과 WHERE product_id 조건을 사용하여 값을 검색하면됩니다.

+0

도와 주셔서 대단히 감사합니다! 감사합니다! – Darko

관련 문제