NHibernate, один столбец два значения, положительный / отрицательный - PullRequest
1 голос
/ 12 октября 2010

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

Однако у нас появляется все больше и больше автоматических систем, которые мы хотели быдифференцировать.

Во всех наших таблицах есть столбец PerformedBy, который является целым числом.Это всегда была ссылка на Таблицу под названием «Сотрудники», которой затем присваивается соответствующее Имя.

Однако теперь мы хотели бы иметь некоторых пользователей системы (например, сервер онлайн-платежей, онлайн-бронирование и т. Д.).Мы могли бы создать их в таблице сотрудников, однако это кажется неправильным, и мы не были бы уверены в идентификаторах (это коммерческая система, поэтому у нас есть 200 баз данных, которые необходимо обновить).

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

Что-то вроде:

class OnlineBooking : Employee
{
}

Возможно ли что-то подобное сNHibernate или у кого-то есть другое отличное решение?Я не хотел бы добавлять дополнительные столбцы во ВСЕ таблицы, в которых есть журналы.

1 Ответ

0 голосов
/ 12 января 2011

Один столбец / два значения - это классический запах базы данных. Вы определенно хотите разделить это на две колонки.

Вы не сможете включить ограничения внешнего ключа с помощью положительного / отрицательного подхода, который вы описываете.

http://www.agiledata.org/essays/databaseRefactoringSmells.html

Это также значительно упростит отображение. Добавление столбца может показаться большим трудом, но в конечном итоге оно того стоит.

...