찾다

 >  Q&A  >  본문

MySQL에 데이터를 삽입한 후 조건부로 두 값을 증가시킵니다.

<p>현재 축구 데이터베이스에는 다음 세 개의 테이블이 있습니다.</p> <pre class="brush:php;toolbar:false;">팀(이름) 계절(이름, 시작, 끝) 경기(ID, 날짜, 시즌, 홈팀, 원정팀, HomeTeamScore, AwayTeamScore) (홈팀, 원정팀, 시즌은 외래 키입니다)</pre> <p>이제 각 팀이 득점한 골과 허용한 골은 물론 각 시즌에 획득한 점수(무승부당 1점, 승리당 3점)를 기록하는 새 테이블을 만들고 싶습니다. 이렇게 하면 순위를 쉽게 얻을 수 있습니다. </p> <p>다음과 같은 테이블을 만드는 것을 고려했습니다. </p> <pre class="brush:php;toolbar:false;">통계(시즌, 팀, 득점, 득점, 포인트)</pre> <p>그런 다음 새로운 일치 항목이 삽입될 때마다 이 테이블도 업데이트합니다. 이 테이블에는 각 팀+시즌 조합에 대한 행이 하나씩 포함됩니다. 중복성을 도입한다는 것을 알고 있으므로 이것이 최선의 솔루션인지 확신할 수 없지만 이 정보는 자주 계산되어야 하기 때문에 유용할 것이라고 생각했습니다. 이 정보를 업데이트하기 위한 트리거를 만들고 싶지만 어떻게 해야 할지 잘 모르겠습니다. 어떤 팀이 경기에 참여하는지에 따라 통계 테이블의 두 행을 업데이트해야 하며, 집에서든 멀리에서든 다른 값으로 업데이트해야 합니다. </p> <p>이상적으로는 팀이 게임이 속한 시즌에 대한 기록을 삽입하지 않은 경우 이 트리거가 이 새 테이블에 항목을 생성해야 하지만 MySQL에서 그러한 조건이 가능한지 확실하지 않습니다. 제가 수행한 테스트를 제공하지 않았다는 것을 알고 있지만 이는 온라인에서 유사한 요청(또는 더 일반적으로 필요한 정보를 쉽게 쿼리할 수 있는 요청)을 실제로 찾을 수 없었기 때문입니다. </p> <p>또한 이 상황을 어떻게 처리할 것인지에 대한 더 나은 아이디어가 있으면 좋겠습니다. </p>
P粉937382230P粉937382230455일 전565

모든 응답(2)나는 대답할 것이다

  • P粉018653751

    P粉0186537512023-09-03 09:55:42

    다음과 같은 구조를 고려해야 한다고 생각합니다.

    으아악

    이 구조도 최적이 아닙니다. 내 개인적인 의견으로는 더 나은 구조를 사용할 수 있습니다.

    으아악

    목표 테이블은 각 목표를 기록하는 데 사용되며 "HomeTeamScore" 및 "AwayTeamScore" 필드를 사용하지 않고도 이 테이블에서 경기 결과를 작성할 수 있습니다.

    통계 테이블의 경우 누가 포인트를 얻었는지 알아야 하므로 최종 테이블 구조를 그대로 유지하겠습니다.

    으아악

    일치 항목의 상태 필드 값은 다음과 같습니다: ['1','X','2']

    • 1 - 홈 팀 승리
    • X - 그리기
    • 2 - 원정팀 승리

    이 방법을 사용하면 예를 들어 ID가 12인 팀의 경우 통계를 계산하는 데 필요한 모든 것을 쉽게 얻을 수 있습니다.

    으아악

    이를 시작점으로 사용하여 그룹화 및 그룹화 기능을 사용하여 팀 통계를 계산하는 좀 더 복잡한 쿼리를 작성할 수 있습니다. 이와 같은 쿼리를 성공적으로 생성했다면 Views

    를 사용하는 것이 좋습니다.

    그런데 실행하려는 쿼리는 무겁지 않으며 반드시 트리거가 필요한 것도 아닙니다. 먼저 데이터베이스 디자인을 생각해 보세요!

    회신하다
    0
  • P粉953231781

    P粉9532317812023-09-03 00:42:53

    트리거를 사용하여 중복 데이터를 유지하는 것보다 훨씬 간단한 방법은 뷰를 사용하는 것입니다. 이는 단지 기본 통합 합계입니다.

    으아악

    회신하다
    0
  • 취소회신하다