Gunakan tabel spasial, yang disebut location, dan tabel non-spasial lainnya sample,. Untuk membuatnya spasial, digunakan tampilan yang disebut location_sample. Skema di bawah ini menggunakan sintaks typmod PostGIS 2.0:
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;
Anda harus dapat memuat location_sampledalam QGIS atau GIS apa pun yang Anda gunakan. Tetapkan masing sample- masing dengan location_name, dan itu akan muncul di lokasi itu. Jika Anda menggunakan QGIS 1.8, ada langkah ekstra untuk dipertimbangkan . "Kunci utama" untuk tampilan ini adalah sid(pikirkan "ID sampel").
Bagaimana saya mengatur kunci asing antara locationdan sampleadalah:
- jika Anda mengetik
location_namesampel dalam yang tidak ada, atau diketik salah (spasi, tanda hubung, kotak, dll.), itu tidak akan memungkinkan Anda untuk menggunakannya (yaitu, MATCH SIMPLE)
- jika Anda mengganti nama
location(di namebidang), maka semua sampel yang terhubung akan memperbarui location_namebidangnya (yaitu, ON UPDATE CASCADE)
- jika Anda menghapus satu
locationbaris, maka semua sampel yang terhubung akan dihapus (yaitu, ON DELETE CASCADE)
Bacalah batasan kunci asing untuk mendapatkan perilaku berbeda, yang mungkin lebih cocok dengan situasi Anda.
Anda juga dapat meringkas samplenilai-nilai menggunakan fungsi agregat, seperti count, min, avg, dll, dan membuat tampilan ruang yang sama. Ini paling masuk akal jika Anda menambahkan kolom numerik ke tabel non-spasial Anda.