Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Контроль в БД за тем, кто внес данные / 4 сообщений из 4, страница 1 из 1
14.03.2011, 23:47
    #37164726
АндрейCA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контроль в БД за тем, кто внес данные
Все привет.

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

Ест пользователи-операторы, которые вносят данные через форму в MS ACCESS.

Хотелось бы знать кто по какой платежке внес данные, то есть за кем та или иная запись в таблице?

Я собираюсь действовать стандартно: выдать каждому пользователю Login - Password.
Когда пользователь заполнил форму данными из платежки и нажал сохранить, текущее время и его login попадали с другими данными бы в таблицу в соответствующие поля - Имя_таблицы {id, сумма, ..., user, date_time}.
Мне не нравиться, что к каждой таблице придется добавить два дополнительных поля.

Вопрос: кто-нибудь решал такие проблемы?
Есть встроенные функции или инструменты, чтобы узнать кто какие изменения внес?
...
Рейтинг: 0 / 0
15.03.2011, 00:28
    #37164775
ZezaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контроль в БД за тем, кто внес данные
АндрейCA, автор...кто по какой платежке внес данные... а еще - с какого компа
в MS ACCESS
CurrentUser(), Environ("COMPUTERNAME")
...
Рейтинг: 0 / 0
15.03.2011, 00:46
    #37164799
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контроль в БД за тем, кто внес данные
АндрейCAМне не нравиться, что к каждой таблице придется добавить два дополнительных поля.

То-есть то, что в каждой таблице скорее всего есть id - не смущает?! :)
"Не нравится" - не аргумент, оформляйте "претензию" аргументированней.

АндрейCAВопрос: кто-нибудь решал такие проблемы?

Думаю, практически любой, столкнувшийся с разработкой БД на реальном предприятии и работой более одного пользователя :).
С ходу есть 4 варианта (и комбинации этих вариантов).

1. Озвученный вами. Подходит практически для любой БД и СУБД. Затраты - внесение изменений в логику (приложение или триггера) + модификация всех таблиц. "+" - очень легко извлечь в SQL (а значит и на уровне сервера) эту информация. Возможно для Access это не аргумент.

2. "На отдельную проблему - отдельная таблица" - т.е. добавляется одна таблица с полями ("в таблице", "запись с первичным ключом", "добавлена/удалена/модифицирована"). Подходит практически для любой БД и СУБД. Затраты - внесение изменений в логику (приложение или триггера) - не требуется модификация всех таблиц. "-" - для извлечения используется или клиент, или динамический SQL на уровне сервера. Возможно для Access это не аргумент.

3. "Таблицы, для которых нужен контроль модификации - есть "наследники" таблицы с названием <сущности>, поэтому поля "пользователь/датавремя" можно добавить только в таблицу "сущности". Зависит от конкретной БД.
Если БД была так спроектирована, или только проектируется и для этой схемы нет отрицательных аргументов - отличный вариант.

4. Использование журналов СУБД - очень сильно зависит от практики резервного копирования журналов, длительности хранения резервных копий, конкретной СУБД. Обычно очень неудобен - поэтому реально используется в критических случаях.

АндрейCAЕсть встроенные функции или инструменты, чтобы узнать кто какие изменения внес?
Это случай 4.
Про встроенные функции или инструменты можно говорить применительно к конкретной СУБД. У вас Access - но вопрос задан в форуме "проектирование БД". Поэтому эту часть вопроса стоит продублировать в форуме Access (хотя, имхо, Access этим не блещет).
...
Рейтинг: 0 / 0
15.03.2011, 00:50
    #37164806
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Контроль в БД за тем, кто внес данные
АнатоЛой3. "Таблицы, для которых нужен контроль модификации - есть "наследники" таблицы с названием <сущности>
Пардон, несколько косноязычно выразился. Хотел так:
"Таблицы, для которых нужен контроль модификации, являются "наследники" таблицы с названием <сущности>.
Т.е. таблица "сущности" имеет первичный ключ, у всех остальных таблиц их первичные ключи совпадают с их внешними ключами на таблицу "сущности".
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Контроль в БД за тем, кто внес данные / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]