Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Выбор типа внешнего ключа / 9 сообщений из 9, страница 1 из 1
05.02.2009, 19:17
    #35800225
rommy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
В системе есть несколько типов объектов: человек, договор, компания и т.д. Все это хранится в разных таблицах.
Необходимо для всех этих объектов (а также для возможных будущих) вести некий журнал, который представляет собой таблицу с след.полями:
Код: plaintext
1.
2.
 1 . результат контакта с объектом или действия с объектом (вносится пользователем)
 2 . Дата создания записи
 3 . Автор записи
Автор записи необходим для того, чтобы запретить пользователям менять и/или смотреть чужие записи.

Вопрос к уважамым All: как лучше сделать ссылку на "родительский" объект? Я пока вижу следующие варианты:
1. Код родительского объекта и тип объекта (будет справочник объектов);
2. в таблице (журнале) добавить след поля
Код: plaintext
1.
2.
3.
n.    Код человека
n+ 1 . Код договора
n+ 2 . Код компании
n+n. ...
и при появлении каких-то новых объектов добавлять новые поля;
3. для всех объектов ввести составной ключ: несколько символов характеризующих объект+автоинкремент. В таблице журнала в таком случае будет только один код.
4. Для каждого объекта создавать свою таблицу журнала.

У кого какие мнения есть на сей счет?
Заранее огромное спасибо!
...
Рейтинг: 0 / 0
05.02.2009, 19:24
    #35800234
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
rommy,

завести супертип "объект"

EntryID
CreatedBy
CreatedOn
IsActual

покурить ООП
...
Рейтинг: 0 / 0
05.02.2009, 19:33
    #35800253
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
rommyЯ пока вижу следующие варианты:
1. Код родительского объекта и тип объекта (будет справочник объектов);
2. в таблице (журнале) добавить след поля
Код: plaintext
1.
2.
3.
n.    Код человека
n+ 1 . Код договора
n+ 2 . Код компании
n+n. ...
и при появлении каких-то новых объектов добавлять новые поля;
3. для всех объектов ввести составной ключ: несколько символов характеризующих объект+автоинкремент. В таблице журнала в таком случае будет только один код.
4. Для каждого объекта создавать свою таблицу журнала.Если это просто журнал (лог), то 1
...
Рейтинг: 0 / 0
05.02.2009, 19:36
    #35800262
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
> У кого какие мнения есть на сей счет?

Вы делаете распространенную ошибку: берете неправильное решение стандартной задачи и хотите получить комментарии. Задачу сформулируйте. Не свою интерпретацию задачи, а исходную задачу.
...
Рейтинг: 0 / 0
05.02.2009, 19:44
    #35800287
rommy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
guest_20040621> У кого какие мнения есть на сей счет?

Вы делаете распространенную ошибку: берете неправильное решение стандартной задачи и хотите получить комментарии. Задачу сформулируйте. Не свою интерпретацию задачи, а исходную задачу.

:-)
Исходная задача сформулирована следующим образом:
Пользователи должны регистрировать информацию о клиенте (договоре, и т.д.) в БД.
Пользователи должны иметь возможность редактировать только свои записи.
Для каждой записи должна регистрироваться дата/время.
...
Рейтинг: 0 / 0
05.02.2009, 19:52
    #35800308
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
rommyИсходная задача сформулирована следующим образом:
Пользователи должны регистрировать информацию о клиенте (договоре, и т.д.) в БД.
Пользователи должны иметь возможность редактировать только свои записи.
Для каждой записи должна регистрироваться дата/время.То-есть только регистрация без дальнейшего её использования?

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

Это тогда не журнал, а прямо документы какие-то :-)
...
Рейтинг: 0 / 0
05.02.2009, 20:56
    #35800392
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
> Исходная задача сформулирована следующим образом

Другое дело. Ни о каких "объектах", которых в реляционных базах данных в принципе нет, в задаче речь не идет. Стандартная задача об ограничении доступа. Воспользуйтесь поиском по форуму, она обсуждается регулярно.

Судя по приведенному фрагменту задачи, это наиболее простой из возможных вариантов ее постановки. Для решения достаточно хранить идентификатор пользователя и иметь простейший набор правил.
...
Рейтинг: 0 / 0
05.02.2009, 22:21
    #35800475
rommy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
Похоже я сделал ошибку, употребив термин "объект" - прошу прощения:-)
В данном случае скорее всего лучше использовать термин "сущность".

guest_20040621Стандартная задача об ограничении доступа.
У меня голова болит не столько об ограничении доступа - тут проблем нет.
Меня интересует, каким образом более оптимально организовать связь между сущностями и записями в журнале. Мне на ум пока-что пришло 4 возможных варианта.

alexeyvgТо-есть только регистрация без дальнейшего её использования?

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

Это тогда не журнал, а прямо документы какие-то :-)
Дальнейшее использование возможно только в виде выборки - посмотреть, какая испория есть по той или иной сущности.
Редактирование своих записей возможно будет только в течении текущего дня на случай каких-либо опечаток.

alexeyvgЕсли это просто журнал (лог), то 1
Наибольше склоняюсь к 1, но "бес путает" выбрать 3.
Есть такое предчувствие (предчувствие потому, что раньше с таким не сталкивался), что при некоторых отчетах для того, чтобы подтянуть "правильную" сущность придется парсить родительский код.
...
Рейтинг: 0 / 0
06.02.2009, 02:00
    #35800673
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор типа внешнего ключа
> Меня интересует, каким образом более оптимально организовать связь между сущностями и записями в журнале.

В каком журнале? Никаких журналов для решения сформулированной задачи не нужно. Там нет ни слова об истории изменений.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Выбор типа внешнего ключа / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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