如果以下问题可能有更好/不同/常见的解决方案,我正在寻找意见:
我有一个产品数据库,其中包含英文(此应用程序的默认语言)产品名称,如果可用,我需要名称的翻译。
目前我有这个设置:
产品表
CREATE TABLE products
(
id serial NOT NULL,
"name" character varying(255) NOT NULL,
CONSTRAINT products_pkey PRIMARY KEY (id)
)
和产品本地化表
CREATE TABLE products_l10n
(
product_id serial NOT NULL,
"language" character(2) NOT NULL,
"name" character varying(255) NOT NULL,
CONSTRAINT products_l10n_pkey PRIMARY KEY (product_id, language),
CONSTRAINT products_l10n_product_id_fkey FOREIGN KEY (product_id)
REFERENCES products (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
我使用以下查询检索本地化产品列表(在本例中为德语),并回退到默认英文名称:
SELECT p.id, COALESCE(pl.name, p.name)
from products p LEFT
JOIN products_l10n pl ON p.id = pl.product_id AND language = 'de';
SQL 代码是 postgres 方言。数据存储为 UTF-8。