Я разработать таблицу уведомлений в MySQL, которых атрибуты
1.Created_At DateTime с использованием текущего времени
2.notification_type VARCHAR (100)
3.IS_Read булево
4.message, который я ве, чтобы показать, в зависимости от типа уведомления
5.Notification_ID AUTO_INCREMENT как первичный ключ
Эти атрибуты, которые я вхожу в моей таблице уведомлений
Теперь мои вопросы является тха t Эти атрибуты достаточно? или мне нужно добавить еще ??? Какие атрибуты должны быть в таблице уведомлений?
Edited
Ok теперь мои атрибуты таблицы уведомлений выглядеть
1.Created_At DateTime с использованием текущего времени
2.notification_type VARCHAR (100)
3.Status Int (2) в этом I 'll хранить статус уведомления, что он отображается и читается или нет в двоичном формате [00, 01, 10, 11] = левая сторона двоичного повторения указывает, было ли уведомление прочитано, а с правой стороны - скрыта ли она.
4.message который я показать в соответствии с типом уведомления
5.Notification_ID AUTO_INCREMENT в качестве первичного ключа
6.User_ID в качестве внешнего ключа от пользователей таблицы. всякий раз, когда применяется добавление или обновление удаления, уведомление генерирует и передает его соответствующему пользователю из этого User_ID.
Теперь снова мой вопрос такой же
Этих атрибутов достаточно? или мне нужно добавить еще ??? Какие атрибуты должны быть в таблице уведомлений?
Проектирование таблицы базы данных Notification
ответ
Ваш вопрос слишком общий, и на него очень сложно ответить. Но я все равно буду пытаться отвечать на них, в более концептуальном образом:
- Вы всегда должны добавить первичный ключ к столам, особенно к этому, как вы собираетесь обновить строку, чтобы установите поле
is_read
. В этом случае вам нужен какой-то идентификатор, вы можете назвать егоid
, этот идентификатор будет представлять идентификатор уведомления, и он должен быть автоматически увеличиваться.
Кроме того, я хотел бы задать полеstatus
вместоis_read
, чтобы указать возможности нескольких состояний для одного уведомления.
Кроме того, я думаю, что вашей таблице не хватает целевого объекта, например пользователя, с которым связано это уведомление. В случае общих уведомлений (для всех пользователей) вы не указали это. - В принципе, если вы хотите показать его на своем веб-сайте, вы должны создать сценарий (скрипт PHP в вашем случае), который получает все непрочитанные уведомления (или все конкретного пользователя) из БД и возвращает список уведомлений , длинный с их идентификаторами, в JSON или любом другом формате, который вам нравится. Затем клиент (например, JavaScript на вашем веб-сайте) должен вызвать этот скрипт, чтобы получить список уведомлений. Вы можете настроить скрипт на проверку каждые несколько минут для поиска любых новых уведомлений (или использовать сокет-соединение, но оно более усложняется как POC, особенно для тех, кто к этому не знаком).
Я надеюсь, что это объясняет основную концепцию того, как она должна работать, и где вы должны начать.
Если у вас есть более конкретные или технические вопросы, я был бы рад помочь.
Удачи!
Теперь могли бы вы объяснить подробнее о переменной состояния
Статус представляется как INT
и это твое, чтобы решить. Например, если вы хотите скрыть свое уведомление с панели уведомлений, то это должно быть указано по статусу. Допустим, у вас есть два разных типа состояний, скрытые или нет, и читайте или нет. В этом случае классическим является создание статуса в следующем двоичном представлении: 11, 10, 01, 00. Когда левая часть двоичного представления указывает, было ли уведомление прочитано, а с правой стороны - скрыта ли она.
Например:
- Статус 0, представляет
00
в двоичной системе, означает, что уведомление показывается, а не читать. - Статус 1, представляет
01
в двоичном формате, означает, что уведомление скрыто и не читается. - Состояние 2, представляет
10
в двоичном формате, означает, что уведомление отображается, и оно было прочитано. - Состояние 3, представляет
11
в двоичном формате, означает, что уведомление скрыто, и оно было прочитано.
Позже вы можете легко проверить с бинарными операторами, для каждого случая, например, в JavaScript:
var STATUS_READ = 2;
var STATUS_SHOW = 1;
function isRead(status)
{
return !!(status & STATUS_READ);
}
function isVisible(status)
{
return !!(status & STATUS_SHOW);
}
также просьба уточнить объект назначения, который вы говорите, что, как он работает и когда использовать и почему. Также расскажите мне о целевом объекте datatype
Предположим, у вас есть пользователи в вашей системе. Каждый пользователь имеет свой собственный user_id
.
Предположим, вы хотите показать уведомление для каждого пользователя, поэтому вы также должны присоединить пользователя назначения уведомления в своих таблицах уведомлений.
В этом случае вы должны добавить столбец user_id
, который содержит идентификатор пользователя, обычно он представлен как INT
, но он также может быть username
, который является VARCHAR
, это зависит от того, как вы разработали свою пользовательскую таблицу.
Я добавил первичный ключ с именем notification_ID с автоматическое приращение.теперь вы могли бы объяснить больше о переменной состояния и ее типе данных. также, пожалуйста, уточните объект назначения, о котором вы говорите, о том, как он работает, и когда использовать и почему. Также расскажите мне о типе данных объекта назначения. Сначала я сделаю его таблицу, чем я начну работать над панелью уведомлений, например facebook или stackexchange. –
Серьезно ?! нисходящая линия? –
жаль, что это было по ошибке, моя система потерпела крах, поэтому вы можете уточнить, что я прошу –
Где вы планируете показывать эти уведомления? На веб-сайте? В мобильном приложении? Как приложение для браузера? –
Второй вопрос чрезвычайно широк, потому что это вопрос дизайна. – Shadow
Я делаю это для веб-сайта и хочу показывать уведомления, такие как facebook или streamoverflow. –