Saturday , July 27 2024

Thiết kế cơ sở dữ liệu đa ngôn ngữ

Xây dựng website đa ngôn ngữ có nhiều vấn đề, 1 trong số đó là cách lưu trữ nội dung trong CSDL cho từng ngôn ngữ. Mình xin chia sẻ một vài giải pháp thông dụng như sau:

1. Hướng tiếp cận dạng cột

Cách này khá phổ biến, nhưng chỉ dùng cho hệ thống nhỏ và ít ngôn ngữ, cơ bản là tạo ra nhiều cột lưu trữ nội dung từng ngôn ngữ.

Ví dụ:

Categories- id- name_en- name_vi- description_en- description_vi- created_at

Ưu điểm:

Không bị trùng dữ liệu vì chĩ có 1 dòng cho mỗi mẫu tin và chỉ có các cột ngôn ngữ được nhân bản. Dễ thực hiện

Nhược điểm:

Khó duy trì. Dù dễ dàng với 2-3 ngôn ngữ nhưng không thích hợp khi có nhiều ngôn ngữ hoặc nhiều cột. Khó thêm ngôn ngữ mới

2. Hướng tiếp cận nhiều dòng

Tương tự như cách ở trên, cách này tạo ra nhiều dòng dữ liệu thay vì nhân bản các cột theo ngôn ngữ
Categories- id- name- description- created_at Cách này có bao nhiêu ngôn ngữ thì sẽ có bấy nhiêu dòng cho cùng 1 mẫu tin

Ưu điểm:

Dễ thêm ngôn ngữ mới

Nhược điểm:

Nhiều nội dung trùng tại các cột chứa nội dung chung không cần chuyển ngữ

3. Hướng tiếp cận dạng bảng

Cách này phức tạp hơn 2 cách trên, nhưng thích hợp cho website động, có nhiều ngôn ngữ và có ý định thêm ngôn ngữ mới dễ dàng. Thay vì chỉ có 1 bảng dùng chuyển ngữ cho tất cả các bảng khác, bây giờ sẽ có 1 bảng dùng chuyển ngữ tưng ứng với 1 bảng. Di chuyển các cột cần chuyễn ngữ sang bảng dùng chuyển ngữ, còn lại các cột dùng chung (các cột không cần chuyển ngữ)
Categories- id- created_at

Languages
– id
– name

Category_language
– id
– language_id
– category_id
– name
– description

Ưu điểm:

Dễ thêm ngôn ngữ mới

Dễ truy vấn

Tên các cột được giữ nguyên

Không bị trùng lặp dữ liệu

Nhược điểm:

Tạo ra nhiều bảng chuyển ngữ tương ứng với các bảng

About Ngo Thang IT

Check Also

php on macos

Hướng dẫn cài đặt PHP (8.2, 7.4, 5.6) trên MacOS đơn giản

PHP là viết tắt của HyperText Preprocessor và là ngôn ngữ lập trình phía máy …

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Đăng Ký Nhận Tin Qua Email

Nhận thông tin bổ ích về WordPress, Hosting, Thủ thuật website, Download miễn phí....và các phần quà hấp dẫn qua email.

* là bắt buộc