조회수
강의를 보다가 궁금증이 생겨서 질문합니다.
만약 로그인 안 한 사용자(회원X)도 볼 수 있는 게시글이라고 할 때, 조회수를 어떻게 해야하는 건가요?
로그인 한 사람(회원O)만 게시글을 볼 경우 중간테이블을 만들어 이미 봤다면 조회수를 안 올리기 위해 만든 다는 것까지는 이해했습니다.
제가 생각한 방식은
게시글에 컬럼에 로그인 안 한 사용자의 조회수 넣기(그냥 수로 관리)
로그인한 사용자의 경우는 중간테이블로 조회수 관리
데이터를 따로 관리해서 이 둘을 합산해서 총 조회수로 만든다 인데
제가 너무 복잡하게 생각한 건지, 다른 좋은 방법이 있는지 궁금합니다
답변 1
2
안녕하세요 띵똥님! 좋은 질문 해주셨네요😊
조회수를 구현할 때는
특정 유저가 악의적으로 매번 새로고침을 통해 조회수를 올리는 행위를 막을 수 있어야 합니다.
말씀해주신 1번째 방식(게시글 컬럼에 로그인 안 한 사용자의 조회수 넣기)으로 구현하게 되면
악의적으로 조회수를 올려버릴 수 있게 됩니다.
그래서 이걸 방지하기 위해 로그인 안 한 사용자를 구별하기 위해서
일반적으로 IP 주소를 같이 기록해놓기도 합니다.
그럼 중간 테이블을 아래와 같이 구성할 수 있습니다.
views (조회수 테이블)
id : PK
postId : 게시글 id (FK)
userId : 사용자 id (FK), Null 허용
ipAddress : IP 주소
이 외로 궁금하신 점 있으시면 또 질문 남겨주세요:)
2
IP 주소, 세션 정보, 디바이스 정보 이렇게 다양하게 수집해서 구별하는 서비스도 있고
IP 주소 또는 세션 정보만 수집하는 경우도 있습니다~!
일반적인 서비스에서는 IP 주소 정보를 가지고 구별을 많이 하는 걸로 알고 있습니다:)
진짜중복/가짜중복을 나누는데 있어서
0
34
2
규칙 1에 대해서
0
53
2
강사님도 실제로 구글 시트에 이런식으로 적으면서하는걸까요?!
0
56
2
만약 신고사유가 객관식 다운드롭형태일때는 테이블을 따로 분리하는건가요??
0
56
2
설문 후속강의 쿠폰 제공 이벤트에 대해서
0
76
2
FK 값 중복과 규칙 3 질의
0
76
2
7-42. 역정규화 섹션에 나온 참고글 링크
0
44
2
[JSCODE 쇼핑몰 (2)] 상품 테이블의 등록한 사람 질문 입니다.
0
49
1
몽고DB 강의 계획
0
80
2
프론트단에서 고정 저장 / 백엔드에서 조회 저장
0
90
1
게시글 작성자 Id(사용자 FK) 숫자가 맞나요?
0
96
2
UI를 보고 저장해야할 데이터인지 파악하는 팁이 있을까요?
0
97
2
안녕하세요 강사님 문의 사항이 있습니다
0
109
2
실제 개발에 들어가거나 서비스 운영 중에도 DB설계를 바꾸나요?
0
233
2
관리자 테이블
0
228
2
외래 키 지정은 필수가 아닌 건가요?
0
256
2
게시판 닉네임, 아이디 관련질문
0
126
2
개발자 및 DB 설계 관련 질문
0
155
1
중복데이터 질문 있습니다.
0
104
2
db 컬럼에 JSON 박아도 되나요?
0
315
2
erd 진짜 안그려도 되나요
0
279
2
그냥 하나씩 만들어나가면서 DB 설계를 그때그때 하는건 틀린건가요?
0
107
2
JSCODE 게시판에서 댓글 관련하여 설계
0
130
2
주문수량과 재고량 관련하여 테이블 분리시
0
200
2





