erDiagram
    %% Core User & Authentication Tables
    users ||--o| owner_accounts : "has"
    users ||--o{ privileges : "has"
    users ||--o{ batch_tasks : "creates"
    users ||--o| password_resets : "has"
    
    %% Owner Organization & Accounts
    owner_organizations ||--o{ owner_accounts : "has"
    owner_organizations ||--o{ user_accounts : "has"
    owner_organizations ||--o{ commodity_relations : "has"
    owner_organizations ||--o{ facilities : "belongs_to"
    
    %% Owner Accounts
    owner_accounts ||--o{ facilities : "manages"
    owner_accounts ||--o{ places : "manages"
    owner_accounts ||--o{ orders : "creates"
    
    %% Facilities & Places
    facilities ||--o{ places : "contains"
    facilities ||--o{ facility_category_relations : "has"
    facilities ||--o{ facility_files : "has"
    
    %% Places
    places ||--o{ place_calendar_relations : "has"
    places ||--o{ place_files : "has"
    places ||--o{ orders : "used_in"
    places ||--o{ temporary_order_dates : "has"
    
    %% User Accounts
    user_accounts ||--o{ orders : "creates"
    
    %% Orders
    orders ||--o{ order_status : "has"
    orders ||--o{ order_date_prices : "has"
    orders ||--o| place_calendar_relations : "linked_to"
    
    %% System Tables
    external_api_keys ||--o{ external_api_logs : "has"
    
    %% Table Definitions
    users {
        bigint id PK
        varchar name
        varchar email UK
        varchar password
        tinyint status
        timestamp created_at
        timestamp updated_at
    }
    
    owner_accounts {
        bigint id PK
        bigint user_id FK
        bigint owner_owner_account_id
        int owner_organization_id FK
        tinyint main_flag
        varchar name
        varchar tel
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    owner_organizations {
        bigint id PK
        varchar company_name
        varchar supplier_code
        varchar industry
        varchar area
        varchar zip
        varchar prefectures
        varchar section_address
        int admin_account_id
        timestamp created_at
        timestamp updated_at
    }
    
    user_accounts {
        bigint id PK
        int owner_user_account_id
        int owner_organization_id FK
        varchar name
        varchar company_name
        varchar shop_name
        varchar commodity
        varchar email
        varchar tel
        tinyint status
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    commodity_relations {
        bigint id PK
        int owner_organization_id FK
        varchar name
        tinyint status
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    facilities {
        bigint id PK
        int owner_facility_id
        varchar name
        varchar name_kana
        varchar area
        varchar zip_code
        varchar prefecture
        varchar city
        varchar address
        varchar tel
        int owner_account
        tinyint status
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    places {
        bigint id PK
        bigint facility_id FK
        int owner_place_id
        varchar place
        varchar owner_no
        varchar breadth
        time start_at
        time end_at
        int weekday_sell_price
        int saturday_sell_price
        int holiday_sell_price
        int owner_account
        timestamp calendar_last_updated_at
        tinyint status
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    facility_category_relations {
        bigint id PK
        int facility_id FK
        int facility_category_id
        timestamp created_at
        timestamp updated_at
    }
    
    facility_files {
        bigint id PK
        int facility_id FK
        tinyint file_type
        tinyint kind
        varchar original_file_name
        varchar file_comment
        timestamp created_at
        timestamp updated_at
    }
    
    place_files {
        bigint id PK
        int place_id FK
        tinyint file_type
        varchar original_file_name
        varchar file_comment
        timestamp created_at
        timestamp updated_at
    }
    
    place_calendar_relations {
        bigint id PK
        int place_id FK
        int order_id FK
        int order_owner_id
        int value
        tinyint special_price_type
        int special_price_sell
        date regist_date
        timestamp created_at
        timestamp updated_at
    }
    
    orders {
        bigint id PK
        int owner_order_id
        int owner_account_id FK
        int user_account_id FK
        varchar commodity
        int place_id FK
        varchar place
        varchar prefecture
        varchar city
        varchar address
        int total_price
        int total_tax_price
        date start_date
        date end_date
        tinyint status
        tinyint is_test
        timestamp created_at
        timestamp updated_at
    }
    
    order_status {
        bigint id PK
        int order_id FK
        int order_status
        int reply_status
        varchar remark
        varchar last_update_owner_account_id
        timestamp created_at
        timestamp updated_at
    }
    
    order_date_prices {
        bigint id PK
        int order_id FK
        date selected_date
        tinyint selected_week
        tinyint special_price_type
        int basic_sell_price
        int change_sell_price
        timestamp created_at
        timestamp updated_at
    }
    
    temporary_order_dates {
        bigint id PK
        int owner_place_id FK
        date regist_date
    }
    
    privileges {
        bigint id PK
        int user_id FK
        int function_key
        tinyint privilege_type
        timestamp created_at
        timestamp updated_at
    }
    
    batch_tasks {
        bigint id PK
        datetime request_date
        varchar function_name
        tinyint operation
        int user_id FK
        varchar filter_data
        tinyint status
        timestamp created_at
        timestamp updated_at
    }
    
    password_resets {
        varchar email PK
        varchar token
        timestamp created_at
    }
    
    exception_logs {
        bigint id PK
        varchar host_name
        varchar message
        varchar trace
        tinyint status
        timestamp created_at
        timestamp updated_at
    }
    
    external_api_keys {
        bigint id PK
        varchar name
        varchar api_key UK
        text encrypted_secret
        json allowed_ips
        boolean is_active
        timestamp last_used_at
        int usage_count
        timestamp created_at
        timestamp updated_at
    }
    
    external_api_logs {
        bigint id PK
        varchar api_key FK
        varchar method
        varchar endpoint
        int response_status
        varchar ip_address
        int response_time_ms
        boolean is_successful
        text error_message
        timestamp created_at
        timestamp updated_at
    }

ERD rút gọn

erDiagram
    %% Core Relationships
    users ||--o| owner_accounts : "has"
    owner_organizations ||--o{ owner_accounts : "has"
    owner_organizations ||--o{ user_accounts : "has"
    owner_organizations ||--o{ facilities : "belongs_to"
    
    facilities ||--o{ places : "contains"
    
    places ||--o{ place_calendar_relations : "has"
    places ||--o{ orders : "used_in"
    
    owner_accounts ||--o{ orders : "creates"
    user_accounts ||--o{ orders : "creates"
    
    orders ||--o{ order_status : "has"
    orders ||--o{ order_date_prices : "has"
    orders ||--o| place_calendar_relations : "linked_to"
    
    users {
        bigint id PK
        varchar email UK
        varchar name
    }
    
    owner_organizations {
        bigint id PK
        varchar company_name
        varchar supplier_code
    }
    
    owner_accounts {
        bigint id PK
        bigint user_id FK
        int owner_organization_id FK
        varchar name
    }
    
    user_accounts {
        bigint id PK
        int owner_organization_id FK
        varchar name
        varchar company_name
    }
    
    facilities {
        bigint id PK
        int owner_facility_id
        varchar name
        varchar prefecture
    }
    
    places {
        bigint id PK
        bigint facility_id FK
        int owner_place_id
        varchar place
        int weekday_sell_price
    }
    
    place_calendar_relations {
        bigint id PK
        int place_id FK
        int order_id FK
        date regist_date
        int value
    }
    
    orders {
        bigint id PK
        int owner_order_id
        int owner_account_id FK
        int user_account_id FK
        int place_id FK
        varchar commodity
        date start_date
        date end_date
    }
    
    order_status {
        bigint id PK
        int order_id FK
        int order_status
        int reply_status
    }
    
    order_date_prices {
        bigint id PK
        int order_id FK
        date selected_date
        int basic_sell_price
    }