12 KiB
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:
- Customer (internal/eksternal) mengajukan permintaan sampling dan analisis
- Admin Lab memproses permintaan, menyiapkan surat penawaran, quotation, dan registrasi
- Petugas Sampling menyiapkan rencana sampling dan peralatan
- Bagian Penerimaan Contoh Uji menerima dan mempreparasi sampel
- Bagian Analisis Laboratorium menganalisa sampel uji sesuai jenis sampel
- 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 |
| 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 |
| 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:
-
Customer (Internal dan eksternal)
- Tabel
customersmenyimpan informasi pelanggan - Tabel
service_requestsmenyimpan permintaan sampling dan analisis
- Tabel
-
Admin Lab Ling
- Tabel
service_requestsmenyimpan data penawaran, quotation, order pelanggan - Tabel
usersmenyimpan data admin yang bertanggung jawab
- Tabel
-
Petugas Sampling
- Tabel
sampling_plansmenyimpan rencana sampling - Tabel
samplesmenyimpan data sampel yang diambil
- Tabel
-
Bagian penerimaan contoh uji
- Tabel
samplesmenyimpan informasi penerimaan dan preparasi sampel
- Tabel
-
Bagian Analisis Laboratorium
- Tabel
analysis_resultsmenyimpan hasil analisa sampel uji
- Tabel
-
Bagian Verifikasi Hasil Uji
- Tabel
analysis_resultsmenyimpan data verifikasi hasil uji - Tabel
reportsmenyimpan laporan hasil uji yang telah diverifikasi
- Tabel
Dengan struktur database ini, sistem dapat melacak seluruh alur dari permintaan pelanggan hingga penerbitan laporan hasil uji, sesuai dengan alur pelayanan pada diagram.