PetcliniX - Proof your paradigm

🧩 Domain Model - Recommendation

erDiagram
    USER {
        UUID id PK
        STRING username
        STRING passwordHash
        BOOLEAN isActive
        BOOLEAN isAdmin
        DATETIME lastLogin
    }
    USER ||--|| OWNER : is
    USER ||--|| VET : is
    USER ||--|| ACTIVITY_LOG : logs

    OWNER {
        UUID id PK
    }
    OWNER ||--o{ PET : owns
    OWNER ||--o{ APPOINTMENT : books
    
    PET {
        UUID id PK
        UUID ownerId FK
        STRING name
        STRING type
        STRING breed
        BINARY picture
    }
    PET ||--o{ APPOINTMENT : has
   
    VET {
        UUID id PK
    }
    VET ||--o{ AVAILABILITY : sets
    VET ||--o{ APPOINTMENT : sets
    
    AVAILABILITY {
        UUID id PK
        UUID vetId FK
        ENUM dayOfWeek
        TIME startTime
        TIME endTime
    }
    
    APPOINTMENT {
        UUID id PK
        UUID petId FK
        UUID vetId FK
        DATETIME timeSlot
        ENUM status
    }
    APPOINTMENT ||--|{ VISIT : results_in

    VISIT {
        UUID id PK
        UUID appointmentId FK
        ENUM type "diagnosis, vaccination, notes"
        TEXT remark
        DATETIME createdAt
    }

    ACTIVITY_LOG {
        UUID id PK
        UUID userId FK
        STRING action
        DATETIME timestamp
    }


    

Main Entities

| Entity | Description | |————–|————-| | User | User with name, role and credentials | | Owner | User with a pet | | Pet | Pet with name, birth date, type and picutre | | Vet | Veterinarian with name | | Availability| Opening hours or available slots of a vet | | Appointment| Scheduled visit between an owner and a vet for a pet | | Visit | A entry created by vet with notes and diagnosis | | ActivityLog| Simple Audit |

Relationships