Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оптимальная структура таблицы для хранения истории... / 25 сообщений из 95, страница 1 из 4
23.12.2008, 11:02
    #35729501
bootty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
... изменений чего-либо.

Вариант номер раз (примерно как здесь )
Код: plaintext
1.
2.
3.
4.
UID:UID уникальный ключ 
BeginPeriod: date/datetime not null. Начало актуальности сведений.
EndPeriod: date/datetime Конец актуальности сведений.
<Измерения> Разрезы, в которых ведутся сведения
<Ресурсы> Сведения

Пример:
Сотрудник ZZZ <ресурс 1> имеет доступ <измерение 1> к таблице XXX <ресурс 1> с <BeginPeriod> по <EndPeriod>.

Вариант номер два (если брать за основу первый вариант, то так)
Код: plaintext
1.
2.
3.
UID:UID уникальный ключ 
BeginDate: date/datetime not null. Начало актуальности сведений.
<Измерения> Разрезы, в которых ведутся сведения
<Ресурсы> Сведения

Пример:
Сотрудник ZZZ <ресурс 1> получил доступ <измерение> к таблице XXX <ресурс 2> с <BeginDate>.
Сотрудник ZZZ <ресурс 1> лишился доступа <измерение> к таблице XXX <ресурс 2> с <BeginDate>.

Какая структура из этих двух на ваш взгляд удобнее в использовании и почему?
На мой взгляд, первая структура удобнее для выборок, но при этом требует очень внимательного отношения к заполнению (не всегда и не везде есть триггеры). Так, например, недопустимы два и более незакрытых периода для тождественных наборов ресурсов.
...
Рейтинг: 0 / 0
23.12.2008, 11:17
    #35729540
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
рекомендую ознакомиться с холиварчегом на заданную тему: тынц!
...
Рейтинг: 0 / 0
23.12.2008, 11:21
    #35729550
vinger4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Почему не хотите время тянуть в первичный ключ?
...
Рейтинг: 0 / 0
23.12.2008, 11:33
    #35729589
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
vinger4Почему не хотите время тянуть в первичный ключ?потому что это неправильно.
Подумайте о двух изменениях, сделанных в одну секунду.
...
Рейтинг: 0 / 0
23.12.2008, 11:59
    #35729704
bootty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
egorychрекомендую ознакомиться с холиварчегом на заданную тему: тынц!
Благодарю, попробую осилить :)

vinger4Почему не хотите время тянуть в первичный ключ?
Потому что в таблице должны храниться результаты измерений множества ресурсов. Для значительной части ресурсов это будет просто дата, без времени (даже из примера видно, логично давать доступ с какой-то даты, без учета времени). Так же существует отличная от нуля вероятность, что произойдет попытка записать два события в один момент времени.
...
Рейтинг: 0 / 0
23.12.2008, 12:42
    #35729854
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
...
Рейтинг: 0 / 0
23.12.2008, 12:43
    #35729862
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Naf Шаблон: Периодические сведения
С уважением, Naf
гоню, с этого же и началось :-)
...
Рейтинг: 0 / 0
23.12.2008, 13:15
    #35729982
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
> Какая структура из этих двух на ваш взгляд удобнее в использовании и почему?

Никакая из приведенных. Во-первых, следует различать не только номинальную актуальность данных. Во-вторых, база данных - это связанные данные; концентрироваться стоит не на регистрации дат и их количестве, что тривиально, а на связанных изменениях. В-третьих, следует понимать, что извлечение истории изменений как правило происходит гораздо реже, чем использование актуальных данных.
...
Рейтинг: 0 / 0
23.12.2008, 14:07
    #35730144
bootty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
guest_20040621Во-первых, следует различать не только номинальную актуальность данных.
Какие еще бывают актуальности?

guest_20040621Во-вторых, база данных - это связанные данные; концентрироваться стоит не на регистрации дат и их количестве, что тривиально, а на связанных изменениях.
Вас не затруднит развернуть мысль? Не совсем понятно, куда клоните.

