MySQL에 데이터를 삽입한 후 조건부로 두 값을 증가시킵니다.
P粉937382230
P粉937382230 2023-09-02 10:52:17
0
2
561
<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粉937382230
P粉937382230

모든 응답(2)
P粉018653751

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

으아악

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

으아악

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

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

으아악

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

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

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

으아악

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

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

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

P粉953231781

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

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