# Supabase Database Schema (Arctic Species) This document outlines the data architecture of the Arctic Species Supabase database. ## Tables The database contains the following tables: * `catch_records` * `cites_listings` * `cites_trade_records` * `common_names` * `conservation_measures` * `distribution_ranges` * `iucn_assessments` * `profiles` * `species` * `species_threats` * `subpopulations` * `timeline_events` ## Table Structures Below is a preliminary structure for each table, inferred by querying a single record. --- ### `species` | Column Name | Data Type (Inferred) | Notes | | ----------------------- | -------------------- | ----------------------------------------- | | `id` | UUID | Primary Key | | `scientific_name` | TEXT | Scientific name of the species | | `common_name` | TEXT | Common name of the species | | `kingdom` | TEXT | Taxonomic kingdom | | `phylum` | TEXT | Taxonomic phylum | | `class` | TEXT | Taxonomic class | | `order_name` | TEXT | Taxonomic order | | `family` | TEXT | Taxonomic family | | `genus` | TEXT | Taxonomic genus | | `species_name` | TEXT | Specific epithet | | `authority` | TEXT | Authority who named the species | | `sis_id` | INTEGER | Species Information Service ID (IUCN) | | `created_at` | TIMESTAMP WITH TIME ZONE | Timestamp of record creation | | `inaturalist_id` | INTEGER | iNaturalist taxon ID (nullable) | | `default_image_url` | TEXT | URL for a default image (nullable) | | `description` | TEXT | General description (nullable) | | `habitat_description` | TEXT | Description of habitat (nullable) | | `population_trend` | TEXT | Population trend (e.g., decreasing, stable) (nullable) | | `population_size` | TEXT | Estimated population size (nullable) | | `generation_length` | TEXT | Generation length in years (nullable) | | `movement_patterns` | TEXT | Description of movement patterns (nullable) | | `use_and_trade` | TEXT | Information on use and trade (nullable) | | `threats_overview` | TEXT | Overview of threats (nullable) | | `conservation_overview` | TEXT | Overview of conservation efforts (nullable) | --- ### `catch_records` | Column Name | Data Type (Inferred) | Notes | | ----------- | -------------------- | ----------------------------------------- | | `id` | INTEGER | Primary Key | | `species_id`| UUID | Foreign Key referencing `species.id` | | `country` | TEXT | Country where the catch was recorded | | `year` | INTEGER | Year of the catch record | | `area` | TEXT | Specific area of catch (nullable) | | `catch_total` | INTEGER | Total catch amount | | `quota` | INTEGER | Catch quota, if applicable (nullable) | | `source` | TEXT | Source of the catch data (e.g., NAMMCO) | | `created_at`| TIMESTAMP WITH TIME ZONE | Timestamp of record creation | --- ### `cites_listings` | Column Name | Data Type (Inferred) | Notes | | -------------- | -------------------- | ------------------------------------------- | | `id` | UUID | Primary Key | | `species_id` | UUID | Foreign Key referencing `species.id` | | `appendix` | TEXT | CITES Appendix (e.g., I, II, III) | | `listing_date` | DATE | Date the species was listed on the appendix | | `notes` | TEXT | Notes regarding the CITES listing (nullable)| | `is_current` | BOOLEAN | Indicates if the listing is current | --- ### `cites_trade_records` | Column Name | Data Type (Inferred) | Notes | | --------------- | -------------------- | ------------------------------------------- | | `id` | UUID | Primary Key | | `species_id` | UUID | Foreign Key referencing `species.id` | | `record_id` | TEXT | Unique ID for the trade record | | `year` | INTEGER | Year the trade occurred | | `appendix` | TEXT | CITES Appendix at the time of trade | | `taxon` | TEXT | Scientific name of the taxon in trade | | `class` | TEXT | Taxonomic class | | `order_name` | TEXT | Taxonomic order | | `family` | TEXT | Taxonomic family | | `genus` | TEXT | Taxonomic genus | | `term` | TEXT | Description of the traded item (e.g., skins)| | `quantity` | FLOAT | Quantity of the item traded | | `unit` | TEXT | Unit of measurement for quantity (nullable) | | `importer` | TEXT | Importing country code (ISO 2-letter) | | `exporter` | TEXT | Exporting country code (ISO 2-letter) | | `origin` | TEXT | Country of origin code (nullable) | | `purpose` | TEXT | Purpose of trade code (e.g., P for Personal)| | `source` | TEXT | Source of specimen code (e.g., W for Wild) | | `reporter_type` | TEXT | E for Exporter, I for Importer | | `import_permit` | TEXT | Import permit number (nullable) | | `export_permit` | TEXT | Export permit number (nullable) | | `origin_permit` | TEXT | Origin permit number (nullable) | --- ### `common_names` | Column Name | Data Type (Inferred) | Notes | | ----------- | -------------------- | ------------------------------------------- | | `id` | UUID | Primary Key | | `species_id`| UUID | Foreign Key referencing `species.id` | | `name` | TEXT | Common name of the species | | `language` | TEXT | Language code for the common name (e.g., eng)| | `is_main` | BOOLEAN | Indicates if this is the primary common name| --- ### `conservation_measures` Structure for this table could not be determined by querying a single record (the table might be empty or access is restricted in this manner). Further investigation or direct schema inspection is required. --- ### `profiles` Structure for this table could not be determined by querying a single record (the table might be empty or access is restricted in this manner). Further investigation or direct schema inspection is required. --- ### `distribution_ranges` Structure for this table could not be determined by querying a single record (the table might be empty or access is restricted in this manner). Further investigation or direct schema inspection is required. --- ### `iucn_assessments` | Column Name | Data Type (Inferred) | Notes | | ------------------------ | -------------------- | ------------------------------------------------------------ | | `id` | UUID | Primary Key | | `species_id` | UUID | Foreign Key referencing `species.id` | | `year_published` | INTEGER | Year the IUCN assessment was published | | `is_latest` | BOOLEAN | Indicates if this is the latest assessment for the species | | `possibly_extinct` | BOOLEAN | Indicates if the species is possibly extinct | | `possibly_extinct_in_wild` | BOOLEAN | Indicates if the species is possibly extinct in the wild | | `status` | TEXT | IUCN Red List status code (e.g., LC, VU, EN) | | `url` | TEXT | URL to the assessment on the IUCN Red List website | | `assessment_id` | INTEGER | Unique ID for the assessment from IUCN | | `scope_code` | TEXT | Code indicating the geographic scope of the assessment | | `scope_description` | TEXT | Description of the geographic scope (e.g., Europe, Global) | --- ### `species_threats` Structure for this table could not be determined by querying a single record (the table might be empty or access is restricted in this manner). Further investigation or direct schema inspection is required. --- ### `subpopulations` | Column Name | Data Type (Inferred) | Notes | | -------------------- | -------------------- | --------------------------------------------- | | `id` | UUID | Primary Key | | `species_id` | UUID | Foreign Key referencing `species.id` | | `scientific_name` | TEXT | Full scientific name including subpopulation | | `subpopulation_name` | TEXT | Name of the subpopulation | | `sis_id` | INTEGER | Species Information Service ID (IUCN) | | `authority` | TEXT | Authority who named the subpopulation (nullable)| --- ### `timeline_events` | Column Name | Data Type (Inferred) | Notes | | ------------- | -------------------- | ------------------------------------------------------------ | | `id` | UUID | Primary Key | | `species_id` | UUID | Foreign Key referencing `species.id` | | `event_date` | DATE | Date of the event | | `year` | INTEGER | Year of the event (can be derived from event_date) | | `event_type` | TEXT | Type of event (e.g., iucn_assessment, cites_listing) | | `title` | TEXT | Title of the event | | `description` | TEXT | Description of the event (nullable) | | `status` | TEXT | Status associated with the event (e.g., LC, Appendix II) (nullable) | | `source_type` | TEXT | Type of the source table (e.g., iucn_assessments) (nullable) | | `source_id` | UUID | Foreign Key to the source record (e.g., `iucn_assessments.id`) (nullable) | --- ## Authentication (`auth` schema) Supabase provides a built-in authentication system that operates within its own `auth` schema. This schema is separate from the `public` schema detailed above but is integral to managing user identities, sessions, and access control. Key tables typically found in the `auth` schema include: * `users`: Stores user identity information (e.g., email, phone, password hash, user metadata). Each user is assigned a unique UUID. * `sessions`: Manages active user sessions. * `instances`: Information about authentication instances. * `refresh_tokens`: Stores refresh tokens for maintaining sessions. * `audit_log_entries`: Logs significant authentication events. While these tables are managed by Supabase, the `id` from `auth.users` is commonly used as a foreign key in `public` schema tables (like `profiles`) to link user-specific data to their authentication record. For example, a `profiles` table would typically have a `user_id` column that references `auth.users.id`.