나는 두 테이블, 기사가받은 투표 수 저장 한이 : 나는 또한 다른 테이블이DB 트리거를 사용해야하는 상황은 무엇입니까?
| article_id | visitor_votes | member_votes | voting_opened |
-------------------------------------------------------------
| 1 | 12 | 394 | Y |
| 3 | 94 | 5821 | Y |
유지 사용자가 투표 트랙 그중를하는 기사
| vote_id | user_id | article_id | date |
--------------------------------------------
| 1 | 12 | 1 | 7/28/2012
| 2 | 23 | 3 | 7/28/2012
하나에 대한 사용자는 거래 당 하나의 투표 만 할 수 있습니다. 나는 현재 투표 테이블에 레코드가 삽입 될 때마다 기사 테이블의 투표 수를 증가시키는 방아쇠를 사용합니다. 이 좋은 연습인가, 아니면 내 응용 프로그램 (PHP 웹 기반 웹 사이트)에서이 작업을 수행해야합니까? 또한 특정 득표 (voting_opened = N) 이후에 투표를 중지하고 총 투표 수 (visitor_votes + member_votes> = 6000)를 확인한 다음 아티클 행을 업데이트하여 voting_opened = N으로 설정해야합니까? 아니면 내 응용 프로그램에서해야 할 일이 무엇입니까? 수백 개의 기사에 대해 수천 표를 얻고 업데이트가 충분히 빨리 업데이트되지 않아 투표 수가 임계 값을 초과하는 경우에 직면하고 싶지 않기 때문에 규모가 큰 솔루션이 필요합니다. 또는 무엇이든. 이 시나리오에서 누군가가 약간의 빛을 비춰 줄 수 있습니까?
감사합니다.
총 투표 수를 유지하지 않으려는 경우 필요에 따라 user_vote 테이블에서 추가하십시오. –
해당 솔루션의 문제점은 현재 1 억 개가 넘는 레코드가있는 투표 테이블입니다. 모든 사용자가 투표를하기 전에이를 요약하는 것은 성능 관점에서 엄청나게 무겁습니다. 단순한 선택 및 비교가 상대적으로 낮은 곳. – user1143767