A user can turn on or off notification settings for his account, for notifications such as Changed Account Profile Information, Received New Message etc
Notification can be sent via email or mobile phone (either push or sms), user can have 1 email only and many mobile phone devices.
Is there any way you would improve the following database design or would you do it differently?
let me know thanks
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...
Or maybe this one which propagates natural keys. This has wider tables, but requires less joins. For example, you can get notifications for a
UserName
directly from theNotificationQueue
.Or this one, which is good enough if you have phone and email only. So far the simplest -- I think that currently I like this one the best.
Looks good, only a few minor suggestions:
There are a couple of things I do not agree with Tahbaza on:
What you've done looks pretty good actually. I would out of personal preference do the following: