Files
LAB_LINGKUNGAN/lab_env_database_explanation.md
2025-04-24 10:25:31 +07:00

276 lines
12 KiB
Markdown

# 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.