잡동사니

반응형

질문

users 데이터베이스를 만들고 있습니다. 사용자가 이메일로 받고 싶은 알림을 선택할 수 있도록하고 싶습니다.

이제 users 테이블 (부울 유형)에 다음 열이 있습니다.

  • notification_comment_photo .

  • notification_comment_comment .

  • notification_vote_photo .

  • notification_vote_comment .

  • notification_pm .

  • 알림 _ 팔로우 .

  • notification_news .

이 테이블이 users 테이블과 일대일 관계를 가질 것이라는 점을 고려할 때 테이블 사용자를 정규화하고 다른 테이블 알림 을 만들어야한다고 생각하십니까?

또한 소셜 링크 (twitter, facebook, google 등)에도 동일한 문제가 있습니다. 별도의 테이블 링크 를 만드는 것이 더 낫습니까?

업데이트되었습니다. 감사합니다. 별도의 표를 추가하겠습니다.


답변1

해결하려는 문제를 알려주지 않기 때문에 질문에 답하기가 어렵습니다.

현재 설계의 한 가지 문제는 저장하려는 모든 새로운 유형의 알림에 대해 스키마 변경이 필요하다는 것입니다. 사용자가 팔로우 해제되었을 때 사용자에게 알리려면 사용자 테이블에 열을 추가해야합니다.

다음과 같은 스키마를 고려합니다.

TABLE: users
------------------
ID
...

TABLE: notification_types
----------------------
ID
Description

TABLE: user_notifcation_subscriptions
-----------------------------------------
user_id
notification_type_id
subscribed (bool)

user_notification_subscriptions에서 "subscribed"열을 그대로두고 사용자를 알림 유형에 연결하는 모든 레코드가 구독했음을 의미하도록 결정할 수 있습니다.

이 디자인을 사용하면 스키마를 변경하지 않고 새 구독 유형을 추가 할 수 있습니다. @Daniel이 제안한 디자인과 비슷하다고 생각하지만 그는 notification_type 테이블을 포함하지 않고 대신 이름-값 쌍에 의존합니다. 나는 이것의 팬이 아닙니다. 오타가 TYPE 열에 들어가면 어리 석고 찾기 어려운 버그로 이어질 수 있습니다.



답변2

별도의 테이블 "notification_settings"등을 생성 할 수 있습니다 (아마도 그래야합니다).

 ID
 USER_ID
 TYPE
 VALUE

이를 통해 데이터베이스 테이블을 엉망으로 만들지 않고 알림 설정을 쉽게 추가 할 수 있습니다. 당신이 제안한 "엄격한"구조를 갖는 것은 때때로 결국 방해가되며 확장하기 더 어려울 것입니다.

소셜 링크에 대해서도 똑같이해야합니다. "user_social_accounts"라는 다른 테이블

ID
USER_ID
NETWORK_ID


 

 

 

 

출처 : https://stackoverflow.com/questions/12879935/how-to-store-userss-notifications-options

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band