stds_tables_template.sql 4.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. --#############################################################################
  2. -- This SQL script generates the space time dataset tables to store time
  3. -- stamps and revision for SQL queries and temporal GIS support.
  4. --
  5. -- Author: Soeren Gebbert soerengebbert <at> googlemail <dot> com
  6. --#############################################################################
  7. -- STDS is a placeholder for specific space-time dataset type: strds, str3ds, stvds
  8. --PRAGMA foreign_keys = ON;
  9. CREATE TABLE STDS_base (
  10. id VARCHAR NOT NULL, -- Id of the space-time dataset, name@mapset this is the primary key
  11. name VARCHAR NOT NULL, -- name of the space-time dataset
  12. mapset VARCHAR NOT NULL, -- mapset of the space-time dataset
  13. creator VARCHAR NOT NULL, -- Name of the creator
  14. temporal_type VARCHAR NOT NULL, -- The temporal type of the dataset "absolute" or "relative"
  15. semantic_type VARCHAR NOT NULL, -- The semantic data description used for aggregation/decomposition algorithm selection
  16. creation_time TIMESTAMP NOT NULL, -- The time of creation of the space-time dataset
  17. -- Uncommented due to performance issues
  18. -- modification_time TIMESTAMP NOT NULL, -- The time of the last modification of the grass map
  19. -- revision SMALLINT NOT NULL, -- The revision number -- The revision number
  20. PRIMARY KEY (id)
  21. );
  22. CREATE TABLE STDS_relative_time (
  23. id VARCHAR NOT NULL, -- Id of the space-time dataset, this is the primary foreign key
  24. start_time DOUBLE PRECISION, -- The relative valid start time in [days]
  25. end_time DOUBLE PRECISION, -- The relative valid end time in [days]
  26. granularity DOUBLE PRECISION, -- The granularity in [days]
  27. map_time VARCHAR, -- The temporal type of the registered maps, may be interval, point or mixed
  28. PRIMARY KEY (id),
  29. FOREIGN KEY (id) REFERENCES STDS_base (id) ON DELETE CASCADE
  30. );
  31. CREATE TABLE STDS_absolute_time (
  32. id VARCHAR NOT NULL, -- Id of the space-time dataset, this is the primary foreign key
  33. start_time TIMESTAMP, -- Start of the valid time, can be NULL if no map is registered
  34. end_time TIMESTAMP, -- End of the valid time, can be NULL if no map is registered
  35. granularity VARCHAR, -- The granularity "NNN seconds, NNN minutes, NNN hours, NNN days, NNN weeks, NNN months, NNN years"
  36. timezone SMALLINT, -- The time zone number
  37. map_time VARCHAR, -- The temporal type of the registered maps, may be interval, point or mixed
  38. PRIMARY KEY (id),
  39. FOREIGN KEY (id) REFERENCES STDS_base (id) ON DELETE CASCADE
  40. );
  41. CREATE TABLE STDS_spatial_extent (
  42. id VARCHAR NOT NULL, -- Id of the space-time dataset, this is the primary foreign key
  43. north DOUBLE PRECISION, -- The spatial north extent, derived from the registered maps
  44. south DOUBLE PRECISION, -- The spatial south extent, derived from the registered maps
  45. east DOUBLE PRECISION, -- The spatial east extent, derived from the registered maps
  46. west DOUBLE PRECISION, -- The spatial west extent, derived from the registered maps
  47. top DOUBLE PRECISION, -- The spatial top extent, derived from the registered maps
  48. bottom DOUBLE PRECISION, -- The spatial bottom extent, derived from the registered maps
  49. proj VARCHAR, -- The projection of the space time dataset (XY of LL)
  50. PRIMARY KEY (id),
  51. FOREIGN KEY (id) REFERENCES STDS_base (id) ON DELETE CASCADE
  52. );
  53. -- Create a trigger to update the modification time and revision number in case the metadata or timestanps have been updated
  54. -- Uncommented due to performance issues
  55. --CREATE TRIGGER update_STDS_abs_time AFTER UPDATE ON STDS_absolute_time
  56. -- BEGIN
  57. -- UPDATE STDS_base SET modification_time = datetime("NOW") WHERE id = old.id;
  58. -- UPDATE STDS_base SET revision = (revision + 1) WHERE id = old.id;
  59. -- END;
  60. --CREATE TRIGGER update_STDS_rel_time AFTER UPDATE ON STDS_relative_time
  61. -- BEGIN
  62. -- UPDATE STDS_base SET modification_time = datetime("NOW") WHERE id = old.id;
  63. -- UPDATE STDS_base SET revision = (revision + 1) WHERE id = old.id;
  64. -- END;
  65. --CREATE TRIGGER update_STDS_spatial_extent AFTER UPDATE ON STDS_spatial_extent
  66. -- BEGIN
  67. -- UPDATE STDS_base SET modification_time = datetime("NOW") WHERE id = old.id;
  68. -- UPDATE STDS_base SET revision = (revision + 1) WHERE id = old.id;
  69. -- END;