Banyak orang menggunakan aplikasi cuaca seluler untuk merencanakan hari mereka – atau setidaknya memutuskan apakah mereka perlu membawa payung! Model data seperti apa yang ada di bawah program populer ini?
Kita semua ingin tahu betapa buruknya cuaca sebelum kita melangkah keluar. Aplikasi Windows, iOS, dan Android memberi kami informasi yang akurat dan andal tentang kondisi cuaca saat ini. Artikel ini menjelaskan model data mendetail yang dapat digunakan untuk aplikasi semacam itu.
Fungsi Apa yang Dibutuhkan Aplikasi Cuaca?
Hampir setiap orang yang memiliki smartphone juga memiliki setidaknya satu aplikasi cuaca. Aplikasi ini memberikan informasi cuaca mendetail, yang membantu penggunanya bersiap untuk setiap perubahan cuaca yang mungkin mereka hadapi di siang hari.
Apa yang harus dilakukan aplikasi cuaca?
- Laporkan kondisi cuaca saat ini, termasuk status keseluruhan (yaitu cerah, sebagian berawan, berawan, dll.) suhu udara, kelembaban, kecepatan dan arah angin, suhu "terasa seperti", tekanan udara, dan jarak pandang. Itu juga harus melaporkan informasi umum seperti waktu matahari terbit dan terbenam serta suhu tinggi dan rendah hari itu.
- Menampilkan detail per jam (suhu, kelembapan, curah hujan, kondisi cuaca secara keseluruhan) selama 24 jam ke depan.
- Tampilkan prakiraan dasar (suhu tinggi dan rendah harian, kondisi cuaca, dan waktu matahari terbit/terbenam) untuk setiap hari dalam satu atau dua minggu ke depan.
- Izinkan pengguna menyetel kota lokal mereka dan kota lain tempat mereka ingin melihat cuaca.
- Biarkan pengguna melihat data dalam satuan pengukuran pilihan mereka. Misalnya, pengguna AS mungkin lebih menyukai suhu Fahrenheit dan kecepatan angin yang ditunjukkan dalam mil per jam, tetapi pengguna Kanada dan Eropa lebih memilih Celcius dan kilometer per jam.
Ingat, aplikasi hanya menampilkan prakiraan cuaca dan (tergantung pada pengaturan) mengubah unit pengukuran. Itu tidak melakukan peramalan yang sebenarnya; itu hanya menerima data prakiraan dari sumber lain (seperti layanan pemerintah atau badan prakiraan cuaca) dan menampilkannya dengan cara yang diinginkan pengguna.
Model Data Aplikasi Cuaca
Saya telah membagi model menjadi tiga bidang subjek:
Weather Logs
User Preferences
User Profiles
Kami akan membahas setiap area sesuai urutannya.
Log Cuaca
Ini adalah mata pelajaran yang paling penting. Aplikasi cuaca apa pun harus menangkap detail dasar berikut:
- Suhu aktual saat ini
- Suhu "terasa seperti" saat ini, yang mungkin berbeda dari suhu sebenarnya karena faktor cuaca tambahan (misalnya, kelembaban tinggi dapat membuat hari yang panas terasa lebih panas atau hari yang dingin terasa lebih dingin).
- Suhu tinggi dan rendah harian
- Data titik embun dan/atau kelembaban relatif
- Kecepatan angin
- Arah angin
- Tekanan barometrik
- Visibilitas (yaitu hari berkabut akan memiliki visibilitas yang lebih rendah daripada hari yang cerah)
- Waktu matahari terbit dan terbenam
Bersama-sama, ini memberikan pandangan holistik tentang kondisi cuaca saat ini. Ini adalah informasi yang akan disajikan kepada pengguna, biasanya melalui satu atau lebih layar intuitif.
Ada dua jenis atribut untuk prakiraan cuaca:atribut yang berubah setiap hari dan atribut yang berubah sepanjang setiap hari. Atribut seperti waktu matahari terbit dan terbenam didasarkan pada peristiwa yang terjadi sekali sehari, jadi informasi ini diambil satu kali untuk setiap hari. Dalam hal prakiraan jangka panjang (dari 7 hingga 15 hari sebelumnya), pengguna harus memiliki informasi yang cukup jika Anda menyertakan suhu tinggi dan rendah setiap hari, tingkat kelembapan, dan kondisi cuaca keseluruhan (yaitu cerah, berawan, dll).
Atribut seperti suhu saat ini, suhu "terasa seperti", kecepatan dan arah angin, tekanan udara, dan jarak pandang dapat berubah sepanjang hari. Ini harus ditangkap untuk interval waktu tertentu, katakanlah setiap jam atau setiap tiga jam. Untuk keperluan model ini, kami akan mengasumsikan kerangka waktu satu jam.
Karena kami memiliki dua jenis atribut, saya telah menempatkan dua tabel di area subjek ini. Yang pertama, weather_daily_forecast_log
, memegang atribut harian. Ini berisi kolom berikut:
city_id
– Merujukcity
tabel dan menandakan kota tempat data ini berlaku.calendar_date
– Tanggal kalender untuk data ini. Karena tabel ini menyimpan satu catatan per kota per tanggal, kolom ini (city_id
dancalendar_date
) membentuk kunci utama komposit untuk tabel ini.weather_status_id
– Merujuk padaweather_status
tabel dan menunjukkan kondisi cuaca (yaitu hujan, berawan, berawan sebagian, atau cerah).min_temperature
– Suhu minimum (terendah) hari itu.max_temperature
– Suhu maksimum (tertinggi) hari itu.avg_humidity_in_percentage
– rata-rata kelembaban relatif di udara hari itu. (Jumlah air yang dapat ditampung udara relatif terhadap suhunya.)sunrise_time
– Kolom stempel waktu yang menyimpan waktu matahari terbit.sunset_time
– Kolom stempel waktu yang menyimpan waktu matahari terbenam.last_updated_at
– Menyimpan tanggal dan waktu (sebagai stempel waktu) saat catatan terakhir diperbarui.source_system
– Nama sumber ramalan cuaca kami. Dua kolom terakhir ini disimpan untuk tujuan audit.
weather_hourly_forecast_log
tabel menampung semua atribut yang dapat berubah sepanjang hari. Kami menganggap atribut ini sebagai satu catatan untuk jangka waktu tertentu. Kolomnya adalah:
id
– Kunci pengganti untuk tabel.city_id
– Kota yang relevan.start_timestamp
– Kolom stempel waktu yang menandakan kapan jangka waktu ini dimulai.end_timestamp
– Kolom stempel waktu yang menandakan kapan jangka waktu ini berakhir.weather_status_id
– Status cuaca keseluruhan untuk jangka waktu tersebut.temperature
– Suhu saat ini untuk jangka waktu.feels_like_temperature
– Suhu “terasa seperti” untuk jangka waktu tersebut. Hal ini dapat dipengaruhi oleh banyak faktor, termasuk angin, hujan, dan kelembaban tinggi atau rendah. Informasi ini memberikan kesan yang lebih realistis tentang kondisi cuaca saat ini.humidity_in_percentage
–Kolom ini menyimpan jumlah (sebagai persentase) kelembapan di udara.wind_speed_in_mph
– Mencatat kecepatan angin dalam mph (mil per jam).wind_direction
– Kolom teks ini menyimpan satu atau dua karakter yang menunjukkan arah angin (N, NW, NE, S, W, SW, dll.)pressure_in_mmhg
– Menyimpan nilai tekanan udara, dalam mmHg.visibility_in_mph
– Menyimpan nilai rentang visibilitas, dalam mil.
Tabel ini akan menyimpan data terbaru untuk jangka waktu tertentu. Kadang-kadang, ramalan masa depan dapat dikeluarkan dan kemudian diubah. Dalam kasus seperti itu, catatan yang ada untuk hari atau jangka waktu yang relevan akan ditimpa oleh yang terbaru. Selain itu, Anda akan melihat bahwa kami hanya menyimpan atribut dalam satu unit pengukuran (mis. mph) per atribut. Untuk menghemat penyimpanan, kami hanya akan menyimpan satu record untuk setiap atribut dan membiarkan front end mengonversinya ke unit pilihan pengguna bila diperlukan.
Preferensi Pengguna
Area subjek ini terutama menangani preferensi pengguna untuk unit pengukuran. Sebagian besar kolom sudah cukup jelas, jadi kami hanya akan menjelaskan secara singkat tujuan dari setiap tabel.
users
tabel menyimpan info dasar tentang pengguna, seperti alamat email dan nomor telepon. id
kolom memberikan nomor unik untuk setiap pengguna yang mendaftar dengan aplikasi.
attribute
tabel menyimpan daftar atribut, seperti suhu, kecepatan angin, arah angin, tekanan udara, dll.
measuring_units
tabel menyimpan daftar semua unit pengukuran, dengan nama yang sesuai, deskripsi, dan attribute_id
.
user_preferences
tabel memetakan hubungan antara pengguna dan preferensi unit pengukuran. Perhatikan bahwa kami dapat menyimpan informasi tentang preferensi pengguna untuk setiap atribut individu. Karena pengguna dapat memilih salah satu unit pengukuran dari opsi yang diberikan untuk atribut, kami telah membuat kunci utama gabungan menggunakan users_id
dan attribute_id
kolom.
Profil Pengguna
Karena aplikasi ini memungkinkan pengguna untuk memantau cuaca di banyak kota yang mereka inginkan, area subjek ini menangani pengaitan satu atau lebih kota dengan setiap profil pengguna.
city
tabel menyimpan daftar kota dan detail lokasinya (kode pos, negara, koordinat peta). Kolom dalam tabel ini sudah cukup jelas, tetapi ada baiknya untuk menyadari bahwa city_longitude
dan city_latitude
kolom dapat menyimpan nilai positif atau negatif.
user_city
tabel mengaitkan kota dengan profil pengguna. Karena pengguna dapat menambahkan kota ke profil mereka hanya sekali, kami telah membuat kunci utama gabungan menggunakan users_id
dan city_id
kolom.
Apa yang Akan Anda Tambahkan ke Model Data Ini?
Sekarang kita sampai pada bagian di mana Anda memberi tahu kami apa yang akan Anda tambahkan, ubah, atau hapus dalam sebuah model. Apa yang bisa kami tambahkan? Nah, pemanasan global telah menjadi perhatian besar. Penelitian dengan jelas menunjukkan bahwa itu lebih disebabkan oleh aktivitas manusia daripada perubahan alam. Namun, relatif sedikit orang yang menyadari hal ini. Bagaimana kita bisa membuat orang sadar akan perubahan iklim dan pemanasan global? Kami dapat menyertakan fakta tentang perubahan lingkungan dan penyebabnya di aplikasi. Atau mungkin kita bisa memasukkan persentase tutupan pohon di area lokal untuk meningkatkan kesadaran.
Bagaimana menurutmu? Beri tahu kami ide Anda dengan berkomentar di bawah.