sql >> Database teknologi >  >> RDS >> PostgreSQL

Bedste praksis til lagring af flersprogede strenge

Sørg først for, at databasens landestandard kan beskæftige sig med forskellige sprog. Brug en UTF-8 server-kodning. Indstil eventuelt LC_COLLATE = 'C' at være på neutral grund eller bruge en sortering for at dit første sprog har en standard sorteringsrækkefølge. Start med at læse kapitlet Sorteringssupport i manualen.

Jeg vil kraftigt anbefale, at du bruger den seneste version af PostgreSQL (9.1 i skrivende stund), fordi den har overlegen sorteringsunderstøttelse.

Hvad angår tabelstrukturen :hold det simpelt. Det lyder som om, at der er et lavt, fast antal sprog at beskæftige sig med. Du kunne bare have en kolonne for hvert sprog så:

CREATE TABLE txt (
  txt_id serial PRIMARY KEY
 ,txt    text NOT NULL -- master language NOT NULL?
 ,txt_fr text -- others can be NULL?
 ,txt_es text
 ,txt_de text
);

Dette er ret effektivt, selv med mange sprog. NULL-lagring er meget billig.
Hvis du har et varierende antal sprog at håndtere, kan en separat tabel være den bedre løsning. Denne løsning forudsætter, at du har et "mastersprog", hvor strengen altid er til stede:

CREATE TABLE txt (
  txt_id serial PRIMARY KEY
 ,txt    text NOT NULL -- master language NOT NULL?
);

CREATE TABLE lang (
  lang_abbr text PRIMARY KEY -- de, es, fr, ...
 ,lang      text NOT NULL
 ,note      text
);

Eller, hvis en (to-bogstavs) forkortelse er nok, skal du bare oprette en enum type for at identificere sproget.

CREATE TABLE txt_trans (
  txt_id    int REFERENCES txt(txt_id) ON UPDATE CASCADE ON DELETE CASCADE
 ,lang_abbr text REFERENCES lang(lang_abbr) ON UPDATE CASCADE
 ,txt       text NOT NULL -- master language NOT NULL?
 ,CONSTRAINT txt_trans_pkey PRIMARY KEY (txt_id, lang_abbr)
);

Ikke At behandle mastersproget specielt og holde alle sprogvarianter i samme tabel kan gøre håndteringen i din app lettere. Men det afhænger virkelig af dine krav.




  1. Tilføj eller vedhæft et json-objekt i et andet json-objekt json-objekt med plsql

  2. SQLAlchemy, Psychopg2 og Postgresql COPY

  3. Sådan indsætter / henter du en fil gemt som en BLOB i en MySQL db ved hjælp af python

  4. Vælg Records flere gange fra tabellen