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

Mô hình cơ sở dữ liệu cho các mục đích quốc tế và đa ngôn ngữ

Đây là cách tôi thiết kế cơ sở dữ liệu:

Trực quan hóa bởi DB Designer Fork

i18n bảng chỉ chứa một PK, vì vậy bất kỳ bảng nào cũng phải tham chiếu PK này để quốc tế hóa một trường. Bảng translation sau đó chịu trách nhiệm liên kết ID chung này với danh sách bản dịch chính xác.

locale.id_locale là một VARCHAR(5) để quản lý cả hai enen_US cú pháp ISO .

currency.id_currency là một CHAR(3) để quản lý cú pháp ISO 4217 .

Bạn có thể tìm thấy hai ví dụ:pagenewsletter . Cả hai thứ này do quản trị viên quản lý entites cần quốc tế hóa các trường của chúng, tương ứng là title/descriptionsubject/content .

Đây là một truy vấn mẫu:

select
  t_subject.tx_translation as subject,
  t_content.tx_translation as content

from newsletter n

-- join for subject
inner join translation t_subject
  on t_subject.id_i18n = n.i18n_subject

-- join for content
inner join translation t_content
  on t_content.id_i18n = n.i18n_content

inner join locale l

  -- condition for subject
  on l.id_locale = t_subject.id_locale

  -- condition for content
  and l.id_locale = t_content.id_locale

-- locale condition
where l.id_locale = 'en_GB'

  -- other conditions
  and n.id_newsletter = 1

Lưu ý rằng đây là mô hình dữ liệu chuẩn hóa. Nếu bạn có một tập dữ liệu khổng lồ, có thể bạn có thể nghĩ đến việc không chuẩn hóa nó để tối ưu hóa các truy vấn của bạn. Bạn cũng có thể sử dụng các chỉ mục để cải thiện hiệu suất truy vấn (trong một số DB, khóa ngoại được lập chỉ mục tự động, ví dụ: MySQL / InnoDB ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hiển thị ngày tháng ở định dạng iso 8601 với PHP

  2. Kết nối với máy chủ mysql mà không cần sudo

  3. xóa hàng trong cơ sở dữ liệu của tôi bằng php pdo

  4. Làm thế nào để sử dụng Spring Boot với cơ sở dữ liệu MySQL và JPA?

  5. Kết nối cơ sở dữ liệu MySQL động cho Entity Framework 6