--- type: concept status: stable related_pages: ["[[B05_wf2_Route/B05_backend]]", "[[B06_wf3_ProfileCross/B06_backend]]"] last_updated: 2026-07-12 source: raw/guidelines/db_schema.md --- # DB: 경로/종횡단 테이블 ← [[overview]] ## routes (노선 경로) | 컬럼 | 타입 | Null | Key | Default / Extra | |---|---|---|---|---| | `id` | `int(11)` | NO | PRI | `auto_increment` | | `project_id` | `char(36)` | NO | MUL | FK→projects.id | | `surface_model_id` | `int(11)` | YES | MUL | FK→surface_models.id | | `status` | `varchar(50)` | YES | | `DRAFT` ➡️ `CONFIRMED` ➡️ `ARCHIVED` | | `start_chainage_m` / `end_chainage_m` | `float` | YES | | 시작 시점 / 끝 시점 연장(m) | | `total_length_m` | `float` | YES | | 총 연장(m) | | `grade_percent` | `longtext` | YES | | 경사도 정보 JSON | | `constraints` / `algorithm_params` | `longtext` | YES | | 회피 구역 JSON / 알고리즘 가중치 파라미터 JSON | | `route_data_path` | `varchar(500)` | YES | | 노선 데이터 (GeoJSON) 파일 경로 | | `computed_at` / `created_at` | - | - | | 연산 완료 일시 / 생성 일시 | ## route_points (경로 좌표점) | 컬럼 | 타입 | Null | Key | Default / Extra | |---|---|---|---|---| | `id` | `int(11)` | NO | PRI | `auto_increment` | | `route_id` | `int(11)` | NO | MUL | FK→routes.id | | `chainage_m` | `float` | YES | | 시점 거리(m) | | `elevation_m` / `slope_percent` | `float` | YES | | 표고(m) / 종단 경사율(%) | | `sequence_num` | `int(11)` | YES | | 점 순서 | ## route_statistics (노선 통계) | 컬럼 | 타입 | Null | Key | Default / Extra | |---|---|---|---|---| | `id` | `int(11)` | NO | PRI | `auto_increment` | | `route_id` | `int(11)` | NO | MUL | FK→routes.id | | `min_slope` / `max_slope` / `mean_slope` | `float` | YES | | 최저 / 최고 / 평균 경사(%) | | `cut_volume_m3` / `fill_volume_m3` | `float` | YES | | 절토량(㎥) / 성토량(㎥) | | `tree_cutting_volume` / `cost_score` | `float` | YES | | 벌채량 / 평점 비용 스코어 | ## longitudinal_sections (종단면 설계) | 컬럼 | 타입 | Null | Key | Default / Extra | |---|---|---|---|---| | `id` | `int(11)` | NO | PRI | `auto_increment` | | `project_id` / `route_id` | `char(36)` / `int` | NO | MUL | FK→projects / routes | | `computed_at` | `timestamp` | YES | | 종단 계산 일시 | | `data` | `longtext` | YES | | 지반고/계획고/구배 등 설계 데이터 JSON | | `longitudinal_file_path` | `varchar(500)` | YES | | 종단도면 캐드 파일 경로 | | `status` | `varchar(50)` | YES | | `DRAFT` / `CONFIRMED` | ## cross_sections (횡단면 설계) | 컬럼 | 타입 | Null | Key | Default / Extra | |---|---|---|---|---| | `id` | `int(11)` | NO | PRI | `auto_increment` | | `project_id` / `route_id` | `char(36)` / `int` | NO | MUL | FK→projects / routes | | `chainage_m` / `sequence_num` | - | YES | | 측정 체인 거리(m) / 단면 순서 | | `data` | `longtext` | YES | | 좌우 사면 경사, 폭, 절성토 단면적 JSON | | `cross_section_file_path` | `varchar(500)` | YES | | 횡단도면 캐드 파일 경로 | | `status` | `varchar(50)` | YES | | `DRAFT` / `CONFIRMED` | ## routes.status 흐름 `DRAFT → CONFIRMED → ARCHIVED` ## cross_sections.data.structures 횡단면 하나에 배치된 구조물 ID 배열 → [[structure_output]]#structures 참조