📊 Database ER Diagram

erDiagram
    addresses {
        INT id PK
        INT user_id 
        STRING address 
        STRING province 
        STRING city 
        STRING neighborhood 
        STRING plaque 
        STRING unit 
        STRING zip_code 
        STRING latitude 
        STRING longitude 
        INT owner_is_receiver 
        STRING receiver_name 
        STRING receiver_phone 
        DATETIME created_at 
        DATETIME updated_at 
    }
    brands {
        INT id PK
        INT category_id 
        STRING name 
        STRING slug 
        STRING description 
        STRING logo 
        DATETIME created_at 
        DATETIME updated_at 
    }
    cache {
        STRING key PK
        STRING value 
        INT expiration 
    }
    cache_locks {
        STRING key PK
        STRING owner 
        INT expiration 
    }
    cart_items {
        INT id PK
        INT cart_id 
        INT product_id 
        INT inventory_id 
        INT variant_id 
        INT shop_id 
        JSON variant 
        INT quantity 
        FLOAT price 
        FLOAT total 
        STRING discount 
        STRING coupon 
        JSON options 
        DATETIME created_at 
        DATETIME updated_at 
    }
    carts {
        INT id PK
        INT user_id 
        INT address_id 
        STRING session_id 
        STRING name 
        STRING status 
        STRING currency 
        FLOAT subtotal 
        FLOAT discount_total 
        FLOAT tax_total 
        FLOAT shipping_total 
        FLOAT grand_total 
        STRING coupon 
        DATETIME created_at 
        DATETIME updated_at 
    }
    categories {
        INT id PK
        STRING name 
        INT parent_id 
        INT commission 
        INT order_index 
        STRING image 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    category_attribute_items {
        INT id PK
        INT category_attribute_id 
        STRING item_group 
        STRING item_key 
        STRING item_value 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    category_attributes {
        INT id PK
        INT category_id 
        STRING label 
        STRING type 
        STRING name 
        STRING default_value 
        INT is_required 
        INT is_filterable 
        STRING filter_type 
        INT is_price_effective 
        STRING validation 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    comments {
        INT id PK
        STRING commentable_type 
        INT commentable_id 
        INT user_id 
        STRING name 
        STRING parent 
        STRING rate 
        INT seller_satisfactory 
        STRING vote_up 
        STRING vote_down 
        JSON good_point 
        JSON bad_point 
        STRING status 
        STRING content 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
    }
    contact_us {
        INT id PK
        STRING name 
        STRING phone 
        STRING email 
        STRING title 
        STRING message 
        DATETIME created_at 
        DATETIME updated_at 
    }
    coupons {
        INT id PK
        STRING code 
        STRING description 
        STRING type 
        FLOAT amount 
        INT allow_free_shipment 
        DATETIME expire_date 
        FLOAT max_discount 
        FLOAT minimum_spend 
        FLOAT maximum_spend 
        INT individual_use_only 
        INT exclude_sale_items 
        JSON products 
        JSON exclude_products 
        JSON product_categories 
        JSON exclude_categories 
        JSON allowed_emails 
        INT usage_limit 
        INT product_limit 
        INT usage_limit_per_user 
        DATETIME created_at 
        DATETIME updated_at 
    }
    deliveries {
        INT id PK
        INT order_id 
        INT delivery_time_id 
        INT user_id 
        INT address_id 
        STRING tracking_code 
        INT type 
        INT provider_id 
        DATETIME date 
        DATETIME time 
        STRING status 
        FLOAT price 
        STRING carrier 
        STRING carrier_code 
        FLOAT origin_lat 
        FLOAT origin_lon 
        FLOAT dest_lat 
        FLOAT dest_lon 
        DATETIME picked_up_at 
        DATETIME delivered_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_day_capacities {
        INT id PK
        DATETIME date 
        INT delivery_time_id 
        INT taken 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_events {
        INT id PK
        INT delivery_id 
        STRING status 
        JSON payload 
        DATETIME happened_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_items {
        INT id PK
        INT delivery_id 
        INT order_item_id 
        FLOAT weight 
        STRING barcode 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_providers {
        INT id PK
        STRING name 
        STRING code 
        STRING contact_phone 
        STRING contact_email 
        STRING notes 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_time_exceptions {
        INT id PK
        INT delivery_time_id 
        DATETIME date 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_time_reservations {
        INT id PK
        INT user_id 
        INT delivery_time_id 
        DATETIME date 
        DATETIME expires_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    delivery_times {
        INT id PK
        INT day 
        DATETIME from 
        DATETIME until 
        INT capacity 
        DATETIME created_at 
        DATETIME updated_at 
    }
    failed_jobs {
        INT id PK
        STRING uuid 
        STRING connection 
        STRING queue 
        STRING payload 
        STRING exception 
        DATETIME failed_at 
    }
    faq_answers {
        INT id PK
        INT question_id 
        INT user_id 
        STRING body 
        INT is_best 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
    }
    faq_categories {
        INT id PK
        STRING name 
        STRING slug 
        STRING description 
        DATETIME created_at 
        DATETIME updated_at 
    }
    faq_comments {
        INT id PK
        INT user_id 
        STRING commentable_type 
        INT commentable_id 
        STRING body 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
    }
    faq_flags {
        INT id PK
        INT user_id 
        STRING flaggable_type 
        INT flaggable_id 
        STRING reason 
        DATETIME created_at 
        DATETIME updated_at 
    }
    faq_questions {
        INT id PK
        INT user_id 
        STRING title 
        STRING slug 
        STRING body 
        INT category_id 
        INT best_answer_id 
        STRING status 
        INT views 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
    }
    faq_taggables {
        INT tag_id 
        STRING taggable_type 
        INT taggable_id 
    }
    faq_tags {
        INT id PK
        STRING name 
        STRING slug 
        DATETIME created_at 
        DATETIME updated_at 
    }
    faq_votes {
        INT id PK
        INT user_id 
        STRING votable_type 
        INT votable_id 
        STRING vote_type 
        DATETIME created_at 
        DATETIME updated_at 
    }
    features {
        INT id PK
        STRING name 
        STRING scope 
        STRING value 
        DATETIME created_at 
        DATETIME updated_at 
    }
    files {
        INT id PK
        STRING name 
        STRING extension 
        STRING mime 
        STRING size 
        STRING path 
        STRING disk 
        DATETIME created_at 
        DATETIME updated_at 
    }
    has_file {
        INT id PK
        INT file_id 
        INT fileable_id 
        STRING fileable_type 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
    }
    job_batches {
        STRING id PK
        STRING name 
        INT total_jobs 
        INT pending_jobs 
        INT failed_jobs 
        STRING failed_job_ids 
        STRING options 
        INT cancelled_at 
        INT created_at 
        INT finished_at 
    }
    jobs {
        INT id PK
        STRING queue 
        STRING payload 
        INT attempts 
        INT reserved_at 
        INT available_at 
        INT created_at 
    }
    likes {
        INT id PK
        INT user_id 
        INT is_dislike 
        STRING likeable_type 
        INT likeable_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    loyalty_settings {
        INT id PK
        STRING key 
        STRING value 
        DATETIME created_at 
        DATETIME updated_at 
    }
    migrations {
        INT id PK
        STRING migration 
        INT batch 
    }
    model_has_permissions {
        INT permission_id PK
        STRING model_type PK
        INT model_id PK
    }
    model_has_roles {
        INT role_id PK
        STRING model_type PK
        INT model_id PK
    }
    options {
        INT id PK
        STRING env 
        STRING group 
        STRING key 
        STRING value 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_delivery_addresses {
        INT id PK
        INT order_id 
        STRING recipient_name 
        STRING address_line1 
        STRING address_line2 
        STRING city 
        STRING state 
        STRING postal_code 
        STRING country 
        STRING phone 
        FLOAT latitude 
        FLOAT longitude 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_items {
        INT id PK
        INT order_id 
        STRING item_type 
        INT item_id 
        INT inventory_id 
        INT variant_id 
        JSON variant 
        INT count 
        STRING name 
        FLOAT price 
        STRING discount 
        INT coupon 
        JSON details 
        DATETIME deleted_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_metas {
        INT id PK
        INT order_id 
        STRING group 
        STRING key 
        STRING value 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_return_items {
        INT id PK
        INT order_return_id 
        INT order_item_id 
        INT order_reason_id 
        INT quantity 
        STRING comments 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_return_reasons {
        INT id PK
        STRING reason 
        DATETIME created_at 
        DATETIME updated_at 
    }
    order_returns {
        INT id PK
        INT order_id 
        INT user_id 
        STRING status 
        STRING comments 
        DATETIME created_at 
        DATETIME updated_at 
    }
    orders {
        INT id PK
        STRING uuid 
        STRING created_by_type 
        INT created_by_id 
        STRING ordered_by_type 
        INT ordered_by_id 
        STRING orderable_type 
        INT orderable_id 
        INT address_id 
        INT delivery_time_id 
        STRING type 
        STRING tracking_code 
        STRING name 
        STRING phone 
        STRING email 
        FLOAT amount 
        STRING amount_with_discount 
        STRING discount 
        INT coupon_id 
        INT reseller 
        STRING status 
        STRING description 
        DATETIME deleted_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    otps {
        INT id PK
        STRING phone 
        STRING email 
        STRING code 
        STRING service 
        STRING token 
        STRING identifier 
        INT is_verified 
        DATETIME expiry_time 
        DATETIME created_at 
        DATETIME updated_at 
    }
    page_items {
        INT id PK
        INT page_id 
        STRING component 
        INT order 
        JSON settings 
        DATETIME created_at 
        DATETIME updated_at 
    }
    page_versions {
        INT id PK
        INT page_id 
        INT created_by 
        STRING content 
        STRING css 
        STRING components_json 
        STRING styles_json 
        DATETIME created_at 
        DATETIME updated_at 
    }
    pages {
        INT id PK
        STRING title 
        STRING slug 
        STRING status 
        STRING content 
        STRING css 
        STRING js 
        STRING components_json 
        STRING styles_json 
        JSON assets_json 
        JSON gjs_source 
        STRING excerpt 
        STRING meta_title 
        STRING meta_description 
        STRING meta_keywords 
        STRING template 
        STRING featured_image 
        INT parent_id 
        INT position 
        INT is_published 
        STRING published_html 
        DATETIME published_at 
        INT author_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    password_reset_tokens {
        STRING email PK
        STRING token 
        DATETIME created_at 
    }
    payment_steps {
        INT id PK
        INT payment_id 
        STRING step 
        INT http_code 
        JSON request 
        JSON response 
        DATETIME request_time 
        STRING return_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    payments {
        INT id PK
        STRING uuid 
        INT user_id 
        STRING payable_type 
        INT payable_id 
        STRING gateway 
        STRING transaction_id 
        FLOAT amount 
        STRING tracking_code 
        STRING description 
        STRING status 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    permissions {
        INT id PK
        STRING name 
        STRING guard_name 
        DATETIME created_at 
        DATETIME updated_at 
    }
    personal_access_tokens {
        INT id PK
        STRING tokenable_type 
        INT tokenable_id 
        STRING name 
        STRING token 
        STRING abilities 
        DATETIME last_used_at 
        DATETIME expires_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    point_transactions {
        INT id PK
        INT user_id 
        INT points 
        STRING description 
        STRING type 
        STRING source_type 
        STRING source_id 
        DATETIME expires_at 
        DATETIME created_at 
        DATETIME updated_at 
    }
    posts {
        INT id PK
        INT user_id 
        STRING author 
        STRING title 
        STRING content 
        STRING short_desc 
        INT comment_status 
        STRING slug 
        STRING price 
        STRING password 
        STRING type 
        STRING name 
        STRING layout 
        STRING status 
        STRING img 
        STRING video 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    product_attribute_values {
        INT id PK
        INT product_id 
        INT category_attribute_id 
        STRING value 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    product_bundle_items {
        INT id PK
        INT product_bundle_id 
        INT product_id 
        INT quantity 
        DATETIME created_at 
        DATETIME updated_at 
    }
    product_bundles {
        INT id PK
        STRING name 
        STRING description 
        INT created_by 
        DATETIME created_at 
        DATETIME updated_at 
    }
    product_inventories {
        INT id PK
        INT product_id 
        INT user_id 
        INT shop_id 
        STRING name 
        STRING weight 
        STRING size 
        STRING color 
        STRING status 
        INT price 
        INT inventory 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    product_inventory_variants {
        INT id PK
        INT user_id 
        INT shop_id 
        INT product_inventory_id 
        JSON combination_items 
        STRING combination_key 
        FLOAT price_override 
        STRING currency_code 
        STRING sku_code 
        STRING barcode 
        STRING status 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    product_metas {
        INT id PK
        INT product_id 
        STRING key 
        STRING value 
        JSON data 
        DATETIME created_at 
        DATETIME updated_at 
    }
    product_views {
        INT id PK
        INT user_id 
        INT product_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    products {
        INT id PK
        INT user_id 
        INT category_id 
        INT brand_id 
        STRING title 
        STRING code 
        STRING slug 
        STRING short_description 
        STRING content 
        INT inventory 
        STRING weight 
        STRING length 
        STRING width 
        STRING height 
        INT price 
        INT discount_price 
        STRING off_rate 
        INT second_hand 
        INT consumable 
        STRING status 
        STRING brand_img 
        JSON attributes 
        DATETIME created_at 
        DATETIME updated_at 
        DATETIME deleted_at 
        INT created_by 
        INT deleted_by 
    }
    redemptions {
        INT id PK
        INT user_id 
        INT reward_id 
        INT points_spent 
        DATETIME redemption_date 
        STRING status 
        DATETIME created_at 
        DATETIME updated_at 
    }
    referrals {
        INT id PK
        INT referrer_id 
        INT referee_id 
        INT bonus_awarded 
        DATETIME created_at 
        DATETIME updated_at 
    }
    rewards {
        INT id PK
        STRING name 
        STRING description 
        INT points_cost 
        STRING reward_type 
        DATETIME validity 
        DATETIME created_at 
        DATETIME updated_at 
    }
    role_has_permissions {
        INT permission_id PK
        INT role_id PK
    }
    roles {
        INT id PK
        STRING name 
        STRING guard_name 
        DATETIME created_at 
        DATETIME updated_at 
    }
    saves {
        INT id PK
        INT user_id 
        STRING savable_type 
        INT savable_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    sessions {
        STRING id PK
        INT user_id 
        STRING ip_address 
        STRING user_agent 
        STRING payload 
        INT last_activity 
    }
    shops {
        INT id PK
        INT user_id 
        STRING name 
        STRING slug 
        STRING logo 
        STRING description 
        STRING phone 
        STRING email 
        STRING address 
        STRING city 
        STRING state 
        STRING postal_code 
        STRING country 
        INT is_approved 
        DATETIME approved_at 
        STRING consumer_key 
        STRING consumer_secret 
        STRING woo_url 
        DATETIME created_at 
        DATETIME updated_at 
    }
    stock_movements {
        INT id PK
        INT warehouse_id 
        INT product_inventory_id 
        INT product_inventory_variant_id 
        STRING type 
        INT qty 
        STRING reference_type 
        INT reference_id 
        JSON meta 
        DATETIME moved_at 
        INT user_id 
        DATETIME created_at 
        DATETIME updated_at 
    }
    taggables {
        INT tag_id PK
        STRING taggable_type PK
        INT taggable_id PK
    }
    tags {
        INT id PK
        STRING name 
        STRING slug 
        STRING description 
        STRING color 
        DATETIME created_at 
        DATETIME updated_at 
    }
    telescope_entries {
        INT sequence PK
        STRING uuid 
        STRING batch_id 
        STRING family_hash 
        INT should_display_on_index 
        STRING type 
        STRING content 
        DATETIME created_at 
    }
    telescope_entries_tags {
        STRING entry_uuid PK
        STRING tag PK
    }
    telescope_monitoring {
        STRING tag PK
    }
    tiers {
        INT id PK
        STRING name 
        INT min_points 
        INT max_points 
        JSON benefits_json 
        DATETIME created_at 
        DATETIME updated_at 
    }
    users {
        INT id PK
        STRING name 
        STRING shop_id 
        STRING email 
        STRING username 
        STRING phone 
        DATETIME email_verified_at 
        DATETIME phone_verified_at 
        STRING password 
        STRING admin_layout 
        STRING remember_token 
        DATETIME created_at 
        DATETIME updated_at 
        STRING tier_level 
        STRING total_points 
        STRING referral_code 
    }
    wallet_settlements {
        INT id PK
        INT user_id 
        INT wallet_id 
        FLOAT amount 
        STRING status 
        STRING description 
        DATETIME created_at 
        DATETIME updated_at 
    }
    wallet_transactions {
        INT id PK
        STRING uuid 
        INT wallet_id 
        FLOAT amount 
        STRING type 
        STRING description 
        FLOAT balance 
        DATETIME created_at 
        DATETIME updated_at 
    }
    wallets {
        INT id PK
        INT user_id 
        FLOAT balance 
        FLOAT blocked 
        STRING type 
        DATETIME created_at 
        DATETIME updated_at 
    }
    warehouse_inventories {
        INT id PK
        INT warehouse_id 
        INT product_inventory_id 
        INT product_inventory_variant_id 
        STRING sku 
        INT qty_on_hand 
        INT qty_reserved 
        INT min_qty 
        INT max_qty 
        DATETIME created_at 
        DATETIME updated_at 
    }
    warehouses {
        INT id PK
        INT shop_id 
        STRING name 
        STRING code 
        INT is_active 
        JSON address 
        DATETIME created_at 
        DATETIME updated_at 
    }
    addresses }o--|| users : FK
    brands }o--|| categories : FK
    cart_items }o--|| carts : FK
    cart_items }o--|| product_inventories : FK
    cart_items }o--|| products : FK
    cart_items }o--|| shops : FK
    cart_items }o--|| product_inventory_variants : FK
    carts }o--|| addresses : FK
    carts }o--|| users : FK
    category_attribute_items }o--|| category_attributes : FK
    category_attributes }o--|| categories : FK
    comments }o--|| users : FK
    deliveries }o--|| addresses : FK
    deliveries }o--|| delivery_times : FK
    deliveries }o--|| orders : FK
    deliveries }o--|| delivery_providers : FK
    deliveries }o--|| users : FK
    delivery_day_capacities }o--|| delivery_times : FK
    delivery_events }o--|| deliveries : FK
    delivery_items }o--|| deliveries : FK
    delivery_items }o--|| order_items : FK
    delivery_time_exceptions }o--|| delivery_times : FK
    delivery_time_reservations }o--|| delivery_times : FK
    delivery_time_reservations }o--|| users : FK
    faq_answers }o--|| faq_questions : FK
    faq_answers }o--|| users : FK
    faq_comments }o--|| users : FK
    faq_flags }o--|| users : FK
    faq_questions }o--|| faq_answers : FK
    faq_questions }o--|| faq_categories : FK
    faq_questions }o--|| users : FK
    faq_taggables }o--|| faq_tags : FK
    faq_votes }o--|| users : FK
    has_file }o--|| files : FK
    likes }o--|| users : FK
    model_has_permissions }o--|| permissions : FK
    model_has_roles }o--|| roles : FK
    order_delivery_addresses }o--|| orders : FK
    order_items }o--|| coupons : FK
    order_items }o--|| product_inventories : FK
    order_items }o--|| orders : FK
    order_items }o--|| product_inventory_variants : FK
    order_metas }o--|| orders : FK
    order_return_items }o--|| order_items : FK
    order_return_items }o--|| order_return_reasons : FK
    order_return_items }o--|| order_returns : FK
    order_returns }o--|| orders : FK
    order_returns }o--|| users : FK
    orders }o--|| coupons : FK
    orders }o--|| delivery_times : FK
    orders }o--|| users : FK
    page_items }o--|| pages : FK
    page_versions }o--|| users : FK
    page_versions }o--|| pages : FK
    pages }o--|| users : FK
    pages }o--|| pages : FK
    payment_steps }o--|| payments : FK
    payments }o--|| users : FK
    point_transactions }o--|| users : FK
    posts }o--|| users : FK
    product_attribute_values }o--|| category_attributes : FK
    product_attribute_values }o--|| products : FK
    product_bundle_items }o--|| product_bundles : FK
    product_bundle_items }o--|| products : FK
    product_bundles }o--|| users : FK
    product_inventories }o--|| products : FK
    product_inventories }o--|| shops : FK
    product_inventories }o--|| users : FK
    product_inventory_variants }o--|| product_inventories : FK
    product_inventory_variants }o--|| shops : FK
    product_inventory_variants }o--|| users : FK
    product_metas }o--|| products : FK
    product_views }o--|| products : FK
    product_views }o--|| users : FK
    products }o--|| brands : FK
    products }o--|| categories : FK
    products }o--|| users : FK
    redemptions }o--|| rewards : FK
    redemptions }o--|| users : FK
    role_has_permissions }o--|| permissions : FK
    role_has_permissions }o--|| roles : FK
    saves }o--|| users : FK
    shops }o--|| users : FK
    stock_movements }o--|| product_inventories : FK
    stock_movements }o--|| product_inventory_variants : FK
    stock_movements }o--|| users : FK
    stock_movements }o--|| warehouses : FK
    taggables }o--|| tags : FK
    telescope_entries_tags }o--|| telescope_entries : FK
    wallet_settlements }o--|| users : FK
    wallet_settlements }o--|| wallets : FK
    wallet_transactions }o--|| wallets : FK
    wallets }o--|| users : FK
    warehouse_inventories }o--|| product_inventories : FK
    warehouse_inventories }o--|| product_inventory_variants : FK
    warehouse_inventories }o--|| warehouses : FK
    warehouses }o--|| shops : FK