guest_20040621В-третьих, следует понимать, что извлечение истории изменений как правило происходит гораздо реже, чем использование актуальных данных.
Правильно ли понимаю, что Вами предлагается отдельно иметь актуальное состояние + отдельно историю изменений?
...
Рейтинг: 0 / 0
23.12.2008, 14:19
    #35730175
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
boottyВас не затруднит развернуть мысль? Не совсем понятно, куда клоните.

вероятно что-то в духе

UpdateID
UpdateDate
UserName
TableName
FieldName
UpdatedValue
ValueDataType
...
Рейтинг: 0 / 0
23.12.2008, 14:25
    #35730200
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Первая удобнее в запросах, почему, уже обсасывали не раз.
Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа.
Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД.
При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди.
...
Рейтинг: 0 / 0
23.12.2008, 14:39
    #35730234
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
> Какие еще бывают актуальности?

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

> Не совсем понятно, куда клоните.

Была лавка "Рога и копыта". Благополучно закончилась. Что Вы намерены делать с данными, связанными с этой лавкой?

> отдельно иметь актуальное состояние + отдельно историю изменений?

Не обязательно. Как история будет храниться, регистрироваться и извлекаться - дело десятое. Важно, чтобы актуальные данные можно было получить быстро и просто.
...
Рейтинг: 0 / 0
23.12.2008, 14:43
    #35730247
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Belyvinger4Почему не хотите время тянуть в первичный ключ?потому что это неправильно.
Подумайте о двух изменениях, сделанных в одну секунду.

Если подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ.


2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления?
...
Рейтинг: 0 / 0
23.12.2008, 14:46
    #35730258
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
guest_20040621
> отдельно иметь актуальное состояние + отдельно историю изменений?

Не обязательно. Как история будет храниться, регистрироваться и извлекаться - дело десятое. Важно, чтобы актуальные данные можно было получить быстро и просто.

Настоящий уровень абстракции не позволяет судить о производительности. Так что не стоит бежать впереди паровоза.
...
Рейтинг: 0 / 0
23.12.2008, 14:56
    #35730285
bootty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
proposed amendmentboottyВас не затруднит развернуть мысль? Не совсем понятно, куда клоните.

вероятно что-то в духе

UpdateID
UpdateDate
UserName
TableName
FieldName
UpdatedValue
ValueDataType
Вообще не в ту сторону думал, если честно. Поэтому интересно услышать автора...
Если есть ValueDataType (что все же скорее является признаком FieldName), то можно и OldValue :)

guest_20040621> Не совсем понятно, куда клоните.

Была лавка "Рога и копыта". Благополучно закончилась. Что Вы намерены делать с данными, связанными с этой лавкой?
В общем случае ничего. А зачем? :)

expla 2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления?
Первое, т.е. не системные даты.
...
Рейтинг: 0 / 0
23.12.2008, 15:08
    #35730318
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
bootty
expla 2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления?
Первое, т.е. не системные даты.

Тогда наверное для GUI подойдёт вариант номер два , а для отчётов и пр. фоновых процессов можно сделать материализованное представление первичных данных в форме вариант номер раз .
...
Рейтинг: 0 / 0
23.12.2008, 15:12
    #35730328
Dogen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
поскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленна
...
Рейтинг: 0 / 0
23.12.2008, 15:28
    #35730407
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Dogenпоскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленна

Срок предоставления доступа это плановый показатель, фактическое изъятие доступа нужно фиксировать отдельно. Тогда в вариант номер два в записи типа "получил доступ" нужно предусмотреть атрибут - срок предоставления. Когда сотрудник фактически лишится доступа, нужно быдет завести запись типа "лишился доступа". При этом даты могут и не совпадать как в большую так и в меньшую стороны.
...
Рейтинг: 0 / 0
23.12.2008, 16:35
    #35730595
