Use una tabla espacial, llamada location
, y otra tabla no espacial, sample
. Para hacerlo espacial, se utiliza una vista llamada location_sample
. El siguiente esquema utiliza la sintaxis típica de 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;
Debería poder cargar location_sample
en QGIS o cualquier GIS que esté utilizando. Asigne cada uno sample
con un location_name
, y aparecerá en esa ubicación. Si está utilizando QGIS 1.8, debe considerar un paso adicional . La "clave principal" para esta vista es sid
(piense en "ID de muestra").
Cómo configuré la clave externa entre location
y sample
es:
- si escribe una
location_name
muestra que no existe o que está escrita incorrectamente (espacios, guiones, mayúsculas, etc.), no le permitirá usarla (es decir, MATCH SIMPLE
)
- si cambia el nombre de a
location
(en el name
campo), todas las muestras conectadas a él actualizarán sus location_name
campos (es decir, ON UPDATE CASCADE
)
- si elimina una
location
fila, se eliminarán todas las muestras conectadas a ella (es decir, ON DELETE CASCADE
)
Lea sobre las restricciones de clave externa para obtener diferentes comportamientos, que podrían coincidir mejor con su situación.
También puede resumir sample
valores utilizando funciones de agregado, como count
, min
, avg
, etc, y hacer de este un punto de vista espacial similar. Esto tiene más sentido si agrega columnas numéricas a su tabla no espacial.