
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.05.2010, 14:51
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
Есть таблица pkidnamevt_beginvt_end Прочел книгу по истории данных - Developing Time-Oriented Database Application in SQL. Там в общем и целом понял картину, но не совсем понимаю как фактически в приложении применять эту структуру. Т.е. в клиенте к примеру мы отображаем поля name - Некие данные vt_begin - Начало действия этих данных vt_end - Окончание действия этих данных Пример: pkidnamevt_beginvt_end1111101.01.201001.01.201121111-201.01.201101.01.201231111-301.01.201201.01.2013 Теперь мы решили что запись с pk=2 мы ввели не верно, как поступать в этой ситуации? Фактически id=1 должен иметь какое то значите на всем интервале с 2010 по 2013 год. То ли увеличивать первый интервал, то ли последний. Кто как делал или что подскажет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 14:54
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийФактически id=1 должен иметь какое то значите на всем интервале с 2010 по 2013 год. зачем ? достаточно брать последний наиболее близкий к искомой дате... фиксировать только изменения и достаточно даты изменения... значение актуально пока не будет новой записи с датой изменения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 14:59
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
Здесь даты не дата актуальности вводимых данных, а даты действия в реальном мире так сказать, т.е. в 2010 действует одно значение справочника, в 2011 другое, в 2012 третье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 15:07
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийПример: pkidnamevt_beginvt_end1111101.01.201001.01.201121111-201.01.201101.01.201231111-301.01.201201.01.2013ИМХО, Вы не правильно поняли книгу. В данном случае все значения столбец pk не нужен. А первичным ключом будет комбинация (id, vt_end).ДумающийТо ли увеличивать первый интервал, то ли последний. Кто как делал или что подскажет?Я думаю надо предоставить на выбор пользователю. А еще лучше исправление нештатных ситуаций доверять не пользователю, а только админу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 15:12
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
Senya_LИМХО, Вы не правильно поняли книгу. В данном случае все значения столбец pk не нужен. А первичным ключом будет комбинация (id, vt_end) Может быть и не правльно, только, я не совсем понимаю как я буду связывть таблицы по id +vt_end, с учетом того что vt_end может изменится в любой момент. Senya_L Я думаю надо предоставить на выбор пользователю. А еще лучше исправление нештатных ситуаций доверять не пользователю, а только админу. Ну я бы не сказал что это не штатная ситуация, по моему не верный ввод штатная ситуация. Ну вообще с выбором пользователя, как вариант, думаю возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 15:22
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийSenya_LИМХО, Вы не правильно поняли книгу. В данном случае все значения столбец pk не нужен. А первичным ключом будет комбинация (id, vt_end) Может быть и не правльно, только, я не совсем понимаю как я буду связывть таблицы по id +vt_end, с учетом того что vt_end может изменится в любой момент.Меня тоже этот момент смущает. Я как-то привык, что изменение PK - неудачная мысль. А реализовать технически очень просто - составной внешний ключ + on update cascade. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 15:32
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
Я опустил этот момент, но в таблице также есть и время действия записи по вводу, т.е. еще tt_begin + tt_end, бюсь, что если все же связывать как вы предлагаете, во первых будет слишком не удобно писать запросы, во вторых и обработка связей будет увеличиваться. Вообще конечно было бы посмотреть пример приложения которое работает с историей, чтобы понять как это выглядит. Если кто подкинет ссылку буду благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 16:06
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийЯ опустил этот момент, но в таблице также есть и время действия записи по вводу, т.е. еще tt_begin + tt_end, бюсь, что если все же связывать как вы предлагаете, во первых будет слишком не удобно писать запросы, во вторых и обработка связей будет увеличиваться.С чего это "обработка связей будет увеличиваться". Я сомневаюсь, что Вы заметите разницу. Я думаю вполне хватит ограничиться vt_begin и vt_end. tt_begin + tt_end - это из другого подхода. В принципе, думаю можно оставить и суррогатный ключ pk. И связывание будет проще. ДумающийВообще конечно было бы посмотреть пример приложения которое работает с историей, чтобы понять как это выглядит. Если кто подкинет ссылку буду благодарен.Ссылок привести не могу, увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 16:13
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
Дело в том что у меня оба подхода совмещаются) Спасибо в любом случае ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 17:21
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.05.2010, 21:58
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийДело в том что у меня оба подхода совмещаются) Спасибо в любом случаеРаз у Вас ник "Думающий", то подумайте. :) За все надо платить. Это аксиома. Если Вы хотите "влегкую" поднимать данные с хронологией - готовьтесь платить за это пожелание. Если считаете цену слишком большой - ведите обычный лог. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.05.2010, 11:31
|
|||
|---|---|---|---|
|
|||
Подскажите как реализовать использование истории данных |
|||
|
#18+
Можно еще здесь почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.05.2010, 14:10
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийПример: pkidnamevt_beginvt_end1111101.01.201001.01.201121111-201.01.201101.01.201231111-301.01.201201.01.2013 Теперь мы решили что запись с pk=2 мы ввели не верно, как поступать в этой ситуации? Фактически id=1 должен иметь какое то значите на всем интервале с 2010 по 2013 год. То ли увеличивать первый интервал, то ли последний. Кто как делал или что подскажет?А как было до того, когда ввели запись с pk=2? В такое же состояние и верните ваши данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.05.2010, 14:26
|
|||
|---|---|---|---|
Подскажите как реализовать использование истории данных |
|||
|
#18+
ДумающийSenya_LИМХО, Вы не правильно поняли книгу. В данном случае все значения столбец pk не нужен. А первичным ключом будет комбинация (id, vt_end) Может быть и не правльно, только, я не совсем понимаю как я буду связывть таблицы по id +vt_end, с учетом того что vt_end может изменится в любой момент.Для такой схемы адекватное естественное использование декларативного ограничения FOREIGN KEY, увы, невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&mobile=1&tid=1542713]: |
0ms |
get settings: |
9ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 242ms |
| total: | 508ms |

| 0 / 0 |
