2011-09-05 3 views
0

일부 사용자가 프로필을 만들면 내 학교에서도 학교 이름을 선택할 수 있습니다. 학교는 데이터베이스에 테이블을 가지고 있습니다. 응용 프로그램의 기본 페이지에는 사용자 학교에 대한 일부 데이터가 표시되어야합니다. 그리고 학교 ID를 바탕으로 무언가를 표시하는 링크가 있습니다. 사용자 로그 내가 SchoolID 사용자 ID에사이트의 중요한 데이터를 데이터베이스에 저장해야합니까?

  1. 을 기반으로 얻을에 세션에 저장 :

    는 지금은 두 가지 옵션이 있습니다?

  2. schoolID를 요청하는 항목을 열어야 할 때마다 사용자 ID를 기반으로 schoolID를 얻기 위해 데이터베이스에 전화를 겁니다.
  3. 다른 것.

thera는 많은 사용자가 있기 때문에 성능 및 보안이 중요합니다.

답변

1

schoolId를 캐싱하여 얻는 성능이 매우 낮으므로 숫자 2가 가장 좋습니다. userId를 기반으로 schoolId를 얻는 것은 매우 빠른 조회가 될 것입니다. 1 번은 사용자가 학교를 수정할 때 세션을 업데이트하는 것을 잊어 버릴 수있는 잠재적 버그입니다. 또한 학교 수업은 세션 내에서만 설정 될 것이라고 가정합니다. 업데이트 또는 관리자 업데이트를 가져와 해당 가정을 깨뜨린 날에는 세션이 데이터와 일치하지 않으며 모든 종류의 문제가 발생할 수 있습니다. 물론

는 학교 데이터를 가져 오는 것은 하나의 명령해야한다 : 학교를 선택 * 학교 내부는 User.SchoolId = School.SchoolId User.UserId = @UserId

에 사용자 참여에서.
관련 문제