дизайн базы данных для настроек уведомлений - PullRequest
4 голосов
/ 23 января 2011
  • Пользователь может включить или выключить настройки уведомлений для его учетная запись, для уведомлений, таких как Изменена информация профиля аккаунта, Полученное новое сообщение и т. Д.

  • Уведомление может быть отправлено по электронной почте или с помощью мобильного телефона (push или sms), пользователь может иметь только 1 электронное письмо и множество мобильных телефонов.

Есть ли способ улучшить следующий дизайн базы данных или сделать это по-другому?

дай мне знать спасибо

USER_NOTIFICATION_SETTING
Id
UserId
Notification_SettingCode
NotificationTypeCode
UserDeviceId -- the mobile deviceid
IsEnabled -- true (notification is on), false (notification is off)

NOTIFICATION_SETTING
Code - e.g 1001, 1002
Name -- e.g Changed Account Profile Information, Received New Message etc

NOTIFICATION_TYPE
Code - e.g 1001, 1002
Name -- e.g Email, SMS, Push


USER_DEVICE -- the mobile phone device information
etc...etc...

Ответы [ 3 ]

4 голосов
/ 23 января 2011

alt text


Или, может быть, этот, который распространяет естественные ключи. Это имеет более широкие таблицы, но требует меньше соединений. Например, вы можете получать уведомления для UserName непосредственно с NotificationQueue.

alt text


Или этот, который достаточно хорош, если у вас есть только телефон и электронная почта. Пока что самое простое - я думаю, что в данный момент мне больше всего нравится этот.

alt text

0 голосов
/ 23 января 2011

Выглядит хорошо, только несколько незначительных предложений:

  • Именование полей кода, используйте имя таблицы, затем _Code
  • Добавить уведомление обо всех изменениях

Есть пара вещей, с которыми я не согласен с Тахбаза:

  • Я бы оставил идентификатор пользователя, тогда бы быстрее получать все уведомления для пользователя
  • Я бы оставил isEnabled внутри, тогда можно временно остановить все уведомления
0 голосов
/ 23 января 2011

То, что вы сделали, на самом деле выглядит неплохо.Я бы по личным предпочтениям сделал следующее:

  • Исключить столбец UserId в User_Notification_Setting, как это уже должно быть в вашей таблице User_Device
  • Избавьтесь от _s в именах таблиц
  • Измените поля кода в Notification_Setting и Notification_Type на Id (даже если они не являются столбцами Identity), а затем измените ссылки на внешние ключи из других таблиц, чтобы иметь более согласованное имя поля NotificationTypeId.
  • Удалите поле IsEnabled.Факт наличия записи на перекрестке должен быть достаточным для получения уведомления.Удаление этой записи означает, что уведомление отсутствует.Я могу понять, почему вы, возможно, захотите вспомнить, что уведомление было там когда-то, и, может быть, его там легко включить, но я не вижу никакой информации, хранящейся на перекрестке, поэтому удаление также хорошо.
...