답변:
이라는 공간 테이블 location
과 다른 비 공간 테이블을 사용하십시오 sample
. 공간적으로 만들기 위해이라는 뷰가 사용됩니다 location_sample
. 아래 스키마는 PostGIS 2.0 typmod 구문을 사용하고 있습니다.
CREATE TABLE location(
gid serial NOT NULL,
geom geometry(Point,4326),
name character varying(50) NOT NULL,
CONSTRAINT location_pkey PRIMARY KEY (gid),
CONSTRAINT name_unique UNIQUE (name)
);
CREATE INDEX location_geom_idx ON location USING gist (geom);
CREATE TABLE sample(
sid serial NOT NULL,
name character varying(50) NOT NULL,
location_name character varying(50),
CONSTRAINT sample_pkey PRIMARY KEY (sid),
CONSTRAINT location_name_fkey FOREIGN KEY (location_name)
REFERENCES location (name) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE INDEX fki_location_name_fkey ON sample USING btree (location_name);
CREATE VIEW location_sample AS
SELECT sample.sid, location.geom, sample.location_name, sample.name
FROM location
LEFT JOIN sample ON sample.location_name = location.name;
location_sample
QGIS 또는 사용중인 GIS에 로드 할 수 있어야합니다 . 로 각각 sample
을 할당 location_name
하면 해당 위치에 나타납니다. QGIS 1.8을 사용하는 경우 고려해야 할 추가 단계가 있습니다. 이보기의 "기본 키"는 sid
( "샘플 ID"를 생각하십시오)입니다.
과 사이에 외래 키를 설정하는 방법 은 다음 location
과 sample
같습니다.
location_name
존재하지 않는, 또는 (등 공백, 대시, 경우) 잘못 입력되는 샘플을, 당신이 그것을 사용하는 것을 허용하지 않습니다 (즉, MATCH SIMPLE
)location
합니다 (의 name
필드), 다음에 연결된 모든 샘플 업데이트됩니다 자신의 location_name
분야 (예 ON UPDATE CASCADE
)location
행을, 다음에 연결된 모든 샘플이 삭제됩니다 (예 ON DELETE CASCADE
)외래 키 제약 조건을 읽고 다른 행동을 취하십시오. 상황에 더 잘 맞을 수 있습니다.
또한 요약 할 수 sample
와 같은 집계 함수를 사용하여 값을 count
, min
, avg
, 등이 비슷한 공간도합니다. 비 공간 테이블에 숫자 열을 추가하는 경우 가장 적합합니다.