2010-10-19 3 views
4

Мое приложение позволяет пользователям отправлять файлы друг другу. Обычные пользователи могут редактировать свои контакты, сменить пароль и т. Д. Кроме того, пользователи-администраторы могут добавлять/удалять пользователей и просматривать журнал того, что произошло. Мой вопрос заключается в том, как хранить этот журнал в базе данных MySQL?Как сохранить систему входа?

Я думал, что для хранения журнала, как это:

log_id time user_id action_type      description 
------ ---- ------- ---------------- ---------------------------------------- 
    1  ....  4  User added   Added new user: alex 
    2  ....  1  Contact added  Added contact Paul to group Family 
    3  ....  1  User removed  Removed user: gabrielle 
    4  ....  3  Files sent   Sent files 3,5,7,14 to contacts 2,4,8 
    5  ....  8  Group added  Added new group: Family 
    6  ....  8  Password changed 
    7  ....  8  First Name changed Changed First Name from Michael to Misha  

Какой будет лучше для action_type? Поскольку новые action_type s могут быть добавлены в будущем, я думал, что ENUM не будет хорошим выбором. Поэтому я подумал сделать это VARCHAR(..), например description.

Возможно ли это?

Буду рад услышать любые комментарии/предложения.

+2

огорчает: Позвоните в первичный ключ 'id' вместо' log_id'. Вы избегаете уродливого повторения: 'logs.log_id' – meagar

+4

@meagar - Нет ничего плохого в использовании log_id, и это рекомендуемая схема именования. Он гарантирует, что имена столбцов не будут сталкиваться при выполнении объединений без ввода длинного списка псевдонимов. – mellowsoon

+2

@mellowsoon Вот почему я сказал «домашнее животное», а не «вы делаете это неправильно». – meagar

ответ

12

Если вы беспокоитесь о добавлении дополнительных типов действий, сделать отдельную таблицу для хранения типа действия и присоединиться к ней и к столу журналов с помощью внешнего ключа:

logs стол:

log_id time user_id action_type_id  description 
------ ---- ------- ---------------- ----------------------------------- 
    1  ....  4   1   Added new user: alex 
    2  ....  1   2   Added contact Paul to group Family 
... 

action_types стол:

id name 
--- --------------- 
1  User added 
2  Contact added 
..... 
Смежные вопросы