Дизайн таблиц для пространственно-временных данных

#database-design #postgresql #relational-database #temporal-database

#проектирование базы данных #postgresql #реляционная база данных #временная база данных

Вопрос:

Меня интересуют лучшие практики проектирования таблиц реляционной базы данных для хранения пространственно-временных данных. В частности, данные, которые будут храниться в таких таблицах, представляют собой пользовательские геометрии, которые имеют определенный период действия, определение геометрии, а также иерархический аспект (определенные геометрии будут дочерними элементами других геометрий).

Мне любопытно, может ли кто-нибудь указать мне на хороший материал по этому вопросу или предложить конкретную реализацию.

Спасибо.

Комментарии:

1. Привет, что вы подразумеваете под «определенные геометрии будут дочерними элементами других геометрий»?

2. Например, государства состоят из округов, которые состоят из ZCTA и т.д.

Ответ №1:

Я бы использовал PostGIS (http://postgis.refractions.net /) для геометрии введите и создайте таблицу, подобную этой:

 CREATE TABLE data (
    geometry geometry,
  valid_from timestamp,
  valid_till timestamp,
  check(valid_till >= valid_from)
);
  

PostGIS может создавать пространственные запросы, поэтому вы можете запрашивать базу данных для всех геометрий в определенной геометрии (например, запрос для всех геометрий в геометрии, представляющей штат или округ).

Чтобы получить период действия, вы должны добавить к этому запросу дополнительное условие для получения только строк, где (valid_from >= now() and valid_till <= now()) .

Вам, конечно, также понадобятся индексы для всех трех столбцов. В столбце geometry должен быть пространственный индекс.

Всю информацию о пространственных запросах и типах геометрии и геометрических индексах вы можете найти на сайте PostGIS.