Какая должна быть структура таблицы для ведения логов выхода из системы? - PullRequest
2 голосов
/ 14 марта 2012

У меня есть таблица логинов, как указано ниже

Field       Type
login_id    int(10)     NOT NULL
platform    varchar(50) NOT NULL
browser     varchar(50) NOT NULL
ipaddress   varchar(50) NOT NULL
last_login  datetime    NULL
last_logout datetime    NULL

Но в этой структуре я запутался в том, что могу добавить время входа в систему, но его сложно обновить в течение времени выхода из системы. Я не добавил первичный ключ, потому что журналы часты, и primarykey скоро достигнет его максимального значения. Какой должен быть лучший способ? Пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 14 марта 2012

Наличие единственной строки с логином и выходом из системы, как это, просто вызывает проблемы, поскольку предполагает, что для каждого входа в систему есть соответствующий выход из системы, что просто не так.Иногда они входят в систему на общедоступном компьютере и никогда не выходят из системы, иногда они открывают анонимное окно и входят в систему.

Вместо этого я бы сократил его до типа:

  • login_id
  • платформа
  • браузер
  • ip_адрес
  • дата
  • тип (вход / выход из системы)
2 голосов
/ 14 марта 2012

Почему бы просто не создать журнал выхода из таблицы с двумя столбцами.
со ссылкой на соответствующий login_id и временем выхода из системы.

И last_login, и last_logout не имеют смысла для меня, новаша логика может потребовать этого.Поскольку IMO, вам следует избегать столбцов, которые могут иметь значение NULL.

РЕДАКТИРОВАТЬ: Как дополнение, я бы сказал, почему вы накапливаете так много данных.Если это только для анализа браузера пользователя, платформы, вы можете использовать Google Analytics.И тогда вы можете просто сохранить last_login и last_logout для каждого пользователя.Опять же, ваша бизнес-логика может потребовать этого.

0 голосов
/ 14 марта 2012

Я предлагаю обновить запись для каждого пользователя, как только он / она повторно войдет в систему, чтобы первичный ключ не достиг максимального значения.

0 голосов
/ 14 марта 2012

Мое предложение заключается в том, что если вы хотите, чтобы информация о последнем входе в систему и последнем выходе только тогда ... сделайте user_id в качестве первичного ключа ... и просто измените эту информацию вместо добавления новой записи ... вы можете добавить один поле count для улучшения вашей функциональности ... чтобы получить число count, в которое входит человек ...

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

...