# Struktur Database Sistem Aplikasi Laboratorium Lingkungan Berikut adalah penjelasan struktur database yang dirancang untuk sistem aplikasi laboratorium lingkungan berdasarkan alur pelayanan yang ada pada diagram. ## Gambaran Umum Alur Layanan Alur laboratorium lingkungan melibatkan beberapa tahapan utama: 1. **Customer** (internal/eksternal) mengajukan permintaan sampling dan analisis 2. **Admin Lab** memproses permintaan, menyiapkan surat penawaran, quotation, dan registrasi 3. **Petugas Sampling** menyiapkan rencana sampling dan peralatan 4. **Bagian Penerimaan Contoh Uji** menerima dan mempreparasi sampel 5. **Bagian Analisis Laboratorium** menganalisa sampel uji sesuai jenis sampel 6. **Bagian Verifikasi Hasil Uji** melakukan verifikasi hasil uji ## Struktur Tabel ### 1. Tabel Customers (Pelanggan) Menyimpan data pelanggan baik internal maupun eksternal yang meminta layanan pengujian. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | customer_id | INT | Primary Key, ID unik pelanggan | | customer_name | VARCHAR(100) | Nama pelanggan | | customer_type | ENUM | Tipe pelanggan: 'Internal' atau 'External' | | contact_person | VARCHAR(100) | Nama kontak person | | phone_number | VARCHAR(20) | Nomor telepon | | email | VARCHAR(100) | Alamat email | | address | TEXT | Alamat lengkap | | company_name | VARCHAR(100) | Nama perusahaan/instansi | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 2. Tabel Sample Types (Jenis Sampel) Menyimpan jenis-jenis sampel yang dapat dianalisis oleh laboratorium. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | sample_type_id | INT | Primary Key, ID unik jenis sampel | | type_name | VARCHAR(100) | Nama jenis sampel (contoh: Air Limbah, Air Permukaan, dll) | | description | TEXT | Deskripsi jenis sampel | | standard_method | TEXT | Metode standar untuk sampling dan analisis | | created_at | TIMESTAMP | Tanggal pembuatan record | ### 3. Tabel Analysis Parameters (Parameter Analisis) Menyimpan parameter-parameter yang dapat dianalisis oleh laboratorium. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | parameter_id | INT | Primary Key, ID unik parameter | | parameter_name | VARCHAR(100) | Nama parameter (contoh: pH, BOD, COD, dll) | | unit | VARCHAR(50) | Satuan parameter (mg/L, NTU, dll) | | method | VARCHAR(100) | Metode analisis parameter | | sample_type_id | INT | Foreign Key ke tabel sample_types | | standard_value | VARCHAR(100) | Nilai baku mutu atau rentang standar | | price | DECIMAL(10,2) | Harga analisis parameter | | created_at | TIMESTAMP | Tanggal pembuatan record | ### 4. Tabel Service Requests (Permintaan Layanan) Menyimpan permintaan layanan dari pelanggan. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | request_id | INT | Primary Key, ID unik permintaan | | customer_id | INT | Foreign Key ke tabel customers | | request_date | TIMESTAMP | Tanggal permintaan | | request_type | ENUM | Tipe permintaan: 'Sampling and Analysis' atau 'Analysis Only' | | project_name | VARCHAR(200) | Nama proyek | | project_location | TEXT | Lokasi proyek | | status | ENUM | Status permintaan (Draft, Submitted, Quotation Sent, Approved, dll) | | admin_id | INT | ID admin yang menangani | | quotation_number | VARCHAR(50) | Nomor quotation | | quotation_date | DATE | Tanggal quotation | | approved_date | DATE | Tanggal persetujuan | | payment_proof | VARCHAR(255) | Bukti pembayaran DP | | payment_date | DATE | Tanggal pembayaran | | total_amount | DECIMAL(12,2) | Total biaya | | notes | TEXT | Catatan tambahan | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 5. Tabel Request Parameters (Parameter yang Diminta) Menyimpan parameter-parameter yang diminta untuk dianalisis dalam suatu permintaan. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | request_parameter_id | INT | Primary Key, ID unik | | request_id | INT | Foreign Key ke tabel service_requests | | parameter_id | INT | Foreign Key ke tabel analysis_parameters | | quantity | INT | Jumlah sampel untuk parameter | | price_per_unit | DECIMAL(10,2) | Harga per unit | | created_at | TIMESTAMP | Tanggal pembuatan record | ### 6. Tabel Sampling Plans (Rencana Sampling) Menyimpan rencana-rencana sampling. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | plan_id | INT | Primary Key, ID unik rencana | | request_id | INT | Foreign Key ke tabel service_requests | | planned_date | DATE | Tanggal rencana sampling | | location | TEXT | Lokasi sampling | | coordinates | VARCHAR(100) | Koordinat GPS lokasi sampling | | sampling_method | TEXT | Metode sampling yang digunakan | | equipment_needed | TEXT | Peralatan yang dibutuhkan | | sampling_officer_id | INT | ID petugas sampling | | status | ENUM | Status rencana (Planned, Confirmed, Completed, Cancelled) | | notes | TEXT | Catatan tambahan | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 7. Tabel Samples (Sampel) Menyimpan data sampel yang diambil. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | sample_id | INT | Primary Key, ID unik sampel | | request_id | INT | Foreign Key ke tabel service_requests | | plan_id | INT | Foreign Key ke tabel sampling_plans | | sample_code | VARCHAR(50) | Kode unik sampel | | sample_type_id | INT | Foreign Key ke tabel sample_types | | sampling_date | DATETIME | Tanggal dan waktu pengambilan sampel | | sampling_location | TEXT | Lokasi pengambilan sampel | | sampling_officer_id | INT | ID petugas yang mengambil sampel | | received_date | DATETIME | Tanggal dan waktu penerimaan sampel di lab | | received_by | INT | ID petugas yang menerima sampel | | sample_condition | TEXT | Kondisi sampel saat diterima | | preparation_notes | TEXT | Catatan preparasi sampel | | preservation_method | TEXT | Metode preservasi sampel | | status | ENUM | Status sampel (Planned, Collected, Received, In Preparation, dll) | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 8. Tabel Analysis Results (Hasil Analisis) Menyimpan hasil-hasil analisis laboratorium. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | result_id | INT | Primary Key, ID unik hasil | | sample_id | INT | Foreign Key ke tabel samples | | parameter_id | INT | Foreign Key ke tabel analysis_parameters | | analyst_id | INT | ID analis yang melakukan pengujian | | analysis_date | DATETIME | Tanggal dan waktu analisis | | result_value | VARCHAR(100) | Nilai hasil analisis | | unit | VARCHAR(50) | Satuan hasil | | method_used | VARCHAR(100) | Metode yang digunakan | | is_within_standard | BOOLEAN | Apakah hasil dalam batas standar | | notes | TEXT | Catatan analisis | | status | ENUM | Status hasil (Planned, In Progress, Completed, Verified, Rejected) | | verified_by | INT | ID petugas yang memverifikasi hasil | | verification_date | DATETIME | Tanggal dan waktu verifikasi | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 9. Tabel Reports (Laporan) Menyimpan laporan hasil uji. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | report_id | INT | Primary Key, ID unik laporan | | request_id | INT | Foreign Key ke tabel service_requests | | report_number | VARCHAR(50) | Nomor laporan hasil uji | | report_date | DATE | Tanggal laporan | | prepared_by | INT | ID petugas yang menyiapkan laporan | | verified_by | INT | ID petugas yang memverifikasi laporan | | approved_by | INT | ID petugas yang menyetujui laporan | | status | ENUM | Status laporan (Draft, Verified, Approved, Sent, Received) | | file_path | VARCHAR(255) | Path ke file laporan | | notes | TEXT | Catatan laporan | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 10. Tabel Users (Pengguna) Menyimpan data pengguna sistem (staf laboratorium). | Field | Tipe Data | Keterangan | |-------|-----------|------------| | user_id | INT | Primary Key, ID unik pengguna | | username | VARCHAR(50) | Username untuk login | | password | VARCHAR(255) | Password terenkripsi | | full_name | VARCHAR(100) | Nama lengkap pengguna | | email | VARCHAR(100) | Email pengguna | | role | ENUM | Peran pengguna (Admin, Sampling Officer, Lab Analyst, dll) | | department | VARCHAR(100) | Departemen pengguna | | is_active | BOOLEAN | Status aktif atau tidak | | last_login | DATETIME | Waktu login terakhir | | created_at | TIMESTAMP | Tanggal pembuatan record | | updated_at | TIMESTAMP | Tanggal update terakhir | ### 11. Tabel Activity Logs (Log Aktivitas) Menyimpan log aktivitas pada sistem. | Field | Tipe Data | Keterangan | |-------|-----------|------------| | log_id | INT | Primary Key, ID unik log | | user_id | INT | Foreign Key ke tabel users | | action | VARCHAR(255) | Aksi yang dilakukan | | table_name | VARCHAR(100) | Nama tabel yang berubah | | record_id | INT | ID record yang berubah | | details | TEXT | Detail perubahan | | ip_address | VARCHAR(45) | Alamat IP | | created_at | TIMESTAMP | Tanggal dan waktu log | ## Contoh Data Real Berikut adalah contoh data nyata untuk beberapa tabel utama: ### Contoh Data Customers ``` 1, 'PT. Industri Tekstil Nusantara', 'External', 'Budi Santoso', '08123456789', 'budi@tekstilnusantara.com', 'Jl. Industri No. 123, Bandung', 'PT. Industri Tekstil Nusantara' 2, 'Dinas Lingkungan Hidup Kota', 'External', 'Siti Aminah', '08765432100', 'siti@dlh.kotabjb.go.id', 'Jl. Pemkot No. 45, Kota BJB', 'Dinas Lingkungan Hidup Kota BJB' 3, 'Departemen Produksi', 'Internal', 'Rudi Hartono', '08567891234', 'rudi@internal.lab.com', 'Gedung Utama Lt. 2, Lab Lingkungan', 'Lab Lingkungan' ``` ### Contoh Data Sample Types ``` 1, 'Air Limbah', 'Sampel air limbah dari industri atau fasilitas', 'SNI 6989.59:2008' 2, 'Air Permukaan', 'Sampel air sungai, danau, atau badan air lainnya', 'SNI 6989.57:2008' 3, 'Air Tanah', 'Sampel air dari sumur atau mata air', 'SNI 6989.58:2008' ``` ### Contoh Data Analysis Parameters ``` 1, 'pH', '-', 'SNI 06-6989.11-2004', 1, '6-9', 50000.00 2, 'TSS', 'mg/L', 'SNI 06-6989.3-2004', 1, '100', 75000.00 3, 'COD', 'mg/L', 'SNI 6989.73:2009', 1, '100', 125000.00 4, 'BOD', 'mg/L', 'SNI 6989.72:2009', 1, '30', 150000.00 ``` ### Contoh Data Service Requests ``` 1, 1, '2025-01-15 09:30:00', 'Sampling and Analysis', 'Pemantauan Limbah Triwulan I 2025', 'Pabrik Tekstil Bandung', 'Approved', 1, 'Q-2025-001', '2025-01-15', '2025-01-20', 'payment_proof_001.jpg', '2025-01-18', 2500000.00, 'Permintaan rutin triwulanan' ``` ### Contoh Data Sampling Plans ``` 1, 1, '2025-01-25', 'Outlet IPAL PT. Industri Tekstil Nusantara', '-6.914744, 107.609810', 'Grab Sampling sesuai SNI 6989.59:2008', 'Botol sampling, pH meter, termometer, cool box', 2, 'Completed', 'Sampling dilakukan pada pagi hari' ``` ### Contoh Data Samples ``` 1, 1, 1, 'ITN-2025-001', 1, '2025-01-25 10:15:00', 'Outlet IPAL PT. Industri Tekstil Nusantara', 2, '2025-01-25 15:30:00', 3, 'Baik, suhu 20°C', 'Sampel disaring untuk analisis TSS', 'Preservation with H2SO4 for COD', 'Analysis Complete' ``` ### Contoh Data Analysis Results ``` 1, 1, 1, 3, '2025-01-26 09:00:00', '7.6', '-', 'SNI 06-6989.11-2004', TRUE, 'pH diukur in-situ dan di laboratorium', 'Verified', 4, '2025-01-27 10:00:00' 2, 1, 2, 3, '2025-01-26 11:00:00', '45', 'mg/L', 'SNI 06-6989.3-2004', TRUE, 'Sampel disaring dengan kertas saring', 'Verified', 4, '2025-01-27 10:00:00' ``` ## Kesesuaian dengan Alur Layanan Struktur database ini dirancang untuk mendukung alur layanan laboratorium lingkungan seperti pada diagram: 1. **Customer (Internal dan eksternal)** - Tabel `customers` menyimpan informasi pelanggan - Tabel `service_requests` menyimpan permintaan sampling dan analisis 2. **Admin Lab Ling** - Tabel `service_requests` menyimpan data penawaran, quotation, order pelanggan - Tabel `users` menyimpan data admin yang bertanggung jawab 3. **Petugas Sampling** - Tabel `sampling_plans` menyimpan rencana sampling - Tabel `samples` menyimpan data sampel yang diambil 4. **Bagian penerimaan contoh uji** - Tabel `samples` menyimpan informasi penerimaan dan preparasi sampel 5. **Bagian Analisis Laboratorium** - Tabel `analysis_results` menyimpan hasil analisa sampel uji 6. **Bagian Verifikasi Hasil Uji** - Tabel `analysis_results` menyimpan data verifikasi hasil uji - Tabel `reports` menyimpan laporan hasil uji yang telah diverifikasi Dengan struktur database ini, sistem dapat melacak seluruh alur dari permintaan pelanggan hingga penerbitan laporan hasil uji, sesuai dengan alur pelayanan pada diagram.