powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Оптимальная структура таблицы для хранения истории...
25 сообщений из 95, страница 1 из 4
Оптимальная структура таблицы для хранения истории...
    #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
Оптимальная структура таблицы для хранения истории...
    #35729540
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рекомендую ознакомиться с холиварчегом на заданную тему: тынц!
...
Рейтинг: 0 / 0
Оптимальная структура таблицы для хранения истории...
    #35729550
vinger4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему не хотите время тянуть в первичный ключ?
...
Рейтинг: 0 / 0
Оптимальная структура таблицы для хранения истории...
    #35729589
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinger4Почему не хотите время тянуть в первичный ключ?потому что это неправильно.
Подумайте о двух изменениях, сделанных в одну секунду.
...
Рейтинг: 0 / 0
Оптимальная структура таблицы для хранения истории...
    #35729704
Фотография bootty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychрекомендую ознакомиться с холиварчегом на заданную тему: тынц!
Благодарю, попробую осилить :)

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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