전자 상거래 사이트의 각 항목에 여러 변형이있는 경우 내 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
... ... ... ... ...
Banana
및 Cherry
있는 맛 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 구조와 사물을 초기화하는 둔한 방법을 가질 수 있습니다.
하지 마세요. '(itemNum, itemName, itemPrice, strength)'가 더 좋은 방법입니다. 그 강도 '1', '7', '80'과 같은 다른 맛으로 끝나면 테이블에 기둥을 더 추가하고 많은 공간을 낭비해야합니다. 일반적인 힘 필드는 당신이 원하는 ** 모든 힘을 가질 수있게합니다. 그런 다음 해당 레코드의 itemID 필드를 입력하면 모든 강도가 자동 ID와 문제를 해결합니다. –
나는 당신이 데이터 정규화가 무엇인지 조사 할 필요가 있다고 생각한다. 이것은 ZZ-bb가 구현 한 것이다. – CAO