Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Mô hình dữ liệu cho ứng dụng thời tiết

Rất nhiều người sử dụng các ứng dụng thời tiết trên thiết bị di động để lập kế hoạch trong ngày của họ - hoặc ít nhất là quyết định xem họ có cần mang ô hay không! Loại mô hình dữ liệu nào nằm bên dưới các chương trình phổ biến này?

Tất cả chúng ta đều muốn biết thời tiết khó chịu như thế nào trước khi bước ra ngoài. Các ứng dụng Windows, iOS và Android cung cấp cho chúng tôi thông tin chính xác và đáng tin cậy về điều kiện thời tiết hiện tại. Bài viết này giải thích mô hình dữ liệu chi tiết có thể được sử dụng cho các ứng dụng như vậy.

Ứng dụng Thời tiết cần những chức năng gì?

Hầu như ai có điện thoại thông minh cũng có ít nhất một ứng dụng thời tiết. Các ứng dụng này cung cấp thông tin thời tiết chi tiết, giúp người dùng chuẩn bị cho mọi thay đổi thời tiết mà họ có thể gặp phải trong ngày.

Ứng dụng thời tiết nên làm gì?

  • Báo cáo các điều kiện thời tiết hiện tại, bao gồm trạng thái tổng thể (tức là có nắng, có mây một phần, có mây, v.v.) nhiệt độ, độ ẩm, tốc độ và hướng gió, nhiệt độ, áp suất không khí và khả năng hiển thị “giống như cảm giác”. Nó cũng phải báo cáo thông tin chung như thời gian mặt trời mọc và lặn cũng như nhiệt độ cao và thấp trong ngày.
  • Hiển thị chi tiết hàng giờ (nhiệt độ, độ ẩm, lượng mưa, tình trạng thời tiết tổng thể) trong 24 giờ tới.
  • Hiển thị dự báo cơ bản (nhiệt độ cao và thấp hàng ngày, điều kiện thời tiết và thời gian mặt trời mọc / lặn) cho mỗi ngày trong một hoặc hai tuần tới.
  • Cho phép người dùng đặt thành phố địa phương của họ và bất kỳ thành phố nào khác mà họ muốn xem thời tiết.
  • Cho phép người dùng xem dữ liệu bằng các đơn vị đo lường mà họ chọn. Ví dụ:người dùng Hoa Kỳ có thể thích nhiệt độ Fahrenheit và tốc độ gió được hiển thị bằng dặm / giờ, nhưng người dùng Canada và châu Âu lại thích độ C và km / giờ.

Hãy nhớ rằng ứng dụng chỉ đang hiển thị dự báo thời tiết và (tùy thuộc vào cài đặt) chuyển đổi đơn vị đo lường. Nó không làm dự báo thực tế; nó chỉ đơn giản là nhận dữ liệu dự báo từ một nguồn khác (chẳng hạn như dịch vụ của chính phủ hoặc cơ quan dự báo thời tiết) và hiển thị nó theo cách ưa thích của người dùng.

Mô hình dữ liệu ứng dụng thời tiết




Tôi đã chia mô hình thành ba lĩnh vực chủ đề:

  1. Weather Logs
  2. User Preferences
  3. User Profiles

Chúng ta sẽ thảo luận về từng lĩnh vực theo thứ tự được liệt kê.

Nhật ký thời tiết

Đây là môn học quan trọng nhất. Bất kỳ ứng dụng thời tiết nào cũng phải nắm bắt các chi tiết cơ bản sau:

  • Nhiệt độ thực tế hiện tại
  • Nhiệt độ “cảm giác như” hiện tại, có thể khác với nhiệt độ thực do các yếu tố thời tiết bổ sung (ví dụ:độ ẩm cao có thể khiến ngày nóng trở nên nóng hơn hoặc ngày lạnh cảm thấy lạnh hơn).
  • Nhiệt độ cao và thấp hàng ngày
  • Dữ liệu điểm sương và / hoặc độ ẩm tương đối
  • Tốc độ gió
  • Hướng gió
  • Áp suất khí quyển
  • Khả năng hiển thị (tức là ngày có sương mù sẽ có khả năng hiển thị thấp hơn ngày quang đãng)
  • Thời gian mặt trời mọc và lặn

Cùng với nhau, chúng cung cấp một cái nhìn tổng thể về tình trạng thời tiết hiện tại. Đây là thông tin sẽ được trình bày cho người dùng, thường là thông qua một hoặc nhiều màn hình trực quan.

