2013-05-04 4 views
0

이것은 내 첫 번째 데이터베이스 스키마 디자인입니다. 식품 비용 관리에 사용할 내 부서를위한 작은 웹 응용 프로그램을 개발하려고합니다. 그리고 나는 나의 학습 목적을 위해 이것을하고있다.첫 번째 데이터베이스 스키마 설계 : 제안 필요

  1. 총 회원 : 15
  2. 한 관리자 모든 비용의 기록을 유지하기 위해 내 부서에서 식품 비용 관리의 작동 방법

    . 그는 매일 데이터베이스를 업데이트 할 것입니다.
  3. 각 회원은 하루에 한 번만 주문할 수 있습니다. 특정 날짜에 손님이있는 경우 여러 번 식사를 주문할 수 있습니다.
  4. 일반적으로 회원은 1 ~ 2 주 전에 청구서를 지불합니다.
  5. 외부에서 음식을 가져 오는 사람은 한 두 사람이어야하며 점심 식사비는 지불 할 필요가 없습니다. 교통비도 그들에게 주어집니다. 그들의 식량 비용 + 운송 비용은 다른 15 명의 회원 비용과 동등하게 분배됩니다.

데이터베이스 쿼리 :

관리자의 관점에서가 :

    그가 관리 할
  1. /매일 순서를 추가합니다.
  2. 그는 각 회원의 "잔액"(표 : 지불금)에 대해 적립 될 모든 회원에 대한 지불을 추가합니다.
  3. 모든 회원의 주문/비용에 대한 개요를 볼 수 있습니다. 역사 및 그들의 현재 균형을 한 번에 한 달 동안 차트에 표시합니다.
  4. 회원 중 마이너스 잔액이 있거나 특정 금액 미만인 회원은 관리 대시 보드에 통보됩니다. 회원의 관점에서

:

  1. 그는 한 번에 마지막 달 자신의 현재 잔액 및 주문/비용 내역을 볼 수 있습니다.
  2. 그는 그가 만든 지불 기록의 마지막 x 번호를 볼 수 있습니다. 일부 속성의

    database schema diagram

    정교화 :

    EPlatenum 내가 위에서 언급 한 쿼리를 기반으로

는 아래 그림과 같은 데이터베이스 스키마를 설계하려고 : 주문 된 접시 수 이외에 가져온 여분의 접시 수.

Eplatecost : 여분의 식품 용 접시. 이 비용은 15 명의 개별 비용으로 똑같이 배분됩니다.

EPersonnum & EPersoncost : 음식과 총 비용을 데려와 관련된 추가 인원의 수. 비용은 15 명의 개별 비용으로 똑같이 배분됩니다.

TransCost : 운송 비용. 비용은 15 명의 개별 비용으로 똑같이 배분됩니다.

질문 :

  1. 내가 만든 한 실수이며 어떻게 극복 할 수 있는지?

  2. 내 DailyList 테이블의 경우 "날짜"를 기본 키로 사용했습니다. 기본 키로 날짜를 사용해도 괜찮습니까? 그렇지 않은 경우 여기에 기본 키가 될 수 있습니까?

  3. 30 개월 비용/주문 내역에 대한 차트 개요를 채울 때 데이터베이스 쿼리가 엄청나게 커질 것입니다. 쿼리를 최적화하기 위해 어떤 접근 방식을 취해야합니까?

데이터베이스 스키마 개선에 대한 귀하의 제안을 기다리고 있습니다. 제 설계 실수를 바로 잡고 극복하도록 도와주세요. 양해 해 주셔서 감사합니다.

+3

당신의 스키마를 빠르게 보면, 정밀도가 낮고 (예 : 1 대신 0.99) 정확하게 돈을 저장하지 않아야합니다. 나는 고정 소수점 숫자이기 때문에 십진수 또는 숫자로 돈을 저장하는 열의 데이터 유형을 변경하는 것이 좋습니다. –

+0

제안 해 주셔서 감사합니다. – xihad

답변

1

내 첫 인상 :

  1. 내가 (사용자가 특정 주문에 대한 지불하기 때문에) 지불이 주문과 관련이있을한다고 생각합니다.
  2. DailyList가 무엇인지 모르겠지만 동일한 날짜가 2 개 이상일 수 있습니다. 이미지가있을 수 있으므로이를 기본 키로 사용하면 안됩니다.
  3. 비밀번호는 예 : SHA (그래서 varchar 15는 적습니다).
+0

2. 일일 목록은 실제로 다른 비용에 대한 DailyCostList 즉 추가 인원수와 그들의 음식에 대한 총 비용, 여분의 식사 접시 수 및 비용이 여기에 포함됩니다. 각 날짜마다 하나의 기록이 있고 그보다 많지는 않습니다. – xihad

+0

기본 키가되는 것이 완벽합니다. –

+0

1. 지불은 1 주일 또는 2 주 전에 미리 지불합니다. 이 금액은 '사용자'표의 각 잔액 필드에 추가됩니다. 개별 식사 비용을 추적하기 위해 "주문"테이블에 하나의 속성 "OrderCost"가 있습니다. – xihad

관련 문제