# 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 ``` 5. **Export ke Image**: Gunakan Mermaid Live Editor untuk mengekspor diagram ke format PNG, SVG, atau PDF.