2012-08-13 9 views
1

"comments", "product_added"등 다양한 유형의 알림 시스템이 있으며 많은 사용자가 있습니다.글로벌 알림을위한 데이터베이스 디자인

사용자의 친구를 기반으로 사용자 또는 친구가 수행 한 작업에 대한 알림을 볼 수 있습니다.

notification_id,  
type_id , 
item_id , 
user_id , 
owner_user_id , 
is_seen, 
time_stamp, 
title_html, 
title_text, 
body_html, 
body_text, 
href, 
icon_url 

내가 모든 친구 아이디의를 저장하는 배열을 사용해야 것은 내가, 나는 이미 내가 저장 한있는 테이블이 친구가 알림을 읽거나되지 않은 기록을 유지해야한다는 것입니다 is_seen에있는 알림을 본 사람 또는 그 알림을 본 각 친구에 대해 레코드를 유지 관리하는 notification_seen이라는 새 테이블을 만들어야합니까?

모든 알림은 최대 30 일간 지속되며 사용자가 200 명이 넘는 친구가있는 경우 200 개의 ID를 배열에 저장 한 다음 검색하여 배열을 깨뜨린 다음 표시합니다 (긴 inshort 절차에 따라).

아무도 내가 더 잘 알고 있거나 잘 모르는 방법을 제안 할 수 있습니까?

+1

x 일마다 실행되는 cron 작업 (PHP 스크립트)으로 30 일이 지난 알림을 삭제할 수 있습니다. –

+0

크론 작업에 대한 어떤 gud tuts? –

+1

크론 작업은 리눅스 용이고 윈도우 용으로는 작업 일정이라고합니다. cron에 대한 추가 정보 : http://www.unixsurgeon.com/kb/cron-job-tutorial.html, windows에 대한 추가 정보 schedular : http://superuser.com/questions/80291/run-script-on-windows -every-n-minutes –

답변

5

별도의 테이블을 사용하십시오. 관계형 데이터베이스의 배열은 사용자 정의 함수 나 쿼리의 복잡한 식없이 데이터베이스 작업과 쿼리를 단일 배열 요소에 적용 할 수 없으므로 항상 잘못된 생각입니다. 또한 정규화 패러다임을 따르지 않습니다.

+0

감사합니다 @ALEX 저는 같은 생각을했습니다. 배열은 정규화 패러다임을 고수 할 것이다. –