Table: ndb.aggregatechronologies#
Description#
This table stores metadata for Aggregate Chronologies. An Aggregate Chronology refers to an explicit chronology assigned to a sample Aggregate. The individual Aggregate Samples have ages assigned in the AggregateSampleAges table. An Aggregate Chronology would be used, for example, for a set of packrat middens assigned to an AggregateDataset. The Aggregate Chronology is analogous to the Chronology assigned to samples from a single Collection Unit. An Aggregate may have more than one Aggregate Chronology, for example one in radiocarbon years and another in calibrated radiocarbon years. One Aggregate Chronology per Age Type may be designated the default, which is the Aggregate Chronology currently preferred by the database stewards.
TODO: Expand this description with: - What data does this table store? - What is the business/research purpose? - How is this data collected or generated? - Are there any important caveats or data quality issues?
Table Structure#
Schema: ndb | Table Comment: This table stores metadata for Aggregate Chronologies. An Aggregate Chronology refers to an explicit chronology assigned to a sample Aggregate. The individual Aggregate Samples have ages assigned in the AggregateSampleAges table. An Aggregate Chronology would be used, for example, for a set of packrat middens assigned to an AggregateDataset. The Aggregate Chronology is analogous to the Chronology assigned to samples from a single Collection Unit.
An Aggregate may have more than one Aggregate Chronology, for example one in radiocarbon years and another in calibrated radiocarbon years. One Aggregate Chronology per Age Type may be designated the default, which is the Aggregate Chronology currently preferred by the database stewards.
Statistics#
| Metric | Value |
|---|---|
| Row Count | 7 |
| Total Size | 64 kB |
| Table Size | 8192 bytes |
| Indexes Size | 16 kB |
Relationships#
Primary Key: aggregatechronid
Foreign Keys:
agetypeid→agetypes.agetypeidaggregatedatasetid→aggregatedatasets.aggregatedatasetid
Referenced By:
TODO: Document which tables reference this table (will be auto-detected in validation).
Data Dictionary#
| Column | Type | Nullable | Default | Constraints | Description |
|---|---|---|---|---|---|
aggregatechronid |
integer | ✗ | nextval('ndb.seq_aggregatec... |
PRIMARY KEY | PK: An arbitrary Aggregate Chronology identification number |
aggregatedatasetid |
integer | ✗ | - |
FOREIGN KEY | Dataset to which the Aggregate Chronology applies. Field links to the AggregateDatasets table. |
agetypeid |
integer | ✗ | - |
FOREIGN KEY | Age type or units. Field links to the AgeTypes table. |
isdefault |
boolean | ✗ | - |
- | Indicates whether the Aggregate Chronology is a default or not. Default status is determined by a Neotoma data steward. Aggregate Datasets may have more than one default Aggregate Chronology, but may have only one default Aggregate Chronology per Age Type. |
chronologyname |
character varying(80) | ✓ | - |
- | Optional name for the Chronology. |
ageboundyounger |
integer | ✓ | - |
- | The younger reliable age bound for the Aggregate Chronology. Younger ages may be assigned to samples, but are not regarded as reliable. If the entire Chronology is considered reliable, AgeBoundYounger is assigned the youngest sample age rounded down to the nearest 10. Thus, for 72 BP, AgeBoundYounger = 70 BP; for -45 BP, AgeBoundYounger = -50 BP. |
ageboundolder |
integer | ✓ | - |
- | The older reliable age bound for the Aggregate Chronology. Ages older than AgeOlderBound may be assigned to samples, but are not regarded as reliable. This situation is particularly true for ages extrapolated beyond the oldest Chron Control. If the entire Chronology is considered reliable, AgeBoundOlder is assigned the oldest sample age rounded up to the nearest 10. Thus, for 12564 BP, AgeBoundOlder is 12570. |
notes |
text | ✓ | - |
- | Free form notes or comments about the Aggregate Chronology. |
recdatecreated |
timestamp without time zone | ✗ | timezone('UTC'::text, now()) |
- | |
recdatemodified |
timestamp without time zone | ✗ | - |
- |
TODO: Review column descriptions and add comments where missing.
Usage Examples#
Example 1: Basic Selection#
-- Get recent records from aggregatechronologies
SELECT *
FROM aggregatechronologies
ORDER BY aggregatechronid DESC
LIMIT 10;
Purpose: Retrieve the 10 most recent records from aggregatechronologies
Example 2: Count Records#
Purpose: Get the total number of records in aggregatechronologies
Example 3: Filter by Date Range#
-- Get records within a date range
SELECT *
FROM aggregatechronologies
WHERE recdatecreated >= '2024-01-01'
AND recdatecreated < '2025-01-01'
ORDER BY recdatecreated DESC;
Purpose: Retrieve records from aggregatechronologies within a specific date range
Example 4: Join with agetypes#
-- Join with related table
SELECT
t1.*,
t2.*
FROM aggregatechronologies t1
INNER JOIN agetypes t2
ON t1.agetypeid = t2.agetypeid
LIMIT 100;
Purpose: Retrieve aggregatechronologies records with related data from agetypes
Example 5: Aggregate Data#
-- Aggregate records by aggregatedatasetid
SELECT
aggregatedatasetid,
COUNT(*) as count
FROM aggregatechronologies
GROUP BY aggregatedatasetid
ORDER BY count DESC
LIMIT 10;
Purpose: Count records grouped by aggregatedatasetid
TODO: Add more specific examples relevant to common research questions or operational tasks.
Data Quality Notes#
TODO: Document: - Known data quality issues - Validation rules - Expected data ranges - Update frequency and mechanisms - Any ETL processes that populate this table
Maintenance#
- Data Owner: TODO: Assign owner
- Update Frequency: TODO: Document frequency
- Last Major Schema Change: TODO: Document when schema last changed
Related Documentation#
TODO: Link to: - Related API endpoints - Data collection procedures - Analysis notebooks or reports that use this table - External ontologies or standards