Как мне моделировать «относительное» время в базе данных? - PullRequest
0 голосов
/ 08 сентября 2011

Уточнение: Я не пытаюсь вычислить дружественных раз (например, "8 секунд назад"), используя отметку времени и текущее время.

Мне нужно создать временную шкалу событий в моей модели данных, но там, где эти события только относительно друг друга.Например, у меня есть события A, B и C. Они происходят по порядку, поэтому может случиться так, что B происходит через 20 секунд после A, и что C происходит через 20 лет после B.

Меня не волнует единица времени.Для моей цели нет времени, только относительность.

Я намереваюсь смоделировать это как связанный список , где каждое событие является узлом:

Событие

  • id
  • name
  • prev_event
  • next_event

Является ли это наиболее эффективным способом моделирования относительных событий?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2011

Все время, записанное компьютерами - это относительное время, номинально оно относительно эпохи как смещение в миллисекундах. Обычно эта эпоха является смещением от 1970/01/01 , как в случае с Unix .

Если вы храните обычные ежедневные значения timestamp, у вас уже есть относительное время между событиями, если они все последовательные, вам просто нужно вычесть их, чтобы получить интервалы , что Вы звоните относительно раз, но на самом деле это интервалы .

Вы можете использовать любое разрешение, которое вам нужно использовать, milliseconds - это то, что используется большинством вещей, если вы выбираете вещи с разрешением менее миллисекунды, вы должны использовать nanoseconds

0 голосов
/ 08 сентября 2011

Я не думаю, что вам нужно ссылаться на предыдущее и следующее событие, почему бы просто не использовать временную метку и порядок по временной метке?

Если у вас может быть несколько одновременных временных шкал событий, вы бы использоваликакой-то идентификатор для определения временной шкалы (int, guid и т. д.) и ключа, который соответствует метке времени.Идентификатор даже не требуется, если вам не нужно ссылаться на него одним номером.

Примерно так:

Событие

  • TimeLineID(ключ)
  • дата / время (ключ)
  • Имя
...