Có hai loại thuộc tính cho bất kỳ dự báo thời tiết nào:loại thay đổi mỗi ngày và loại thay đổi xuyên suốt mỗi ngày. Các thuộc tính như thời gian mặt trời mọc và lặn dựa trên các sự kiện xảy ra một lần mỗi ngày, vì vậy thông tin này được ghi lại một lần cho mỗi ngày. Khi nói đến dự báo phạm vi dài (từ 7 đến 15 ngày trước), người dùng phải có đủ thông tin nếu bạn bao gồm nhiệt độ cao và thấp của mỗi ngày, mức độ ẩm và điều kiện thời tiết tổng thể (tức là nắng, nhiều mây, v.v.).

Các thuộc tính như nhiệt độ hiện tại, nhiệt độ “cảm giác như”, tốc độ và hướng gió, áp suất khí quyển và phạm vi tầm nhìn có thể thay đổi trong suốt cả ngày. Chúng phải được ghi lại trong một khoảng thời gian cụ thể, chẳng hạn như mỗi giờ hoặc ba giờ một lần. Đối với mục đích của mô hình này, chúng tôi sẽ giả định khung thời gian là một giờ.

Vì chúng ta có hai loại thuộc tính nên tôi đã đặt hai bảng trong chủ đề này. Đầu tiên, weather_daily_forecast_log , nắm giữ các thuộc tính hàng ngày. Nó chứa các cột sau:

  • city_id - Tham khảo city bảng và biểu thị thành phố áp dụng dữ liệu này.
  • calendar_date - Ngày lịch cho dữ liệu này. Vì bảng này giữ một bản ghi cho mỗi thành phố mỗi ngày, các cột này (city_idcalendar_date ) tạo thành khóa chính tổng hợp cho bảng này.
  • weather_status_id - Tham khảo weather_status và biểu thị tình trạng thời tiết (tức là có mưa, có mây, có mây vài nơi hoặc có nắng).
  • min_temperature - Nhiệt độ tối thiểu (thấp nhất) của ngày hôm đó.
  • max_temperature - Nhiệt độ tối đa (cao nhất) của ngày hôm đó.
  • avg_humidity_in_percentage - Mức trung bình độ ẩm tương đối trong không khí ngày hôm đó. (Lượng nước mà không khí có thể giữ được tương ứng với nhiệt độ của nó.)
  • sunrise_time - Cột dấu thời gian lưu trữ thời gian mặt trời mọc.
  • sunset_time - Cột dấu thời gian lưu trữ thời gian hoàng hôn.
  • last_updated_at - Lưu giữ ngày và giờ (dưới dạng dấu thời gian) khi bản ghi được cập nhật lần cuối.
  • source_system - Tên của nguồn dự báo thời tiết của chúng tôi. Hai cột cuối cùng này được giữ cho mục đích kiểm tra.

weather_hourly_forecast_log bảng chứa tất cả các thuộc tính có thể thay đổi trong ngày. Chúng tôi coi các thuộc tính này là một bản ghi cho một khung thời gian cụ thể. Các cột là:

  • id - Phím thay thế cho bảng.
  • city_id - Thành phố liên quan.
  • start_timestamp - Cột dấu thời gian cho biết thời điểm bắt đầu khung thời gian này.
  • end_timestamp - Cột dấu thời gian cho biết thời điểm khung thời gian này kết thúc.
  • weather_status_id - Tình trạng thời tiết tổng thể trong khung thời gian.
  • temperature - Nhiệt độ hiện tại cho khung thời gian.
  • feels_like_temperature - Nhiệt độ "giống như" cho khung thời gian. Điều này có thể bị ảnh hưởng bởi nhiều yếu tố, bao gồm gió, mưa và độ ẩm cao hoặc thấp. Thông tin này mang lại ấn tượng thực tế hơn về điều kiện thời tiết hiện tại.
  • humidity_in_percentage –Cột này chứa lượng (phần trăm) độ ẩm trong không khí.
  • wind_speed_in_mph - Giữ tốc độ gió tính bằng mph (dặm / giờ).
  • wind_direction - Cột văn bản này lưu trữ một hoặc hai ký tự biểu thị hướng gió (N, NW, NE, S, W, SW, v.v.)
  • pressure_in_mmhg - Lưu trữ các giá trị áp suất không khí, tính bằng mmHg.
  • visibility_in_mph - Lưu trữ các giá trị phạm vi khả năng hiển thị, tính bằng dặm.

