Thứ Tư, 26 tháng 7, 2023

Không lưu avatar người dùng mà vẫn hiển thị đúng hình

Mục lục

  • Tại sao lại cần chức năng không cần lưu avatar trong database?
  • Lời kết:

Tại sao lại cần chức năng không cần lưu avatar trong database?

Thông thường khi các bạn thiết kế CSDL bảng người dùng sẽ có một trường avatar. Giả sử hệ thống của bạn có phần comment và khi load comment lên thông thường các bạn sẽ JOIN với bảng user để lấy hình đại diện. Như bạn biết comment thì số lượng của nó rất là nhiều và thành viên cũng không kém. Vậy có cách nào tối ưu cho việc load hơn không? Để trả lời câu hỏi này thì trong bài này chúng ta cùng nhau thảo luận vấn đề này nhé.

Điều chắc chắn:

  • Mỗi người dùng sẽ có một id (khóa chính) riêng biệt
  • Mỗi người dùng sẽ có một mốc thời gian đăng ký thành viên

Với hai yếu tố này thì ta hoàn toàn có thể xây dựng một hệ thống không cần lưu đường dẫn avatar mà vẫn có đúng hình. Giả sử tôi có các user như sau:

  • thehalfheart (id = 1) (20-11-2013)
  • nvcuongsp (id = 2) (20-11-2013)
  • mrcuongwinter (id = 3) (21-11-2013)

Như vậy tôi sẽ chọn cấu trúc folder để lưu hình nhu sau:

Bài viết này được đăng tại [tranvanbinh.vn]

  • upload/avatar/20_11_2013/1.jpg => avatar của thehalfheart
  • upload/avatar/20_11_2013/2.jpg => avatar của nvcuongsp
  • upload/avatar/21_11_2013/3.jpg => avatar của mrcuongwinter

Rõ ràng không hề có sự trùng thông tin đúng không các bạn. Như vậy trong bảng comment mình cần lưu những thông tin gì để có thể lấy được hình? Ta sẽ cần:

  • id thành viên
  • tên đăng nhập
  • ngày tham gia của thành viên

Như vậy trong bảng comment ta sẽ lưu 3 trường (id_user | username | add_date). Dựa vào 3 thông số này ta hoàn toàn có thể load đúng hình avatar mà không cần thiết phải join vào bảng User.

Dựa vào đâu mà tôi đưa ra giải pháp trên? Tôi xin nói rằng trong thực tế tôi đã xây dựng cách này rất nhiều nên hôm nay tôi chia sẽ cho các bạn nhằm giúp các bạn có một cách nhìn khác hơn đó là không phải bất cứ cai gì đều phải lưu vào database mà ta có thể đưa ra một quy luật nhất định cho hệ thống. Tuy nhiên để làm được như vậy thì yêu cầu hệ thống các bạn viết phải thật sự logic mới không có lỗi.

Bạn có thắc mắc rằng tại sao tôi lại chọn lưu 3 trường (id_user, username, add_date)? Đó là tại vì 3 trường này người dùng sẽ không thay đổi trong quá tình sử dụng hệ thống, tức là người dùng sẽ không có chức năng sửa tên đăng nhập, sửa ngày thêm và sửa id. Đây cũng chính là điểm yếu của hệ thống. Nhưng bản thân tôi nghĩ đó không phải là vấn đề. Rất ít hệ thống cho phép sửa những thông tin đó.

Lời kết:

Trong bài viết này tôi viết mang tính thảo luận nên các bạn có quyền phân tích và phản bác ý kiến của tôi. Và vì là thảo luận nên tôi có quyền biện hộ ý kiến của mình. Mong rằng không có những lời lẽ không đẹp cho bài viết này.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master