Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pemodelan basis data untuk tujuan internasional dan multibahasa

Berikut adalah cara saya mendesain database:

Visualisasi oleh DB Designer Fork

i18n tabel hanya berisi PK, sehingga tabel apa pun hanya perlu merujuk PK ini untuk menginternasionalkan bidang. Tabel translation kemudian bertanggung jawab untuk menautkan ID umum ini dengan daftar terjemahan yang benar.

locale.id_locale adalah VARCHAR(5) untuk mengelola keduanya en dan en_US Sintaks ISO .

currency.id_currency adalah CHAR(3) untuk mengelola sintaks ISO 4217 .

Anda dapat menemukan dua contoh:page dan newsletter . Keduanya dikelola admin entitas perlu menginternasionalkan bidangnya, masing-masing title/description dan subject/content .

Berikut ini contoh kueri:

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

Perhatikan bahwa ini adalah model data yang dinormalisasi. Jika Anda memiliki kumpulan data yang besar, mungkin Anda dapat memikirkan mendenormalisasinya untuk mengoptimalkan kueri Anda. Anda juga dapat bermain dengan indeks untuk meningkatkan kinerja kueri (dalam beberapa DB, kunci asing diindeks secara otomatis, mis. 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. unduh cuplikan RDS

  2. Apa yang terjadi jika koneksi MySQL terus menerus tidak ditutup pada halaman PHP?

  3. Cara memecahkan masalah pendefinisi MySQL

  4. Cara Terbaik untuk Memperbaiki Tabel InnoDB yang Rusak di MySQL

  5. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:di mysql