2013-12-23 2 views
0

전자 상거래 사이트의 각 항목에 여러 변형이있는 경우 내 SQL 테이블을 가장 잘 구성하는 방법은 무엇입니까? 나는 전자 담배 사업을 운영하며 일들은 풍미와 힘에 의해 조직된다.여러 품목의 전자 상거래 용 데이터베이스 구성

itemNum itemName itemPrice itemConc stockRemaining 
-------------------------------------------------- 
    1  Banana 10.99  0   5  
    2  Banana 10.99  6   42 
    3  Banana 10.99  12   12 
    4  Banana 10.99  18   0 
    5  Cherry 10.99  0   19 
    6  Cherry 10.99  6   36 
    ...  ...  ...  ...   ... 

BananaCherry있는 맛 0, 6, 12, 18는 강도 인 상태 : 여기 내 SQL 테이블의 대략적인 모형이다. 사람이 자신의 장바구니에 무언가를 추가하면, 일이 두 배열에 $_SESSION 데이터에 저장됩니다 $productNumbers$productQuantities, 그래서 누군가가 자신의 장바구니에 18 세기에 5 배 체리 0 강도와 배 바나나를 추가 할 때, 다음은 초기화 :

$productNumbers[] = {5, 4}; 
$productQuantities[] = {5, 2}; 

그러나 관리하기가 번거롭고 너무 부풀어 있습니다. 나는 그것을 최적화 할 수 있다고 생각할 때마다 맛이 4 줄로 끝납니다. 나는 하나의 향미료에 주식을 추가하는 것보다 각 개별 아이템/힘 콤보에 대한 주식을 추가 할 필요가있다. 나는 그 중 1/4 정도만 필요로 할 때 잠재적으로 수백 개의 행을 갖게된다. 나는 아래와 같은 것을 생각하고 있었다.

itemNum itemName itemPrice zero six twelve eighteen 
--------------------------------------------------- 
    1  Banana 10.99 0 1  5  2 
    2  Cherry 10.99 6 3  42  3 
    ...  ...  ... ... ... ... ... 

그러나 이것을 어떻게 구현하는 것이 가장 좋은지 잘 모르겠다. itemPrice의 오른쪽 열은 향미 당 개별 강점의 재고 수준이지만 내 카트 시스템을 고려할 때 어떻게 구별 할 수 있습니까? 이것은 매우 효율적으로 보이지만, 구현이 번거로움을 증명합니다. 나는 여러 배열을하지 않고 작동하게하는 방법을 생각할 수 없다 : 이것은 그들이에도 사용될 수 없습니다 경우에도 여러 배열을 초기화 할 필요가 의미

$productNumbers[]; //itemNum 
$zeroQty[]; //quantity order of zero 
$sixQty[]; //quantity order of six 
//etc 

. 그것은 둔한 SQL 구조를 가질 수 있지만 사물을 초기화하는 간단한 방법, 또는 단순한 SQL 구조와 사물을 초기화하는 둔한 방법을 가질 수 있습니다.

+1

하지 마세요. '(itemNum, itemName, itemPrice, strength)'가 더 좋은 방법입니다. 그 강도 '1', '7', '80'과 같은 다른 맛으로 끝나면 테이블에 기둥을 더 추가하고 많은 공간을 낭비해야합니다. 일반적인 힘 필드는 당신이 원하는 ** 모든 힘을 가질 수있게합니다. 그런 다음 해당 레코드의 itemID 필드를 입력하면 모든 강도가 자동 ID와 문제를 해결합니다. –

+0

나는 당신이 데이터 정규화가 무엇인지 조사 할 필요가 있다고 생각한다. 이것은 ZZ-bb가 구현 한 것이다. – CAO

답변

2

디자인 또는 구현에 대한 질문이 있으십니까? (이제는 두 가지를 묻고있는 것 같습니다.)

두 개의 테이블에 담배 데이터를 저장할 수 있습니다.

item (강도에 영향을주지 않으면 가격, PK : itemNum이) :

itemNum itemName itemPrice 
-------------------------- 
    1  Banana 10.99 
    2  Cherry 10.99 

itemStock (PK : itemNum이, itemConc) : 이제

itemNum itemConc stockRemaining 
------------------------------- 
    1  0   0 
    1  6   5 
    1  12  7 
    1  18  25 
    2  0   3 
    2  6   10 
... 

쉽게 확인할 수 있습니다 각 항목에 대한 재고 및 새로운 강점을 추가하십시오. 항목 가격이 각 힘에 따라 다르면 itemStock 테이블로 옮길 수 있습니다. 또는 다른 담배 상자 크기를 제어하려는 경우 새 테이블에 추가하십시오.

장바구니에는 B 마크와 같은 (itemNum, itemName, itemPrice, strength)이 포함될 수 있습니다.

이 장비는 무엇입니까?

관련 문제