```mermaid
erDiagram
    %% Tables Utilisateurs
    users ||--o{ profiles : "has"
    users ||--o{ fails : "creates"
    users ||--o{ reactions : "gives"
    users ||--o{ comments : "writes"
    users ||--o{ user_badges : "earns"
    users ||--|| user_points : "has"
    users ||--o{ user_push_tokens : "registers"
    users ||--o{ user_privacy_settings : "configures"
    users ||--o{ user_preferences : "sets"
    users ||--o{ user_consents : "grants"

    %% Tables Fails
    fails ||--o{ reactions : "receives"
    fails ||--o{ comments : "has"
    fails ||--o{ fail_reports : "reported"
    fails ||--|| fail_moderation : "moderated"

    %% Tables Comments
    comments ||--o{ comment_reactions : "receives"
    comments ||--o{ comment_reports : "reported"
    comments ||--|| comment_moderation : "moderated"
    comments ||--o{ comments : "replies"

    %% Tables Badges
    badge_definitions ||--o{ user_badges : "awarded"

    %% Tables Support
    users ||--o{ support_messages : "sends"

    %% Tables Logs
    users ||--o{ activity_logs : "generates"
    users ||--o{ error_logs : "triggers"
    users ||--o{ request_logs : "makes"

    %% Tables Sécurité
    users ||--o{ email_verification_tokens : "verifies"
    users ||--o{ password_reset_tokens : "resets"
    users ||--o{ parental_consents : "requires"

    %% Définitions des entités principales
    users {
        char36 id PK
        varchar email UK
        varchar password
        enum role
        boolean email_confirmed
        timestamp created_at
    }

    profiles {
        int id PK
        char36 user_id FK
        varchar display_name
        text bio
        varchar avatar_url
        char2 country_code
        date birth_date
    }

    fails {
        char36 id PK
        char36 user_id FK
        varchar title
        text description
        varchar category
        char2 country_code
        boolean is_anonyme
        varchar image_url
        timestamp created_at
    }

    reactions {
        int id PK
        char36 fail_id FK
        char36 user_id FK
        enum reaction_type
        timestamp created_at
    }

    comments {
        char36 id PK
        char36 fail_id FK
        char36 user_id FK
        text content
        char36 parent_comment_id FK
        timestamp created_at
    }

    user_points {
        char36 user_id PK_FK
        int total_points
        int streak
        date last_activity
    }

    user_badges {
        int id PK
        char36 user_id FK
        int badge_id FK
        timestamp earned_at
    }

    badge_definitions {
        int id PK
        varchar name
        text description
        varchar icon_url
        varchar requirement_type
        int requirement_value
    }

    fail_moderation {
        int id PK
        char36 fail_id FK
        char36 moderator_id FK
        enum status
        text reason
    }

    support_messages {
        char36 id PK
        char36 user_id FK
        varchar subject
        text message
        enum status
        enum priority
    }

    user_push_tokens {
        int id PK
        char36 user_id FK
        varchar token
        enum platform
    }

    user_privacy_settings {
        char36 id PK
        char36 user_id FK
        enum profile_visibility
        boolean show_email
        boolean show_location
        boolean allow_messages
    }
```
