inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

비전공자도 이해할 수 있는 DB 설계 입문/실전

[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (2)

조회수

해결된 질문

277

띵똥

작성한 질문수 8

3

강의를 보다가 궁금증이 생겨서 질문합니다.

만약 로그인 안 한 사용자(회원X)도 볼 수 있는 게시글이라고 할 때, 조회수를 어떻게 해야하는 건가요?

로그인 한 사람(회원O)만 게시글을 볼 경우 중간테이블을 만들어 이미 봤다면 조회수를 안 올리기 위해 만든 다는 것까지는 이해했습니다.

제가 생각한 방식은

  1. 게시글에 컬럼에 로그인 안 한 사용자의 조회수 넣기(그냥 수로 관리)

  2. 로그인한 사용자의 경우는 중간테이블로 조회수 관리

     

데이터를 따로 관리해서 이 둘을 합산해서 총 조회수로 만든다 인데

제가 너무 복잡하게 생각한 건지, 다른 좋은 방법이 있는지 궁금합니다

mysql dbms/rdbms database dba

답변 1

2

JSCODE 박재성

안녕하세요 띵똥님! 좋은 질문 해주셨네요😊

 

조회수를 구현할 때는

특정 유저가 악의적으로 매번 새로고침을 통해 조회수를 올리는 행위를 막을 수 있어야 합니다.

말씀해주신 1번째 방식(게시글 컬럼에 로그인 안 한 사용자의 조회수 넣기)으로 구현하게 되면

악의적으로 조회수를 올려버릴 수 있게 됩니다.

 

그래서 이걸 방지하기 위해 로그인 안 한 사용자를 구별하기 위해서

일반적으로 IP 주소를 같이 기록해놓기도 합니다.

 

그럼 중간 테이블을 아래와 같이 구성할 수 있습니다.

views (조회수 테이블)

  • id : PK

  • postId : 게시글 id (FK)

  • userId : 사용자 id (FK), Null 허용

  • ipAddress : IP 주소

 

이 외로 궁금하신 점 있으시면 또 질문 남겨주세요:)

1

띵똥

오 ip주소 넣는 방법이 있었군요. 찾아보니 세션 id를 사용하는 경우도 있다고 하는데 현업에서는 보통 ip 주소를 사용하나요?

2

JSCODE 박재성

IP 주소, 세션 정보, 디바이스 정보 이렇게 다양하게 수집해서 구별하는 서비스도 있고

IP 주소 또는 세션 정보만 수집하는 경우도 있습니다~!

일반적인 서비스에서는 IP 주소 정보를 가지고 구별을 많이 하는 걸로 알고 있습니다:)

2

띵똥

답변 감사합니다~

진짜중복/가짜중복을 나누는데 있어서

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