2012-05-02 1 views
2

데이터베이스 디자인을 다루는 방법에 관해서는 문제가 있습니다. 나는 주변을 둘러 보았고 http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php과 같은 예를 발견했다. 이는 상품을 팔고있는 상점에서 꽤 잘 작동 할 것이지만 두 명의 사용자 사이의 판매 (또는 거래)를 추적 할 데이터베이스를 만들고 싶다.데이터베이스 디자인 : 피어 오더를 허용하는 방법 일명 야구 트레이딩 카드 거래 모델링

Jane 's (4 * y1), y2 및 $ 5.00에 대한 Ex John Trades 카드 x1, x2, x3, x4. (이 예에서는 Jane의 카드 5 장에 x1, x2, x3, x4, y1에 4 장, y2에 1 장, $ 5.00이라는 4 장의 카드를 거래합니다.)

나는 Jane이 카운터 요한에게 여분의 카드를 주거나, 마음 속으로 균형 잡기를 원할 수도있는 것을 요한에게 제안하십시오.

이 관계형 DB 설계의 흥미로운 예입니다 사전

답변

2

에 감사드립니다. 본질적으로 가능한 한 표준화 된 구조를 만드는 것이 좋습니다. 이는 기본적으로 공백을 채울 수있는 테이블을 만들려고한다는 것을 의미합니다. "이 테이블의 행은 고유 한 _ _을 나타냅니다."

특정 응용 프로그램에 대한

, 내가 제안 : 사용자의

  • 테이블, 사용자
  • 카드의 테이블 당 1 행, 각 카드 (당 1 행에 관계없이 카드의 인스턴스 수의 세계에 존재 - 예를 들어 Topps의 1984 Michael Jordan 신인 카드 행이 될 것임)
  • 거래 당 1 행. 거래 행에 사용자 테이블의 ID를 사용하여 거래에 관련된 user1 및 user2의 열을 포함시킬 수 있습니다. 반박 할 수있는 기능을 원한다면 반대 제안은이 제안에서 또 다른 행이며 "원본 제안"열은 반대 제안의 근거가되는 제안을 참조하는 것입니다.
  • 무역 품목 표. 여기서 거래와 관련된 각 항목에 대해 수량과 함께 1 행을 갖게됩니다. 각 행에는 거래 테이블에 매핑되는 tradeID, 카드 테이블에 매핑되는 cardID, 수량 열 및 관련된 "userID"에 매핑되는 "from"및 "to"열이 있습니다.
+0

내가 거래 차액을 없애기 위해 금액을 수용하는 방법이나 누군가가 여러 카드에 대해 순수 판매를하는 경우에 대한 생각은 무엇입니까? – Mark

+0

@ MarkR - 예, "카드"테이블을 "자산"테이블로 변경하고 현금/달러를 다른 자산으로 만들 수 있습니다. 그런 식으로 현금은 특정 양의 한 쪽에서 다른 쪽으로 이전 될 수있는 또 다른 항목입니다. – davesnitty

+0

흠 ... 달러의 분수로 지저분해질까요? 카드의 양은 현금이 소수 일 때 항상 정수 값이 될 것입니다. – Mark

관련 문제