|
|
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
... изменений чего-либо. Вариант номер раз (примерно как здесь ) Код: plaintext 1. 2. 3. 4. Пример: Сотрудник ZZZ <ресурс 1> имеет доступ <измерение 1> к таблице XXX <ресурс 1> с <BeginPeriod> по <EndPeriod>. Вариант номер два (если брать за основу первый вариант, то так) Код: plaintext 1. 2. 3. Пример: Сотрудник ZZZ <ресурс 1> получил доступ <измерение> к таблице XXX <ресурс 2> с <BeginDate>. Сотрудник ZZZ <ресурс 1> лишился доступа <измерение> к таблице XXX <ресурс 2> с <BeginDate>. Какая структура из этих двух на ваш взгляд удобнее в использовании и почему? На мой взгляд, первая структура удобнее для выборок, но при этом требует очень внимательного отношения к заполнению (не всегда и не везде есть триггеры). Так, например, недопустимы два и более незакрытых периода для тождественных наборов ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 11:02 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
рекомендую ознакомиться с холиварчегом на заданную тему: тынц! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 11:17 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Почему не хотите время тянуть в первичный ключ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 11:21 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
vinger4Почему не хотите время тянуть в первичный ключ?потому что это неправильно. Подумайте о двух изменениях, сделанных в одну секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 11:33 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
egorychрекомендую ознакомиться с холиварчегом на заданную тему: тынц! Благодарю, попробую осилить :) vinger4Почему не хотите время тянуть в первичный ключ? Потому что в таблице должны храниться результаты измерений множества ресурсов. Для значительной части ресурсов это будет просто дата, без времени (даже из примера видно, логично давать доступ с какой-то даты, без учета времени). Так же существует отличная от нуля вероятность, что произойдет попытка записать два события в один момент времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 11:59 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Шаблон: Периодические сведения С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 12:42 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 12:43 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
> Какая структура из этих двух на ваш взгляд удобнее в использовании и почему? Никакая из приведенных. Во-первых, следует различать не только номинальную актуальность данных. Во-вторых, база данных - это связанные данные; концентрироваться стоит не на регистрации дат и их количестве, что тривиально, а на связанных изменениях. В-третьих, следует понимать, что извлечение истории изменений как правило происходит гораздо реже, чем использование актуальных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 13:15 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
guest_20040621Во-первых, следует различать не только номинальную актуальность данных. Какие еще бывают актуальности? guest_20040621Во-вторых, база данных - это связанные данные; концентрироваться стоит не на регистрации дат и их количестве, что тривиально, а на связанных изменениях. Вас не затруднит развернуть мысль? Не совсем понятно, куда клоните. guest_20040621В-третьих, следует понимать, что извлечение истории изменений как правило происходит гораздо реже, чем использование актуальных данных. Правильно ли понимаю, что Вами предлагается отдельно иметь актуальное состояние + отдельно историю изменений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:07 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
boottyВас не затруднит развернуть мысль? Не совсем понятно, куда клоните. вероятно что-то в духе UpdateID UpdateDate UserName TableName FieldName UpdatedValue ValueDataType ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:19 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Первая удобнее в запросах, почему, уже обсасывали не раз. Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа. Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД. При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:25 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
> Какие еще бывают актуальности? Естественный жизненный цикл сущности и регистрация его фрагмента в базе данных. > Не совсем понятно, куда клоните. Была лавка "Рога и копыта". Благополучно закончилась. Что Вы намерены делать с данными, связанными с этой лавкой? > отдельно иметь актуальное состояние + отдельно историю изменений? Не обязательно. Как история будет храниться, регистрироваться и извлекаться - дело десятое. Важно, чтобы актуальные данные можно было получить быстро и просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:39 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Belyvinger4Почему не хотите время тянуть в первичный ключ?потому что это неправильно. Подумайте о двух изменениях, сделанных в одну секунду. Если подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ. 2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:43 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
guest_20040621 > отдельно иметь актуальное состояние + отдельно историю изменений? Не обязательно. Как история будет храниться, регистрироваться и извлекаться - дело десятое. Важно, чтобы актуальные данные можно было получить быстро и просто. Настоящий уровень абстракции не позволяет судить о производительности. Так что не стоит бежать впереди паровоза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:46 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
proposed amendmentboottyВас не затруднит развернуть мысль? Не совсем понятно, куда клоните. вероятно что-то в духе UpdateID UpdateDate UserName TableName FieldName UpdatedValue ValueDataType Вообще не в ту сторону думал, если честно. Поэтому интересно услышать автора... Если есть ValueDataType (что все же скорее является признаком FieldName), то можно и OldValue :) guest_20040621> Не совсем понятно, куда клоните. Была лавка "Рога и копыта". Благополучно закончилась. Что Вы намерены делать с данными, связанными с этой лавкой? В общем случае ничего. А зачем? :) expla 2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления? Первое, т.е. не системные даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 14:56 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
bootty expla 2 bootty , уточните семантику дат. Это фактические даты предоставления/лишения доступа или просто системные даты изменения атрибутов записи? Т.е. это история изменений записи БД, или изменений объекта документирования/управления? Первое, т.е. не системные даты. Тогда наверное для GUI подойдёт вариант номер два , а для отчётов и пр. фоновых процессов можно сделать материализованное представление первичных данных в форме вариант номер раз . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 15:08 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
поскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 15:12 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Dogenпоскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленна Срок предоставления доступа это плановый показатель, фактическое изъятие доступа нужно фиксировать отдельно. Тогда в вариант номер два в записи типа "получил доступ" нужно предусмотреть атрибут - срок предоставления. Когда сотрудник фактически лишится доступа, нужно быдет завести запись типа "лишился доступа". При этом даты могут и не совпадать как в большую так и в меньшую стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 15:28 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
Dogenпоскольку доступ может быть предоставлен как на определенный срок, так и до отмены, то изначальная дилемма бессмысленнаПричинно-следственную связь не объясните? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 16:35 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
> В общем случае ничего. Тогда не употребляйте буквосочетания "история изменений" и "база данных". Потому как в общем случае в любой момент времени имеете кашу вместо данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 17:24 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
explaЕсли подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ.Да... цирк уехал, а клоуны остались. Разрулить,конечно, это все можно. И даже такими бредовыми способами как предложено, вот только зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 17:24 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
BelyexplaЕсли подумать, то разрулить можно. Есть несколько стратегий. Например, 1) запрещать изменения одной секундой, 2) затирать предыдущие данные и т.п. Всё равно от PK в таких таблицах мало толку, так лучше использовать какой нибудь более осмысленный ключ.Да... цирк уехал, а клоуны остались. Разрулить,конечно, это все можно. И даже такими бредовыми способами как предложено, вот только зачем? Если не знаете, то какая вам разница? Лично я успешно пользуюсь вторым способом, в силу того, что бизнес логика это допускает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 18:25 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
explaПервая удобнее в запросах, почему, уже обсасывали не раз. Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа. Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД. При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди. Если в Базе Данных не было записи о предоставлении доступа сотруднику (который хотят отменить), то как нужный метод проверял наличие данного доступа у нужного сотрудника? По листочку из тетрадки? А если такого проверяющего доступ метода нет, то зачем тогда нужно отменять доступ, если этот доступ все равно никаким методом не проверяется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 18:53 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
НеизвестныйexplaПервая удобнее в запросах, почему, уже обсасывали не раз. Но вторая удобнее для пользователя, если в каждый момент времени он либо предоставляет, либо отнимает доступ (возможно, это даже разные люди). Так например, по ошибке в БД может отсутствовать запись о предоставлении доступа. Тогда при первом варианте реализации пользователь не сможет провести операцию отъёма доступа, которого нет в БД. При втором варианте реализации он просто сделает нужную запись. Проблемой отсутствия записи о предоставлении доступа будут заниматься другие люди. Если в Базе Данных не было записи о предоставлении доступа сотруднику (который хотят отменить), то как нужный метод проверял наличие данного доступа у нужного сотрудника? По листочку из тетрадки? А если такого проверяющего доступ метода нет, то зачем тогда нужно отменять доступ, если этот доступ все равно никаким методом не проверяется? Не стал вчитываться... Суть в том, что в БД может храниться не первоисточник, а его реплика. Например есть внешняя АС управления турникетами на проходных предприятия. И есть система кадрового учёта, которая напрямую не связана с первой системой. Понятно, есть процесс provisioning и т.п.. В этом случае доступ сотруднику может быть предоставлен не через отдел кадров, а как то иначе, или записи потеряются, так что в кадровой системе не будет записи о предоставлении доступа (это конечно не правильно, но такова жизнь, и есть конторы, которые платят за то, чтобы так не было). Зато перед увольнением кадровик через свою систему может завести заявку на отключение всех возможных доступов, даже тех, что вообще не зарегистрированы ни в кадрах ни в СБ и проверять тут ничего не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 19:44 |
|
||
|
Оптимальная структура таблицы для хранения истории...
|
|||
|---|---|---|---|
|
#18+
explaНе стал вчитываться... Суть в том, что в БД может храниться не первоисточник, а его реплика. Например есть внешняя АС управления турникетами на проходных предприятия. И есть система кадрового учёта, которая напрямую не связана с первой системой. Понятно, есть процесс provisioning и т.п.. В этом случае доступ сотруднику может быть предоставлен не через отдел кадров, а как то иначе, или записи потеряются, так что в кадровой системе не будет записи о предоставлении доступа (это конечно не правильно, но такова жизнь, и есть конторы, которые платят за то, чтобы так не было). Зато перед увольнением кадровик через свою систему может завести заявку на отключение всех возможных доступов, даже тех, что вообще не зарегистрированы ни в кадрах ни в СБ и проверять тут ничего не нужно. Вчитался. Переубеждать не буду, сейчас кризис, передача знаний должна быть ограничена и оплачиваема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2008, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35730328&tid=1543479]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
185ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 505ms |

| 0 / 0 |
