237 lines
7.0 KiB
Markdown
237 lines
7.0 KiB
Markdown
# Entity Relationship Diagram (ERD) - Sistem Aplikasi Laboratorium Lingkungan (Mermaid)
|
|
|
|
Berikut adalah representasi hubungan antar entitas dalam sistem aplikasi laboratorium lingkungan menggunakan format Mermaid.
|
|
|
|
```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](https://mermaid.live/) 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:
|
|
```html
|
|
<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. |