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
-
Customers (1) -- (0..*) Service Requests
- Satu pelanggan (customer) dapat memiliki banyak permintaan layanan (service requests).
-
Service Requests (1) -- (0..*) Request Parameters
- Satu permintaan layanan dapat meminta banyak parameter untuk diuji.
-
Analysis Parameters (1) -- (0..*) Request Parameters
- Satu parameter analisis dapat diminta dalam banyak permintaan layanan.
-
Sample Types (1) -- (0..*) Analysis Parameters
- Satu jenis sampel dapat memiliki banyak parameter analisis.
-
Service Requests (1) -- (0..*) Sampling Plans
- Satu permintaan layanan dapat memiliki banyak rencana sampling.
-
Sampling Plans (1) -- (0..*) Samples
- Satu rencana sampling dapat menghasilkan banyak sampel.
-
Service Requests (1) -- (0..*) Samples
- Satu permintaan layanan dapat memiliki banyak sampel.
-
Sample Types (1) -- (0..*) Samples
- Satu jenis sampel dapat memiliki banyak sampel.
-
Samples (1) -- (0..*) Analysis Results
- Satu sampel dapat memiliki banyak hasil analisis.
-
Analysis Parameters (1) -- (0..*) Analysis Results
- Satu parameter analisis dapat digunakan untuk banyak hasil analisis.
-
Service Requests (1) -- (0..*) Reports
- Satu permintaan layanan dapat menghasilkan banyak laporan.
-
Users (1) -- (0..*) Activity Logs
- Satu pengguna dapat memiliki banyak catatan aktivitas.
-
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:
-
GitHub: GitHub secara native mendukung rendering diagram Mermaid dalam file Markdown.
-
Mermaid Live Editor: Kunjungi Mermaid Live Editor dan paste kode Mermaid di atas untuk melihat dan mengedit diagram secara interaktif.
-
Plugin VS Code: Gunakan plugin Mermaid untuk Visual Studio Code untuk melihat diagram secara langsung saat mengedit.
-
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> -
Export ke Image: Gunakan Mermaid Live Editor untuk mengekspor diagram ke format PNG, SVG, atau PDF.