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

Thiết kế CSDL đa ngôn ngữ với MySQL

Web đa ngôn ngữ không còn xa lạ gì với công nghệ web 2.0 nữa, không chỉ website lớn mà cả những website nhỏ và trung bình cũng có nhu cầu sử dụng đa ngôn ngữ để giúp cho người dùng có thể đọc được, điều này giúp cho website giữ được lượng khách truy cập và sẽ xuất hiện nhiều khách hàng tiềm năng hơn.

Mục lục

  • 1. Web đa ngôn ngữ là gì?
  • 2. Cách thiết kế CSDL website đa ngôn ngữ
    • Dịch toàn bộ bài viết
    • Dịch một số bài viết
  • 3. Lời kết

1. Web đa ngôn ngữ là gì?

Web đa ngôn ngữ là web có thể xem ở nhiều ngôn ngữ khác nhau, đây là dạng web dành cho những trang tin tức, thương mại điện tử hoặc những website muốn đánh vào nhiều quốc gia khác nhau trên thế giới.

Để xây dựng một website đa ngôn ngữ thì có hai vấn đề chính mà lập trình viên (Coder) và khách hàng (Customer) cần phải chú ý như sau:

  • Khách hàng: Đòi hỏi phải dịch hầu hết các bài viết trong website nên tốn nhiều thời gian và tiền bạc. Tuy nhiên nếu khách hàng muổn website chỉ dịch một số bài thôi thì điều này cần phải bàn bạc thêm với Coder để họ xử lý cho bạn.
  • Lập trình viên: Bạn phải dựa vào yêu cầu của khách hàng và từ đó phân tích được độ lớn của dự án mà chọn giải pháp tối ưu nhất có thể. Thông thường những website nhỏ thì ta sử dụng PHP và MySQL để xây dựng luôn.

Nói chung quy lại cho dễ hiểu thì trong bài này mình sẽ hướng dẫn các bạn cách thiết kế CSDL đơn giản cho một website đa ngôn ngữ.

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

2. Cách thiết kế CSDL website đa ngôn ngữ

Như mình phân tích ở trên thông thường có hai dạng yêu cầu web đa ngôn ngữ đó là:

  • Web dịch toàn bộ bài
  • Web chỉ dịch một số bài

Dịch toàn bộ bài viết

Trường hợp này ta có một số cách thiết kế như sau:

Cách 1: Mỗi table ta sẽ lưu số trường bằng tương ứng với số ngôn ngữ. Ví dụ website làm 3 ngôn ngữ thì mình lưu trường title là title_entitle_vititle_cn. Như vậy nếu mở rộng thì sẽ rất khó khăn vì ta phải vào hệ thống thêm từng field.

Cách 2: Mỗi field ta sẽ lưu dạng thẻ xml dạng <lang>nội dung</lang>. Ví dụ <vi>Nội dung</vi><en>Content</en>. Với cách lưu này khi mở rộng ta không cần phải bổ sung field. Tuy nhiên có hai điểm yếu, thứ nhất nếu dữ liệu quá nhiều vượt quá mức lưu trữ của MySQL thì sẽ mất dữ liệu, thứ hai tuy nhiên ban phải sử dụng thêm PHP để lập trình thật chặc chẽ (dùng Regular Expression để bóc tách).

Cách 3: Mỗi table ta sẽ lưu trữ thêm một table đa ngôn ngữ và một table liên kết nữa. Ví dụ có table News(id, titlte, content, status) với hai field title và content là đa ngôn ngữ thì ta bổ sung thêm table language như hình sau:

web da ngon ngu php png

Với cách lưu trữ này khi ban thêm mới một ngôn ngữ thì chỉ cần bổ sung dữ liệu vào bảng Language.

Dịch một số bài viết

Với yêu cầu này thì hơi rườm rà nên mình đưa ra một cách đơn giản để các bạn tham khảo.

Chúng ta chỉ cần một bảng và trong bảng đó sẽ có một số field liên hệ với nhau như sau: News (id, title, content, language, parent_id)

Giả sử mình chọn ngôn ngữ tiếng Việt làm ngôn ngữ chính thì khi thêm một bài viết mới nếu bài này dành cho tiếng Việt thì ta không cần chọn parrent_id, ngược lại nếu là ngôn ngữ khác thì ta phải chọn parent_id (chính là bài tiêng Việt).

Lúc này dư liệu như sau:

web da ngon ngu php 2 png

Như vậy ta phải dựa vào ha field language và parrent_id đẻ xử chuyển ngôn ngữ cho thật chính xác.

Lưu ý: Để xử lý nhuần nhuyễn và chính xác các cách trên thì đòi hỏi ban phải thành thạo PHP, MySQL, Javascript để xử lý phía backend lẫn frontend.

3. Lời kết

Như vậy trong bài này mình đã giới thiệu web đa ngôn ngư là gì và đưa ra một số cách lưu trữ CSDL tương ứng cho từng trường hợp cụ thể. Tuy nhiên đó là ý kiến riêng của bạn thân mình nên có thể nó không hay lắm, vì vậy nếu bạn có cách khác hay hơn thì xin hãy bổ sung bằng cách bình luận bên dưới để mình có thể đưa vào bài viết giúp hoàn thiện hơn.

=============================
* 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