bootty
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
Dogenпоскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленнаПричинно-следственную связь не объясните? :)
...
Рейтинг: 0 / 0
23.12.2008, 17:24
    #35730769
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
> В общем случае ничего.

Тогда не употребляйте буквосочетания "история изменений" и "база данных". Потому как в общем случае в любой момент времени имеете кашу вместо данных.
...
Рейтинг: 0 / 0
23.12.2008, 17:24
    #35730773
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
explaЕсли подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ.Да... цирк уехал, а клоуны остались.

Разрулить,конечно, это все можно. И даже такими бредовыми способами как предложено, вот только зачем?
...
Рейтинг: 0 / 0
23.12.2008, 18:25
    #35730904
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
BelyexplaЕсли подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ.Да... цирк уехал, а клоуны остались.

Разрулить,конечно, это все можно. И даже такими бредовыми способами как предложено, вот только зачем?

Если не знаете, то какая вам разница? Лично я успешно пользуюсь вторым способом, в силу того, что бизнес логика это допускает.
...
Рейтинг: 0 / 0
23.12.2008, 18:53
    #35730953
Оптимальная структура таблицы для хранения истории...
explaПервая удобнее в запросах, почему, уже обсасывали не раз.
Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа.
Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД.
При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди.

Если в Базе Данных не было записи о предоставлении доступа сотруднику (который хотят отменить), то как нужный метод проверял наличие данного доступа у нужного сотрудника?
По листочку из тетрадки? А если такого проверяющего доступ метода нет, то зачем тогда нужно отменять доступ, если этот доступ все равно никаким методом не проверяется?
...
Рейтинг: 0 / 0
23.12.2008, 19:44
    #35731015
expla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимальная структура таблицы для хранения истории...
НеизвестныйexplaПервая удобнее в запросах, почему, уже обсасывали не раз.
Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа.
Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД.
При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди.

Если в Базе Данных не было записи о предоставлении доступа сотруднику (который хотят отменить), то как нужный метод проверял наличие данного доступа у нужного сотрудника?
По листочку из тетрадки? А если такого проверяющего доступ метода нет, то зачем тогда нужно отменять доступ, если этот доступ все равно никаким методом не проверяется?

Не стал вчитываться... Суть в том, что в БД может храниться не первоисточник, а его реплика. Например есть внешняя АС управления турникетами на проходных предприятия. И есть система кадрового учёта, которая напрямую не связана с первой системой. Понятно, есть процесс provisioning и т.п.. В этом случае доступ сотруднику может быть предоставлен не через отдел кадров, а как то иначе, или записи потеряются, так что в кадровой системе не будет записи о предоставлении доступа (это конечно не правильно, но такова жизнь, и есть конторы, которые платят за то, чтобы так не было). Зато перед увольнением кадровик через свою систему может завести заявку на отключение всех возможных доступов, даже тех, что вообще не зарегистрированы ни в кадрах ни в СБ и проверять тут ничего не нужно.
...
Рейтинг: 0 / 0
23.12.2008, 20:06
    #35731037
Оптимальная структура таблицы для хранения истории...
explaНе стал вчитываться... Суть в том, что в БД может храниться не первоисточник, а его реплика. Например есть внешняя АС управления турникетами на проходных предприятия. И есть система кадрового учёта, которая напрямую не связана с первой системой. Понятно, есть процесс provisioning и т.п.. В этом случае доступ сотруднику может быть предоставлен не через отдел кадров, а как то иначе, или записи потеряются, так что в кадровой системе не будет записи о предоставлении доступа (это конечно не правильно, но такова жизнь, и есть конторы, которые платят за то, чтобы так не было). Зато перед увольнением кадровик через свою систему может завести заявку на отключение всех возможных доступов, даже тех, что вообще не зарегистрированы ни в кадрах ни в СБ и проверять тут ничего не нужно.

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


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