Verwenden Sie eine aufgerufene räumliche Tabelle locationund eine andere nicht räumliche Tabelle sample. Um es räumlich zu machen, wird eine Ansicht namens aufgerufen location_sample. Das folgende Schema verwendet die PostGIS 2.0-Typmod-Syntax:
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;
Sie sollten in der Lage sein, location_sampleQGIS oder das von Ihnen verwendete GIS zu laden . Weisen Sie jedem sampleein zu location_name, und es wird an dieser Stelle angezeigt . Wenn Sie QGIS 1.8 verwenden, müssen Sie einen zusätzlichen Schritt berücksichtigen . Der "Primärschlüssel" für diese Ansicht lautet sid(denken Sie an "Beispiel-ID").
Wie ich den Fremdschlüssel zwischen locationund eingerichtet habe sample:
- Wenn Sie ein
location_nameBeispiel eingeben, das nicht vorhanden ist oder falsch eingegeben wurde (Leerzeichen, Bindestriche, Groß- und Kleinschreibung usw.), können Sie es nicht verwenden (dh MATCH SIMPLE)
- Wenn Sie a
location(im nameFeld) umbenennen , aktualisieren alle damit verbundenen Beispiele ihre location_nameFelder (dh ON UPDATE CASCADE)
- Wenn Sie eine
locationZeile löschen , werden alle damit verbundenen Samples gelöscht (dh ON DELETE CASCADE)
Informieren Sie sich über die Fremdschlüsseleinschränkungen, um unterschiedliche Verhaltensweisen zu erhalten, die möglicherweise besser zu Ihrer Situation passen.
Sie können auch zusammenfassen sampleWerte mit Aggregatfunktionen, wie count, min, avgusw. und dies eine ähnliche räumliche Ansicht machen. Dies ist am sinnvollsten, wenn Sie Ihrer nicht räumlichen Tabelle numerische Spalten hinzufügen.