2013-10-03 8 views
0

php, mysql 및 paypal을 사용하여 쇼핑 카트를 만들고 쇼핑을 시작했습니다. 저를 괴롭히는 한가지가 있습니다. 나는 반복적으로 mysql 열에 토큰 화 된 데이터를 저장하는 나쁜 형식을 읽었지만이 상황을 처리하는 방법을 알지 못합니다.데이터베이스에 다양한 양의 데이터를 저장합니다.

관리자가 새 제품을 추가 한 다음 제품에 대한 선택적 사용자 선택 옵션을 설정할 수 있습니다. 예를 들어 "phone"이라는 제품을 추가 한 다음 "color"라는 옵션을 "black, white, red, grey"라는 허용 옵션을 추가 할 수 있습니다. 또한 구성 옵션이없는 A4 용지와 구성 옵션이 많은 신발 한 켤레를 판매 할 수 있습니다 (신발 크기는 여성과 남성의 경우 4에서 13까지 선택할 수 있습니다).

제품이 얼마나 많은 옵션을 가지고 있으며 하드 제한을 적용하고 싶지 않기 때문에 현재 "option1", "option2"등의 열이 없으므로 대신 " option_data "는"color | red, black, white, green # memory size | 8gb, 16gb, 32gb "와 같이 보입니다. 옵션 이름과 가능한 데이터를 얻고 마지막으로 데이터를 분할하여 별도의 옵션을 얻습니다. 그런 다음 내 가게는이 모든 것을 분석하고 사용자가 선택할 수있는 드롭 다운 테이블을 생성합니다.

이렇게 데이터를 저장하는 것은 심각하게 싫은 일이며 제품이 얼마나 많은 옵션을 가질 지 모르겠습니다. 각각의 열을 만들 수는 없습니다. 어떻게 처리 할 수 ​​있습니까?

감사합니다 :)

답변

1

이상적으로 별도의 테이블을 생성하여 데이터를 정상화해야한다.

product_options :

id INT 
product_id INT 
option_name VARCHAR 

product_option_values :

id INT 
option_id INT 
value VARCHAR 
+0

'product_option_values'는'option_value VARCHAR'을 가지고 있지 하는가? –

+0

고마워, @ 프란시스코 프레 센 시아, 나는 지금 그것을 분명히했다. – Denis

1

가장 좋은 방법은 별도의 테이블을 추가하는 것입니다.

option 
    id 
    name  -- I.e. colour, memory, e.t.c. 
    product_id -- FK link to product 

를 그리고 표는 옵션 자체를 저장 : 하나는 다른 옵션을 저장하는 I가 "변수/값 조합 당 행"스틱을 제안

option_value 
    id 
    name  -- Choice i.e. red,blue, 5GB e.t.c. 
    option_id -- FK Link to option 
0

. 제품 변수 다음 테이블 방식을 고려

TABLE Product_variables: 
    INT product_id 
    STRING variable_name 
    STRING variable_value 

그런 다음 당신은 할 수 :

product_id, variable_name, variable_value 
1, memory_size, 8gb 
1, memory_size, 16gb 
1, memory_size, 32gb 
1, colour, red 
관련 문제