storage-common/pgsql/geostore/tables.sql

94 lines
2.3 KiB
SQL

-- geostore/tables.sql
set search_path to generic, public;
-- *** common tables ***
-- datatypes
create table datatypes (
id smallint not null primary key,
name text not null unique
);
insert into datatypes (id, name) values (10, 'text');
insert into datatypes (id, name) values (16, 'date');
insert into datatypes (id, name) values (20, 'int');
insert into datatypes (id, name) values (21, 'bool');
insert into datatypes (id, name) values (25, 'valuelist');
insert into datatypes (id, name) values (30, 'decimal');
insert into datatypes (id, name) values (35, 'timestamp');
create index idx_datatype_name on datatypes using btree (name);
-- properties
create table properties (
id serial not null primary key,
name text,
label text,
description text,
datatype smallint not null references datatypes,
domain text,
pattern text
);
-- for data see properties.sql
create index idx_prop_label on properties using btree (label);
-- valuelists
create table valuelists (
id bigserial not null primary key,
property int not null references properties,
value text,
pattern text
);
-- *** GIS-specific tables ***
-- geotypes
create table geotypes (
id smallint not null primary key,
name text not null unique
);
insert into geotypes (id, name) values
(0, 'area'),
(1, 'realestate'),
(2, 'building'),
(10, 'line'),
(20, 'point');
-- geoitems
create table geoitems (
id bigserial not null primary key,
geom geometry(geometry, 25832) not null, -- unique?
type smallint not null references geotypes,
name text,
description text,
community int not null
);
create index fki_item_type on geoitems using btree (type);
create index idx_item_geom on geoitems using brin (geom);
create index idx_item_community on geoitems using btree (community);
-- geoattrs
create table geoattrs (
id bigserial not null primary key,
item bigint not null references geoitems,
property int not null references properties,
txtvalue text,
intvalue bigint
);
create index fki_attr_item on geoattrs using btree (item);
create index fki_attr_prop on geoattrs using btree (property);
create index idx_attr_txtv on geoattrs using btree (property, txtvalue);
create index idx_attr_intv on geoattrs using btree (property, intvalue);