Các bảng này sẽ chứa dữ liệu mới nhất trong một khung thời gian cụ thể. Đôi khi, một dự báo trong tương lai có thể được đưa ra và sau đó được thay đổi. Trong những trường hợp như vậy, bản ghi hiện có cho ngày hoặc khung thời gian có liên quan sẽ bị ghi đè bởi bản mới nhất. Ngoài ra, bạn sẽ nhận thấy rằng chúng tôi chỉ lưu trữ các thuộc tính trong một đơn vị đo lường (ví dụ:mph) cho mỗi thuộc tính. Để tiết kiệm bộ nhớ, chúng tôi sẽ chỉ lưu trữ một bản ghi cho mỗi thuộc tính và để giao diện người dùng chuyển đổi các bản ghi này thành các đơn vị ưa thích của người dùng khi cần thiết.

Tùy chọn người dùng

Lĩnh vực chủ đề này chủ yếu xử lý các tùy chọn của người dùng đối với các đơn vị đo lường. Hầu hết các cột đều tự giải thích, vì vậy chúng tôi sẽ chỉ giải thích ngắn gọn mục đích của mỗi bảng.

users bảng chứa thông tin cơ bản về người dùng, như địa chỉ email và số điện thoại. id cột chỉ định một số duy nhất cho mọi người dùng đăng ký với ứng dụng.

Thuộc tính attribute bảng lưu trữ danh sách các thuộc tính, như nhiệt độ, tốc độ gió, hướng gió, áp suất khí quyển, v.v.

measuring_units bảng lưu trữ danh sách tất cả các đơn vị đo lường, với tên, mô tả và attribute_id tương ứng của chúng .

user_preferences bảng ánh xạ mối quan hệ giữa người dùng và tùy chọn đơn vị đo lường. Lưu ý rằng chúng tôi có thể lưu trữ thông tin về tùy chọn của người dùng đối với từng thuộc tính riêng lẻ. Vì người dùng có thể chọn bất kỳ một đơn vị đo lường nào trong số các tùy chọn đã cho cho một thuộc tính, chúng tôi đã tạo khóa chính tổng hợp bằng cách sử dụng users_idattribute_id cột.

Hồ sơ Người dùng

Vì ứng dụng cho phép người dùng theo dõi thời tiết ở bao nhiêu thành phố tùy thích, nên lĩnh vực chủ đề này xử lý việc liên kết một hoặc nhiều thành phố với từng hồ sơ người dùng.

city bảng lưu trữ danh sách các thành phố và chi tiết vị trí của chúng (mã bưu chính, quốc gia, tọa độ bản đồ). Các cột trong bảng này là tự giải thích, nhưng bạn nên nhận ra rằng city_longitudecity_latitude cột có thể giữ giá trị dương hoặc âm.

user_city bảng liên kết các thành phố với hồ sơ người dùng. Vì người dùng chỉ có thể thêm một thành phố vào hồ sơ của họ một lần, chúng tôi đã tạo khóa chính tổng hợp bằng cách sử dụng users_idcity_id cột.

Bạn sẽ thêm gì vào mô hình dữ liệu này?

Bây giờ chúng ta đến phần mà bạn cho chúng tôi biết bạn sẽ thêm, thay đổi hoặc xóa những gì trong một mô hình. Chúng ta có thể thêm gì? Chà, sự nóng lên toàn cầu đã trở thành một mối quan tâm lớn. Nghiên cứu cho thấy rõ ràng rằng nó được gây ra bởi các hoạt động của con người hơn là những thay đổi tự nhiên. Tuy nhiên, tương đối ít người nhận ra điều này. Làm thế nào chúng ta có thể làm cho mọi người nhận thức được sự thay đổi khí hậu và sự nóng lên toàn cầu? Chúng tôi có thể đưa thông tin thực tế về những thay đổi môi trường và nguyên nhân của chúng trên ứng dụng. Hoặc có thể chúng ta có thể bao gồm phần trăm độ che phủ của cây trong một khu vực địa phương để nâng cao nhận thức.

Bạn nghĩ sao? Hãy cho chúng tôi biết ý kiến ​​của bạn bằng cách bình luận bên dưới.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bắt đầu với Cloud Firestore cho iOS

  2. Chuyển từ AnswerHub sang WordPress:Câu chuyện về 10 công nghệ

  3. Alibaba Cloud

  4. Cẩn thận với dữ liệu sai lệch từ SET STATISTICS IO

  5. API REST Python với Flask, Connexion và SQLAlchemy - Phần 3