저는 기사로 사이트를 만들고, 가장 인기있는 기사 인 오늘, 이번 주 및 이번 달을 표시하기 위해 각 기사의 견해를 세고 싶습니다.방문자 수를 일, 주 및 지난 달로 계산합니다.
어떻게 데이터베이스 스키마를 작성 하시겠습니까?
저는 기사로 사이트를 만들고, 가장 인기있는 기사 인 오늘, 이번 주 및 이번 달을 표시하기 위해 각 기사의 견해를 세고 싶습니다.방문자 수를 일, 주 및 지난 달로 계산합니다.
어떻게 데이터베이스 스키마를 작성 하시겠습니까?
가 : 각 기사보기 위해
daily_article_views(
,article_id
,view_date
,view_count
,primary key(article_id, view_date)
,foreign key(article_id) references articles
);
을, 당신은 현재 날짜를 사용하여 테이블에서 행을 조회 것이며, 현재보고있는 기사의 ID입니다. 행이 있으면 카운터를 증가시킵니다. 행이 없으면 view_count (그리고 잘린 날짜)에 값 1을 붙여서 삽입합니다. 그런 다음 SUM (view_count)을 사용하여 주, 월 또는 연간 수치를 필요에 따라이 테이블의 데이터를 롤업 할 수 있습니다.
그러나 각 개별보기에 대한 정보를 저장해야하는 경우 다음과 유사한 테이블 구조를 사용할 수 있습니다.
article_views(
,view_id
,article_id
,view_date
,additional_data_about_each_view
,primary key(view_id)
,foreign key(article_id) references articles
);
additional_data_about_each_view은 일부 사용자 ID는 저장할 필요가 무엇이든, 어쩌면 IP 주소 또는를 나타내는 열 것입니다. 이 디자인에서는 시간 (시, 분, 초)을 포함한 기사보기의 시간을 저장합니다. 이렇게하면 기사를 볼 때 정확히 하루 동안 데이터를 분석 할 수 있습니다.
마지막 디자인의 단점은 쿼리를 더 느리게 만들 수있는 많은 데이터를 생성 할 가능성이 있다는 것입니다. 물론 두 가지 대안을 모두 구현할 수있는 방법은 없습니다.
당신은 확실히 당신은 당신이 필요하지만 공격마다의 view_count
열을 증가하고 싶지 않을 수도 3 열
article_id
date
view_count
있는 테이블을 사용할 수있는 시각 정보에 관심을하지 않습니다. 응용 프로그램에 일부 정보를 캐시하고 일괄 적으로 업데이트 할 수 있습니다. 이 기사는이 같은 것을 사용할 수 표시 횟수 충분히 알고있는 경우