Необходимо реализовать ведение журнала, сообщения планируется хранить в БД в виде таблицы «log».Среди других полей каждое сообщение будет иметь поле «статус»: 0 - успешно, 1 - неверные данные, 2 - неправильный пользователь, 3 - что угодно, 4 - и т. Д ...
Простая идея - сохранитьПоле «Status» в виде столбца «int» в той же таблице ... Чтобы поместить данные в таблицу, будет создано специальное перечисление, что-то вроде этого (например, давайте используем C # .NET, но любой язык тоже будет работать):
enum LogStatusEnum
{
Successful=0,
WrongData=1,
WrongUser=2,
}
void main()
{
LogStatusEnum status = LogStatusEnum.Successful;
int statusValue = (int)status;
string query = "INSERT INTO log (Status, ...) VALUES ("+statusValue+",...)";
}
Существует также другой подход: создать дополнительную таблицу, что-то вроде «log_status» с полями «StatusId» (int, autoincrement), «StatusCode» (varchar), «StatusDescription» (varchar), которая будет содержатьотдельная запись для каждого поля состояния (с внешним ключом, примененным к обеим таблицам).В этом случае перед добавлением данных в таблицу «log» необходимо заранее получить идентификатор для требуемого «кода» с запросом:
query = "SELECT Id FROM LogStatus WHERE StatusCode='"+GetStatusCode(status)+"'";
, и этот (полученный) идентификатор будет использоваться для заполнения таблицы «log».
В обоих случаях необходимо синхронизировать как сторону БД, так и сторону приложения.Но, с моей точки зрения, 2-й подход немного лучше:
- более безопасен: вам нужно быть уверенным, что ваш «статус» действительно присутствует в БД, прежде чем добавлять данные, у вас будет ограничение(неправильный статус не будет добавлен).
- больше управляемых данными (мне трудно сказать, почему это лучше, но я заполняю это).
В порядкеЧтобы получить эти льготы, вам нужно заплатить: выполните запрос в БД, чтобы получить идентификатор статуса по коду состояния.
Считаете ли вы целесообразным внедрение второго подхода?Или 1-й тоже подойдет?Видите ли вы какие-либо другие плюсы второго подхода или минусы первого?
Любые мысли приветствуются.
Заранее спасибо.