Thursday , December 13 2018
Trang chủ / Lập trình / Thiết kế cơ sở dữ liệu đa ngôn ngữ

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ụ:

1
2
3
4
5
6
7
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ữ

1
2
3
4
5
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ữ)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

Kết luận

Giải pháp tốt nhất là giải pháp phù hợp nhất với từng website, phù hợp nhất với cách làm việc và duy trì của bạn

Nếu bạn có hoặc tìm thấy cách nào khác, vui lòng chia sẽ với tôi và mọi người.

Xin cám ơn!

Tham khảo thêm

http://www.ibm.com/developerworks/web/library/wa-dbdsgn2.html

About admin

Check Also

Hướng dẫn sử dụng plugin PPO-Call-To-Actions

Chào mừng bạn đã quay trở lại blog Ngô Thắng! Hôm nay, bạn sẽ được học cách tối …

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