SQL, это плохо, чтобы concat () данные журнала в поле длинного текста? - PullRequest
0 голосов
/ 30 марта 2011

Я строю свою собственную систему аутентификации. Прямо сейчас у меня есть настройки базы данных для регистрации каждой метки времени входа в систему:

$query = 'UPDATE `users` SET login_log = concat(login_log, ?) WHERE userKey = ? LIMIT 1 ';
$vars = array(time().',', $this->userKey);  
$QH = $this->DBH->prepare($query);
$QH->execute($vars);

Разве плохо использовать concat() для регистрации данных в поле longtext?
Должен ли я делать это по-другому?
Есть ли какие-либо проблемы, с которыми я мог бы столкнуться в будущем с этим методом?

1 Ответ

0 голосов
/ 30 марта 2011

Единственное, о чем я могу подумать, это то, что если бизнесу не нужно иметь только одно поле login_log, нет смысла объединяться, особенно если вы хотите применить ограничение к временной части после этого ... вам придется проанализировать весь остальной текст журнала (здесь, в другой раз), прежде чем получить требуемый компонент time ().

Вы можете намного проще нормализовать свои данные и добавить автоинкремент int PK, за которым следует поле userKey и поле login_LogDate. После каждого входа в систему вы можете вставить в таблицу пользователей имя пользователя и текущее время. Тогда вы могли бы легко найти минимальный, максимальный, верхний N-й логин и т. Д. Гораздо проще, чем разделить его.

...