first commit
This commit is contained in:
237
lab_env_database_mermaid_erd.md
Normal file
237
lab_env_database_mermaid_erd.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user