사용자가 회원 가입을 할 수있는 작은 온라인 앱 (PHP/MySQL)을 구축 중이며 회원 영역 내에서 취할 수있는 퀴즈 목록이 있습니다.온라인 앱에 각 사용자의 배열을 저장하는 방법은 무엇입니까?
주어진 사용자 (즉, 그의 브라우저가 목록이있는 페이지를 요청 했음)에 대한 퀴즈 목록을 표시 할 때 각 퀴즈에 대해 사용자가 이미 과거에 가져 갔는지 여부를 알아야합니다. 그가 그렇게했다면 나는 옆에 체크 표시를 할 것이다. 이는 사용자가 사이트 사용량을 추적하는 데 도움이됩니다.
내 문제 : 기본적으로 각 사용자에 대해 "찍은 퀴즈"목록을 저장해야합니다. 그러나 나는 그것을하는 최선의 방법에 대해 확신하지 못합니다.
내 솔루션 지금까지 : 각 퀴즈에는 ID가 있으므로 각 사용자에 대해 뽑은 퀴즈 목록을 쉼표로 구분 된 문자열로 내 데이터베이스에 저장하려고합니다. 그런 다음 데이터베이스에서 문자열을 읽고이를 배열로 변환합니다 (역으로 저장하는 경우에도 마찬가지입니다).
업데이트 : 분명히 2 가지 실행 가능한 옵션이 있습니다 : 1) 위의 배열을 문자열로 저장하는 방법을 사용하는 것입니다. 2) quiz-id/user-id를 저장하는 다른 MySQL 테이블을 생성하는 것입니다. 한 쌍. 이 시점에서 어떤 솔루션이 더 빠른지 궁금해서 사이트가 인기가 있어야합니다. 첫 번째 옵션을 사용하면 문자열을 배열로 변환하는 추가 작업을 수행 할 것이지만 그 후에는 작은 배열 (즉, 단일 사용자가 퀴즈 만 포함)을 검색하게됩니다. MySQL 솔루션을 사용하면 문자열을 앞뒤로 변환 할 필요가 없지만 훨씬 더 큰 데이터 세트 (즉, 모든 사용자가 퀴즈를 작성)를 검색해야합니다. 다수의 사용자 (예 : 1000)의 경우 어떤 방법이 더 빠르는지 추측 할 수 있습니까?
흥미 롭습니다. 그래서 사용자가 주어진 퀴즈를했는지 확인하려면 다음과 같이 quiz_taken 테이블을 검색합니다. select * from quiz_taken where quiz_id = quiz AND user_id = user; 그리고 나서 내가 뒤로 줄을 가졌다면 그가 가지고 갔다는 것을 의미 할 것이고, 그렇지 않다면 그는 그렇지 않았다. 권리? –
예! 그것은 가능한 접근법 중 하나입니다. – check123