En Spatialite (3.0.1), con un normal (no espacial) de la tabla, me gustaría relacionarlo con los dos diferentes tablas espaciales, con geometrías diferentes tipos (multipolígonos y polilíneas), utilizando la misma como una columna de clave externa, y la restricción a sus claves principales.
La idea general sería, mientras que la inserción de un nuevo registro en la no-espacial de la tabla, uno puede elegir que se refieren a una línea o un polígono de dos distintas tablas espaciales.
Ejemplo:
CREATE TABLE sp1_polygons
poly_id TEXT NOT NULL PRIMARY KEY;
SELECT AddGeometryColumn(
'sp1_polygons', 'geometry',
27493, 'MULTIPOLYGON', 'XY');
CREATE TABLE sp2_lines
poly_id TEXT NOT NULL PRIMARY KEY;
SELECT AddGeometryColumn(
'sp2_lines', 'geometry',
27493, 'MULTILINESTRING', 'XY');
CREATE TABLE t1 (
t1_id INTEGER NOT NULL PRIMARY KEY,
geo_id TEXT NOT NULL,
CONSTRAINT fk_sp1
FOREIGN KEY (geo_id)
REFERENCES sp1 (sp1_id)),
CONSTRAINT fk_sp2
FOREIGN KEY (geo_id) -- Equal to before
REFERENCES sp2 (sp2_id));
En mi caso en particular, la no-espacial de la tabla representan las acciones de gestión (cosecha, siembra, corte, fijación, etc...) en una granja, mientras que las tablas espaciales representan homogeneus parcelas (polígonos) que se administra (tierras de cultivo, bosques, vegetación natural), o homogeneus líneas (corrientes de agua, naturales, vallas, etc...).