2013-02-21 2 views
19

페이 스북과 유사한 알림 시스템을 설계하려고하는데 벽돌 벽에 약간 닿았습니다. 내 요구 사항은 렌더링해야하는 여러 유형의 메타 데이터를 가질 수있는 무한 수의 알림 유형을 지원할 수 있어야합니다.알림 시스템 용 데이터베이스 스키마

나는 다음과 같이 내가 스키마를 설계하는 것이라고 생각 해요 :

**Notification** 
Id (int) 
TypeId (int) 
RecipientId (int) 
SenderId (int) 
SendDateTime (DateTime) 
Read (bool) 
MessageData (...Blob?) 
Deleted (bool) 

**NotificationType** 
Id 
Name 
Description 
정말 그러나, 나는 또한 하나 모양을 저장 특히 좋아하지 않다, 내 데이터베이스에 HTML 문자열을 저장 피하려고 할

.

NotificationType 테이블을 조회하고 해당 유형의 데이터를 저장하는 다른 테이블을 참조 할 수도 있습니다. 즉, 새 알림 유형을 만들 때마다 새로운 알림 유형을 만들어야합니다. 표. 필자는 데이터를 가져 오기 위해 동적 SQL을 작성해야하는 필요성을 안고 있다고 생각합니다.

나에게 어떤 제안이 있으십니까?

+0

동일한 문제가 발생합니다. 나는 당신과 비슷한 구조를 가지고 있지만 html 경로를 사용했다. 설명 열에는 과 같은 것이 있습니다. 그런 다음 user_id를 통해 알림을 쿼리하고 자바 스크립트를 사용하여 스팬 ID를 기반으로 메시지를 채 웁니다. –

+0

@mcottingham 나는 같은 종류의 문제를 다루고 있는데, XML로만 저장하는 것과 비슷한 일을하려고 생각했다.하지만 제대로 보이지 않는다 ... FB가 어떻게되었는지 보았다. – formatc

답변

26

다음은이 문제를 해결하는 방법입니다.

Notifications Schema

나는 각 알림 유형에 고유 한 데이터를 저장하는 사전을 사용하기로 결정했다. 그런 다음 사전 개체를 이진 문자열로 serialize하고 각 알림과 함께 데이터베이스에 저장합니다. 예 : 자리 표시자를 포함하는 각 알림 유형에 할당 된 템플릿이 있습니다. '{song-title}'은 사전 개체의 값으로 신속하게 바꿀 수 있습니다.

+5

문제를 해결 했습니까? 사용자가 일부 콘텐츠를 삭제했는데 관련된 모든 notofocations를 삭제해야합니까? – Backs

관련 문제