Files
Investidor-V2/docs/investmoz/constraints.csv
T
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

259 lines
38 KiB
CSV

Tabela,Nome,Tipo,Expressão,Migration
organizations,imz_organizations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_001000_investmoz_identity.php
organizations,imz_organizations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_001000_investmoz_identity.php
organizations,imz_organizations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_001000_investmoz_identity.php
organizations,imz_organizations_check_03,CHECK,"organization_type IN ('public','private','ngo','education')",database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_user_id_fk,FOREIGN KEY,user_id -> users.id,database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_organization_id_fk,FOREIGN KEY,organization_id -> organizations.id,database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_pk,PRIMARY KEY,id,database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_001000_investmoz_identity.php
memberships,imz_memberships_check_03,CHECK,"role IN ('admin','manager','officer','viewer')",database/migrations/2026_09_24_001000_investmoz_identity.php
consents,imz_consents_user_id_fk,FOREIGN KEY,user_id -> users.id,database/migrations/2026_09_24_001000_investmoz_identity.php
consents,imz_consents_pk,PRIMARY KEY,id,database/migrations/2026_09_24_001000_investmoz_identity.php
consents,imz_consents_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_001000_investmoz_identity.php
consents,imz_consents_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_001000_investmoz_identity.php
consents,imz_consents_check_03,CHECK,"status IN ('granted','withdrawn','expired')",database/migrations/2026_09_24_001000_investmoz_identity.php
documents,imz_documents_pk,PRIMARY KEY,id,database/migrations/2026_09_24_002000_investmoz_content.php
documents,imz_documents_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_002000_investmoz_content.php
documents,imz_documents_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_002000_investmoz_content.php
documents,imz_documents_check_03,CHECK,"status IN ('active','quarantined','deleted')",database/migrations/2026_09_24_002000_investmoz_content.php
documents,imz_documents_check_04,CHECK,sha256 ~ '^[0-9a-f]{64}$',database/migrations/2026_09_24_002000_investmoz_content.php
geo_locations,imz_geo_locations_parent_id_fk,FOREIGN KEY,parent_id -> geo_locations.id,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_locations,imz_geo_locations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_locations,imz_geo_locations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_locations,imz_geo_locations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_003000_investmoz_geography.php
geo_locations,imz_geo_locations_check_03,CHECK,"location_type IN ('country','province','district','municipality','site')",database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_geo_location_id_fk,FOREIGN KEY,geo_location_id -> geo_locations.id,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_pk,PRIMARY KEY,id,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_03,CHECK,"geometry_type IN ('point','line','polygon','multipolygon')",database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_04,CHECK,ST_SRID(geom) = 4326,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_05,CHECK,ST_NDims(geom) = 2,database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_06,CHECK,NOT ST_IsEmpty(geom),database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_07,CHECK,ST_IsValid(geom),database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_08,CHECK,(geometry_type = 'point' AND GeometryType(geom) = 'POINT') OR (geometry_type = 'line' AND GeometryType(geom) = 'LINESTRING') OR (geometry_type = 'polygon' AND GeometryType(geom) = 'POLYGON') OR (geometry_type = 'multipolygon' AND GeometryType(geom) = 'MULTIPOLYGON'),database/migrations/2026_09_24_003000_investmoz_geography.php
geo_geometries,imz_geo_geometries_check_09,CHECK,ST_XMin(Box3D(geom)) >= -180 AND ST_XMax(Box3D(geom)) <= 180 AND ST_YMin(Box3D(geom)) >= -90 AND ST_YMax(Box3D(geom)) <= 90,database/migrations/2026_09_24_003000_investmoz_geography.php
projects,imz_projects_pk,PRIMARY KEY,id,database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_03,CHECK,"status IN ('draft','planned','active','suspended','completed','cancelled')",database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_04,CHECK,budget_amount IS NULL OR budget_amount >= 0,database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_05,CHECK,end_date IS NULL OR start_date IS NULL OR end_date >= start_date,database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_06,CHECK,(budget_amount IS NULL) = (budget_currency IS NULL),database/migrations/2026_09_24_004000_investmoz_projects.php
projects,imz_projects_check_07,CHECK,budget_currency IS NULL OR budget_currency ~ '^[A-Z]{3}$',database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_geo_location_id_fk,FOREIGN KEY,geo_location_id -> geo_locations.id,database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_004000_investmoz_projects.php
project_locations,imz_project_locations_check_03,CHECK,"role IN ('primary','secondary','impact')",database/migrations/2026_09_24_004000_investmoz_projects.php
economic_clusters,imz_economic_clusters_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
economic_clusters,imz_economic_clusters_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
economic_clusters,imz_economic_clusters_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
economic_clusters,imz_economic_clusters_check_03,CHECK,"status IN ('planned','active','inactive')",database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chains,imz_value_chains_cluster_id_fk,FOREIGN KEY,cluster_id -> economic_clusters.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chains,imz_value_chains_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chains,imz_value_chains_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chains,imz_value_chains_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chains,imz_value_chains_check_03,CHECK,"stage IN ('input','production','processing','logistics','market')",database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_from_value_chain_id_fk,FOREIGN KEY,from_value_chain_id -> value_chains.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_to_value_chain_id_fk,FOREIGN KEY,to_value_chain_id -> value_chains.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_check_03,CHECK,"link_type IN ('supplies','processes','distributes','supports')",database/migrations/2026_09_24_005000_investmoz_clusters.php
value_chain_links,imz_value_chain_links_check_04,CHECK,from_value_chain_id <> to_value_chain_id,database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_cluster_id_fk,FOREIGN KEY,cluster_id -> economic_clusters.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
cluster_projects,imz_cluster_projects_check_03,CHECK,"role IN ('anchor','complementary','supporting')",database/migrations/2026_09_24_005000_investmoz_clusters.php
anchor_project_links,imz_anchor_project_links_anchor_project_id_fk,FOREIGN KEY,anchor_project_id -> projects.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
anchor_project_links,imz_anchor_project_links_cluster_id_fk,FOREIGN KEY,cluster_id -> economic_clusters.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
anchor_project_links,imz_anchor_project_links_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
anchor_project_links,imz_anchor_project_links_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
anchor_project_links,imz_anchor_project_links_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_anchor_project_id_fk,FOREIGN KEY,anchor_project_id -> projects.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_complementary_project_id_fk,FOREIGN KEY,complementary_project_id -> projects.id,database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_pk,PRIMARY KEY,id,database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_check_03,CHECK,"relation_type IN ('dependency','enabler','supplier','market')",database/migrations/2026_09_24_005000_investmoz_clusters.php
complementary_project_links,imz_complementary_project_links_check_04,CHECK,anchor_project_id<>complementary_project_id,database/migrations/2026_09_24_005000_investmoz_clusters.php
development_corridors,imz_development_corridors_pk,PRIMARY KEY,id,database/migrations/2026_09_24_006000_investmoz_corridors.php
development_corridors,imz_development_corridors_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_006000_investmoz_corridors.php
development_corridors,imz_development_corridors_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_006000_investmoz_corridors.php
development_corridors,imz_development_corridors_check_03,CHECK,"status IN ('proposed','active','closed')",database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_corridor_id_fk,FOREIGN KEY,corridor_id -> development_corridors.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_geo_location_id_fk,FOREIGN KEY,geo_location_id -> geo_locations.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_locations,imz_corridor_locations_check_03,CHECK,sequence_no>0,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_projects,imz_corridor_projects_corridor_id_fk,FOREIGN KEY,corridor_id -> development_corridors.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_projects,imz_corridor_projects_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_projects,imz_corridor_projects_pk,PRIMARY KEY,id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_projects,imz_corridor_projects_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_projects,imz_corridor_projects_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_clusters,imz_corridor_clusters_corridor_id_fk,FOREIGN KEY,corridor_id -> development_corridors.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_clusters,imz_corridor_clusters_cluster_id_fk,FOREIGN KEY,cluster_id -> economic_clusters.id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_clusters,imz_corridor_clusters_pk,PRIMARY KEY,id,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_clusters,imz_corridor_clusters_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_006000_investmoz_corridors.php
corridor_clusters,imz_corridor_clusters_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_006000_investmoz_corridors.php
investors,imz_investors_organization_id_fk,FOREIGN KEY,organization_id -> organizations.id,database/migrations/2026_09_24_007000_investmoz_crm.php
investors,imz_investors_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
investors,imz_investors_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
investors,imz_investors_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
investors,imz_investors_check_03,CHECK,"investor_type IN ('domestic','foreign','institutional','individual')",database/migrations/2026_09_24_007000_investmoz_crm.php
investors,imz_investors_check_04,CHECK,"status IN ('prospect','active','inactive')",database/migrations/2026_09_24_007000_investmoz_crm.php
contacts,imz_contacts_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
contacts,imz_contacts_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
contacts,imz_contacts_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
investor_contacts,imz_investor_contacts_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_007000_investmoz_crm.php
investor_contacts,imz_investor_contacts_contact_id_fk,FOREIGN KEY,contact_id -> contacts.id,database/migrations/2026_09_24_007000_investmoz_crm.php
investor_contacts,imz_investor_contacts_pk,PRIMARY KEY,"investor_id, contact_id",database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_owner_user_id_fk,FOREIGN KEY,owner_user_id -> users.id,database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_03,CHECK,"status IN ('new','qualified','disqualified','converted')",database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_04,CHECK,(estimated_amount IS NULL)=(currency IS NULL),database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_05,CHECK,estimated_amount IS NULL OR estimated_amount >= 0,database/migrations/2026_09_24_007000_investmoz_crm.php
leads,imz_leads_check_06,CHECK,currency IS NULL OR currency ~ '^[A-Z]{3}$',database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_lead_id_fk,FOREIGN KEY,lead_id -> leads.id,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_owner_user_id_fk,FOREIGN KEY,owner_user_id -> users.id,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_03,CHECK,"stage IN ('discovery','assessment','negotiation','approved','lost')",database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_04,CHECK,probability BETWEEN 0 AND 100,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_05,CHECK,(amount IS NULL)=(currency IS NULL),database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_06,CHECK,amount IS NULL OR amount >= 0,database/migrations/2026_09_24_007000_investmoz_crm.php
crm_opportunities,imz_crm_opportunities_check_07,CHECK,currency IS NULL OR currency ~ '^[A-Z]{3}$',database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_opportunity_id_fk,FOREIGN KEY,opportunity_id -> crm_opportunities.id,database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_actor_user_id_fk,FOREIGN KEY,actor_user_id -> users.id,database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
activities,imz_activities_check_03,CHECK,"activity_type IN ('call','meeting','email','note')",database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_assignee_user_id_fk,FOREIGN KEY,assignee_user_id -> users.id,database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_opportunity_id_fk,FOREIGN KEY,opportunity_id -> crm_opportunities.id,database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_pk,PRIMARY KEY,id,database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_007000_investmoz_crm.php
tasks,imz_tasks_check_03,CHECK,"status IN ('open','in_progress','done','cancelled')",database/migrations/2026_09_24_007000_investmoz_crm.php
investor_journeys,imz_investor_journeys_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
investor_journeys,imz_investor_journeys_opportunity_id_fk,FOREIGN KEY,opportunity_id -> crm_opportunities.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
investor_journeys,imz_investor_journeys_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
investor_journeys,imz_investor_journeys_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
investor_journeys,imz_investor_journeys_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
investor_journeys,imz_investor_journeys_check_03,CHECK,"status IN ('started','active','completed','cancelled')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_journey_id_fk,FOREIGN KEY,journey_id -> investor_journeys.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_check_03,CHECK,sequence_no>0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
journey_steps,imz_journey_steps_check_04,CHECK,"status IN ('pending','active','completed','blocked')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_journey_step_id_fk,FOREIGN KEY,journey_step_id -> journey_steps.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_submitted_by_fk,FOREIGN KEY,submitted_by -> users.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
submissions,imz_submissions_check_03,CHECK,"status IN ('draft','submitted','accepted','rejected')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_owner_user_id_fk,FOREIGN KEY,owner_user_id -> users.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
aftercare_plans,imz_aftercare_plans_check_03,CHECK,"status IN ('draft','active','closed')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_aftercare_plan_id_fk,FOREIGN KEY,aftercare_plan_id -> aftercare_plans.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_check_03,CHECK,"severity IN ('low','medium','high','critical')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
constraints,imz_constraints_check_04,CHECK,"status IN ('open','mitigating','resolved')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_constraint_id_fk,FOREIGN KEY,constraint_id -> constraints.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_escalated_by_fk,FOREIGN KEY,escalated_by -> users.id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_check_03,CHECK,"level IN ('operational','management','executive')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
escalations,imz_escalations_check_04,CHECK,"status IN ('open','acknowledged','closed')",database/migrations/2026_09_24_008000_investmoz_journey_aftercare.php
skills,imz_skills_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
skills,imz_skills_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
skills,imz_skills_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
occupations,imz_occupations_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
occupations,imz_occupations_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
occupations,imz_occupations_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_occupation_id_fk,FOREIGN KEY,occupation_id -> occupations.id,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_skill_id_fk,FOREIGN KEY,skill_id -> skills.id,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_check_03,CHECK,quantity>0,database/migrations/2026_09_24_009000_investmoz_education.php
training_needs,imz_training_needs_check_04,CHECK,"priority IN ('Must','Should','Could')",database/migrations/2026_09_24_009000_investmoz_education.php
training_providers,imz_training_providers_organization_id_fk,FOREIGN KEY,organization_id -> organizations.id,database/migrations/2026_09_24_009000_investmoz_education.php
training_providers,imz_training_providers_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
training_providers,imz_training_providers_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
training_providers,imz_training_providers_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
training_providers,imz_training_providers_check_03,CHECK,"status IN ('candidate','approved','inactive')",database/migrations/2026_09_24_009000_investmoz_education.php
courses,imz_courses_provider_id_fk,FOREIGN KEY,provider_id -> training_providers.id,database/migrations/2026_09_24_009000_investmoz_education.php
courses,imz_courses_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
courses,imz_courses_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
courses,imz_courses_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
courses,imz_courses_check_03,CHECK,"status IN ('draft','published','retired')",database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_course_id_fk,FOREIGN KEY,course_id -> courses.id,database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_geo_location_id_fk,FOREIGN KEY,geo_location_id -> geo_locations.id,database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_pk,PRIMARY KEY,id,database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_check_03,CHECK,capacity>=0,database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_check_04,CHECK,"status IN ('planned','open','closed','cancelled')",database/migrations/2026_09_24_009000_investmoz_education.php
education_opportunities,imz_education_opportunities_check_05,CHECK,end_date IS NULL OR end_date>=start_date,database/migrations/2026_09_24_009000_investmoz_education.php
project_documents,imz_project_documents_project_id_fk,FOREIGN KEY,project_id -> projects.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
project_documents,imz_project_documents_document_id_fk,FOREIGN KEY,document_id -> documents.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
project_documents,imz_project_documents_pk,PRIMARY KEY,"project_id, document_id",database/migrations/2026_09_24_009500_investmoz_document_links.php
investor_documents,imz_investor_documents_investor_id_fk,FOREIGN KEY,investor_id -> investors.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
investor_documents,imz_investor_documents_document_id_fk,FOREIGN KEY,document_id -> documents.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
investor_documents,imz_investor_documents_pk,PRIMARY KEY,"investor_id, document_id",database/migrations/2026_09_24_009500_investmoz_document_links.php
journey_documents,imz_journey_documents_journey_id_fk,FOREIGN KEY,journey_id -> investor_journeys.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
journey_documents,imz_journey_documents_document_id_fk,FOREIGN KEY,document_id -> documents.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
journey_documents,imz_journey_documents_pk,PRIMARY KEY,"journey_id, document_id",database/migrations/2026_09_24_009500_investmoz_document_links.php
aftercare_documents,imz_aftercare_documents_aftercare_plan_id_fk,FOREIGN KEY,aftercare_plan_id -> aftercare_plans.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
aftercare_documents,imz_aftercare_documents_document_id_fk,FOREIGN KEY,document_id -> documents.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
aftercare_documents,imz_aftercare_documents_pk,PRIMARY KEY,"aftercare_plan_id, document_id",database/migrations/2026_09_24_009500_investmoz_document_links.php
education_documents,imz_education_documents_education_opportunity_id_fk,FOREIGN KEY,education_opportunity_id -> education_opportunities.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
education_documents,imz_education_documents_document_id_fk,FOREIGN KEY,document_id -> documents.id,database/migrations/2026_09_24_009500_investmoz_document_links.php
education_documents,imz_education_documents_pk,PRIMARY KEY,"education_opportunity_id, document_id",database/migrations/2026_09_24_009500_investmoz_document_links.php
audit_events,imz_audit_events_actor_user_id_fk,FOREIGN KEY,actor_user_id -> users.id,database/migrations/2026_09_24_010000_investmoz_governance_ai.php
audit_events,imz_audit_events_pk,PRIMARY KEY,id,database/migrations/2026_09_24_010000_investmoz_governance_ai.php
audit_events,imz_audit_events_check_01,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_010000_investmoz_governance_ai.php
outbox_events,imz_outbox_events_pk,PRIMARY KEY,id,database/migrations/2026_09_24_011000_investmoz_integrations.php
outbox_events,imz_outbox_events_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_011000_investmoz_integrations.php
outbox_events,imz_outbox_events_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_011000_investmoz_integrations.php
outbox_events,imz_outbox_events_check_03,CHECK,"status IN ('pending','published','failed')",database/migrations/2026_09_24_011000_investmoz_integrations.php
inbox_events,imz_inbox_events_pk,PRIMARY KEY,id,database/migrations/2026_09_24_011000_investmoz_integrations.php
inbox_events,imz_inbox_events_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_011000_investmoz_integrations.php
inbox_events,imz_inbox_events_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_011000_investmoz_integrations.php
inbox_events,imz_inbox_events_check_03,CHECK,"status IN ('received','processed','failed')",database/migrations/2026_09_24_011000_investmoz_integrations.php
sync_runs,imz_sync_runs_pk,PRIMARY KEY,id,database/migrations/2026_09_24_011000_investmoz_integrations.php
sync_runs,imz_sync_runs_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_011000_investmoz_integrations.php
sync_runs,imz_sync_runs_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_011000_investmoz_integrations.php
sync_runs,imz_sync_runs_check_03,CHECK,"direction IN ('inbound','outbound')",database/migrations/2026_09_24_011000_investmoz_integrations.php
sync_runs,imz_sync_runs_check_04,CHECK,"status IN ('running','succeeded','failed','cancelled')",database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_sync_run_id_fk,FOREIGN KEY,sync_run_id -> sync_runs.id,database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_pk,PRIMARY KEY,id,database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_check_01,CHECK,version_no > 0,database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_check_02,CHECK,"data_classification IN ('public','internal','confidential','restricted')",database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_check_03,CHECK,"issue_type IN ('missing','duplicate','orphan','checksum','geometry','value')",database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_check_04,CHECK,"severity IN ('warning','error')",database/migrations/2026_09_24_011000_investmoz_integrations.php
reconciliation_issues,imz_reconciliation_issues_check_05,CHECK,"status IN ('open','accepted','resolved')",database/migrations/2026_09_24_011000_investmoz_integrations.php