94 lines
2.3 KiB
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);
|
|
|