Files
LAB_LINGKUNGAN/lab_env_database_mermaid_erd.md
2025-04-24 10:25:31 +07:00

7.0 KiB

Entity Relationship Diagram (ERD) - Sistem Aplikasi Laboratorium Lingkungan (Mermaid)

Berikut adalah representasi hubungan antar entitas dalam sistem aplikasi laboratorium lingkungan menggunakan format Mermaid.

erDiagram
    CUSTOMERS ||--o{ SERVICE_REQUESTS : "mengajukan"
    CUSTOMERS {
        int customer_id PK
        varchar customer_name
        enum customer_type
        varchar contact_person
        varchar phone_number
        varchar email
        text address
        varchar company_name
        timestamp created_at
        timestamp updated_at
    }
    
    SERVICE_REQUESTS ||--o{ REQUEST_PARAMETERS : "memiliki"
    SERVICE_REQUESTS ||--o{ SAMPLING_PLANS : "memiliki"
    SERVICE_REQUESTS ||--o{ SAMPLES : "memiliki"
    SERVICE_REQUESTS ||--o{ REPORTS : "menghasilkan"
    SERVICE_REQUESTS {
        int request_id PK
        int customer_id FK
        timestamp request_date
        enum request_type
        varchar project_name
        text project_location
        enum status
        int admin_id
        varchar quotation_number
        date quotation_date
        date approved_date
        varchar payment_proof
        date payment_date
        decimal total_amount
        text notes
        timestamp created_at
        timestamp updated_at
    }
    
    SAMPLE_TYPES ||--o{ ANALYSIS_PARAMETERS : "mendefinisikan"
    SAMPLE_TYPES ||--o{ SAMPLES : "dikategorikan sebagai"
    SAMPLE_TYPES {
        int sample_type_id PK
        varchar type_name
        text description
        text standard_method
        timestamp created_at
    }
    
    ANALYSIS_PARAMETERS ||--o{ REQUEST_PARAMETERS : "diminta dalam"
    ANALYSIS_PARAMETERS ||--o{ ANALYSIS_RESULTS : "digunakan untuk"
    ANALYSIS_PARAMETERS {
        int parameter_id PK
        varchar parameter_name
        varchar unit
        varchar method
        int sample_type_id FK
        varchar standard_value
        decimal price
        timestamp created_at
    }
    
    REQUEST_PARAMETERS {
        int request_parameter_id PK
        int request_id FK
        int parameter_id FK
        int quantity
        decimal price_per_unit
        timestamp created_at
    }
    
    SAMPLING_PLANS ||--o{ SAMPLES : "menghasilkan"
    SAMPLING_PLANS {
        int plan_id PK
        int request_id FK
        date planned_date
        text location
        varchar coordinates
        text sampling_method
        text equipment_needed
        int sampling_officer_id
        enum status
        text notes
        timestamp created_at
        timestamp updated_at
    }
    
    SAMPLES ||--o{ ANALYSIS_RESULTS : "dianalisis menjadi"
    SAMPLES {
        int sample_id PK
        int request_id FK
        int plan_id FK
        varchar sample_code
        int sample_type_id FK
        datetime sampling_date
        text sampling_location
        int sampling_officer_id
        datetime received_date
        int received_by
        text sample_condition
        text preparation_notes
        text preservation_method
        enum status
        timestamp created_at
        timestamp updated_at
    }
    
    ANALYSIS_RESULTS {
        int result_id PK
        int sample_id FK
        int parameter_id FK
        int analyst_id
        datetime analysis_date
        varchar result_value
        varchar unit
        varchar method_used
        boolean is_within_standard
        text notes
        enum status
        int verified_by
        datetime verification_date
        timestamp created_at
        timestamp updated_at
    }
    
    REPORTS {
        int report_id PK
        int request_id FK
        varchar report_number
        date report_date
        int prepared_by
        int verified_by
        int approved_by
        enum status
        varchar file_path
        text notes
        timestamp created_at
        timestamp updated_at
    }
    
    USERS ||--o{ ACTIVITY_LOGS : "melakukan"
    USERS {
        int user_id PK
        varchar username
        varchar password
        varchar full_name
        varchar email
        enum role
        varchar department
        boolean is_active
        datetime last_login
        timestamp created_at
        timestamp updated_at
    }
    
    ACTIVITY_LOGS {
        int log_id PK
        int user_id FK
        varchar action
        varchar table_name
        int record_id
        text details
        varchar ip_address
        text user_agent
        timestamp created_at
    }

Penjelasan Relasi

  1. Customers (1) -- (0..*) Service Requests

    • Satu pelanggan (customer) dapat memiliki banyak permintaan layanan (service requests).
  2. Service Requests (1) -- (0..*) Request Parameters

    • Satu permintaan layanan dapat meminta banyak parameter untuk diuji.
  3. Analysis Parameters (1) -- (0..*) Request Parameters

    • Satu parameter analisis dapat diminta dalam banyak permintaan layanan.
  4. Sample Types (1) -- (0..*) Analysis Parameters

    • Satu jenis sampel dapat memiliki banyak parameter analisis.
  5. Service Requests (1) -- (0..*) Sampling Plans

    • Satu permintaan layanan dapat memiliki banyak rencana sampling.
  6. Sampling Plans (1) -- (0..*) Samples

    • Satu rencana sampling dapat menghasilkan banyak sampel.
  7. Service Requests (1) -- (0..*) Samples

    • Satu permintaan layanan dapat memiliki banyak sampel.
  8. Sample Types (1) -- (0..*) Samples

    • Satu jenis sampel dapat memiliki banyak sampel.
  9. Samples (1) -- (0..*) Analysis Results

    • Satu sampel dapat memiliki banyak hasil analisis.
  10. Analysis Parameters (1) -- (0..*) Analysis Results

    • Satu parameter analisis dapat digunakan untuk banyak hasil analisis.
  11. Service Requests (1) -- (0..*) Reports

    • Satu permintaan layanan dapat menghasilkan banyak laporan.
  12. Users (1) -- (0..*) Activity Logs

    • Satu pengguna dapat memiliki banyak catatan aktivitas.
  13. Users berhubungan dengan banyak tabel lain melalui kolom seperti:

    • admin_id pada Service Requests
    • sampling_officer_id pada Sampling Plans
    • sampling_officer_id pada Samples
    • received_by pada Samples
    • analyst_id pada Analysis Results
    • verified_by pada Analysis Results
    • prepared_by, verified_by, approved_by pada Reports

Cara Menggunakan Diagram Mermaid

Diagram Mermaid ini dapat divisualisasikan dengan beberapa cara:

  1. GitHub: GitHub secara native mendukung rendering diagram Mermaid dalam file Markdown.

  2. Mermaid Live Editor: Kunjungi Mermaid Live Editor dan paste kode Mermaid di atas untuk melihat dan mengedit diagram secara interaktif.

  3. Plugin VS Code: Gunakan plugin Mermaid untuk Visual Studio Code untuk melihat diagram secara langsung saat mengedit.

  4. Website Dengan Mermaid.js: Tambahkan script Mermaid.js ke website Anda:

    <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
    <script>mermaid.initialize({startOnLoad:true});</script>
    
  5. Export ke Image: Gunakan Mermaid Live Editor untuk mengekspor diagram ke format PNG, SVG, atau PDF.