2017-12-27 18 views
-2

24 곳의 자동차 딜러 그룹에 대한 일일 보고서 애플리케이션을 구축했습니다. 매일 각 위치의 관리자는 판매 된 신차 및 중고차의 양을 입력 할 수 있습니다. 일일, 주말 및 월간 제국 전체 판매 보고서가 데이터에서 생성됩니다. MYSQL 데이터 리포팅을위한 데이터 구조

나는 모든 것이 잘 작동 두 테이블 dealerships (id, dealership_name)
  • daily entries (dealer_id, entry_date, new, used).
    • 을 사용했다.

      이제는 매출 총 이익, 일일 기회, 시운전, 판매 보증, 판매 된 경보와 같은 필드를 포함하도록 보고서를 확장하려고합니다. 그리고 그들은 제국 전체의 합계뿐만 아니라 각 점포에 대한 일일 및 월간 보고서를보고 싶어합니다.

      각 대리점마다 별도의 테이블을 사용해야합니까, 아니면 모든 대리점에 대해 단일 테이블을 계속 사용할 수 있습니까? 단일 테이블을 사용하는 경우 단일 저장소에 대한 보고서를 생성 할 때마다 전체 데이터베이스를 검색해야합니다. 시간이 지남에 따라 테이블의 크기가 커지면 결과적으로 성능에 영향을 미치지 않을까요?

    +1

    안에, 당신은 문제에 대한 해결책이 아닌 의견을 묻고 있습니다 ... 이것은 닫아야합니다 –

    +0

    전적으로 인덱스, 외래 키 및 기타 정보에 따라 다릅니다. 매일 매일 시운전 및 총 수익 등의 기록이없는 한 일일 진입 테이블에 해당 기록을 저장하고 올바르게 최적화되었는지 확인해야합니다. 그렇지 않으면 중복 데이터가 저장됩니다. – BenM

    답변

    0

    각 대리점마다 테이블을 사용하지 마십시오. 데이터베이스 디자인 방식이 아닙니다. 테이블은 같은 엔티티의 다른 인스턴스가 아닌 동일한 유형의 엔티티에서 데이터를 보유합니다. 판매 대리점 용 테이블과 일별 보고서 용 테이블 하나면 충분합니다. daily_reports 테이블을 변경하여 새 필드를 추가하고 데이터를 추가 할 수 있습니다.

    테이블 크기가 커지면 걱정하지 마십시오. 데이터베이스는 데이터를 처리해야합니다. 통합 보고서 테이블 (예 : montly_reports)을 작성하고 거기에 모든 일일 보고서의 합계를 추가하고 잠시 후 daily_reports을 프룬 (pruning)하여 저장된 데이터의 양을 줄일 수 있습니다. 이렇게하면 지난 x 개월 동안의 일일 보고서와 데이터 수집이 시작된 이후의 통합 보고서가 생성됩니다.