#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.