```mermaid erDiagram software_apps ||--o{ workspaces : defines service_types ||--o{ workspaces : defines workspaces ||--o{ user_workspace_access : accessed_by workspaces ||--o{ support_tickets : contains workspaces ||--o{ attachments : stores workspaces ||--o{ faqs : provides support_tickets ||--o{ ticket_comments : has support_tickets ||--o{ attachments : has support_tickets ||--o{ request_approvals : needs support_tickets ||--o{ asset_allocations : requests support_tickets ||--o{ vehicle_schedules : schedules support_tickets ||--o{ remote_support : needs support_tickets ||--o{ notification_logs : notifies assets ||--o{ asset_allocations : allocated assets ||--o{ vehicle_schedules : scheduled support_status_codes ||--o{ support_tickets : statuses support_category_codes ||--o{ support_tickets : categorizes remote_support_status_codes ||--o{ remote_support : statuses software_apps { int id PK string app_code UK string app_name UK string description boolean is_active datetime created_at } service_types { int id PK string service_code UK string service_name UK string description boolean is_active datetime created_at } workspaces { int id PK string workspace_type int software_app_id FK int service_type_id FK string workspace_code UK string workspace_name boolean is_active datetime created_at } user_workspace_access { int id PK string user_id string tenant_id int workspace_id FK string workspace_role boolean can_read boolean can_write boolean can_manage boolean can_approve string page_scope datetime created_at } user_notification_profiles { int id PK string user_id string tenant_id string user_type string phone_number string naverworks_user_key boolean sms_opt_in datetime created_at } support_status_codes { string code PK string name int sort_order } support_category_codes { string code PK string name int sort_order } support_tickets { int id PK int workspace_id FK string requester_id string requester_tenant_id string ticket_type string title string content string category_code FK string status_code FK boolean is_secret datetime requested_start_at datetime requested_end_at string priority datetime created_at datetime updated_at } ticket_comments { int id PK int ticket_id FK string author_id string author_tenant_id string content datetime created_at } attachments { int id PK string parent_type int parent_id int workspace_id FK string file_name string file_path int file_size datetime created_at } request_approvals { int id PK int ticket_id FK string approver_id string approver_tenant_id string approval_status string comment datetime approved_at datetime created_at } assets { int id PK string asset_code UK string asset_name string asset_type int quantity boolean is_active string location datetime created_at } asset_allocations { int id PK int ticket_id FK int asset_id FK string assignee_id string assignee_tenant_id string allocation_status datetime loaned_at datetime due_at datetime returned_at datetime created_at } vehicle_schedules { int id PK int ticket_id FK int asset_id FK datetime departure_at datetime arrival_at string destination string driver_name datetime created_at } remote_support_status_codes { string code PK string name int sort_order } remote_support { int id PK int ticket_id FK string status_code FK string support_engineer_id string support_engineer_tenant_id datetime scheduled_time datetime created_at } faqs { int id PK int workspace_id FK string title string content boolean is_active datetime created_at } notification_logs { int id PK int ticket_id FK string recipient_id string recipient_tenant_id string channel string target_address string delivery_status string fallback_channel string error_message datetime sent_at } user_notification_profiles ||..o{ notification_logs : receives ```