2012-03-06 2 views
3

장바구니를 구현해야합니다. 제가 20 가지 항목을 판매한다고 가정 해 봅시다.일대 다 관계에 대한 데이터베이스 스키마를 어떻게 개발합니까?

내가 몇 가지 간단한 테이블이 : 4 : 15 : 나는하지 1의 순서로 카트를 조회하고 항목을 표시하는 방법

Cart 
------- 
tran_id first_name last_name items 
1   John   Doe   1:4:15:16 


Item 
------- 
item_id name   price 
1   Ruby   $1.00 
2   Diamond  $2.00 
... 

포인트가, 16 형식이 아니라 루비로, 자수정, 오팔, 실버.

+2

나에게 많은 많은 것 같은데. 한 사람이 많은 물건을 살 수 있고, 많은 사람이 물건을 살 수 있습니다. – Dan

답변

7

구조가 일대 다 또는 다 대다가 아닌, 일대일 "blob : of : colon : separated : text"일뿐입니다.

대다수의 적절한 관계는 대개 테이블을 사용하여 관계를 연결합니다. 특정 경우에 해당 테이블은 종종 "거래 세부 사항"테이블 인 반면, "카트"테이블은 "거래 헤더"테이블입니다.

당신은이 상황에서 세 개의 테이블 것이다 : 당신이 찾고있는 것을 얻을이를 조회, 그리고

CART (transaction header) 
--------------- 
tran_id NUMBER 
first_name VARCHAR(100) 
last_name VARCHAR(100) 

CART_ITEM (transaction detail) 
--------------- 
tran_id NUMBER 
item_id NUMBER 
.. other details about this line item (quantity, etc) 

ITEM 
--------------- 
item_id NUMBER 
name VARCHAR(100) 
price NUMBER(18,4) 

을, 단지 말 :

SELECT h.tran_id, i.name, i.price 
    FROM cart h 
INNER JOIN cart_item d ON (h.tran_id = d.tran_id) 
INNER JOIN item i ON (d.item_id = i.item_id) 
WHERE h.tran_id = 1 
ORDER BY i.name 
+5

나는 1 : 1의 "blob : of : 콜론 : 구분 된 : 텍스트"발언에 대해 +10000을 부여합니다. 한 필드에 둘 이상의 값을 저장하는 것은 결코 좋은 생각이 아닙니다. – HLGEM

관련 문제