PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

बहुभाषी तारों को संग्रहीत करने के लिए सर्वोत्तम अभ्यास

पहले सुनिश्चित करें कि डेटाबेस लोकेल विभिन्न भाषाओं से निपट सकते हैं। UTF-8 सर्वर-एन्कोडिंग का उपयोग करें। वैकल्पिक रूप से सेट करें LC_COLLATE = 'C' तटस्थ आधार पर होने के लिए या अपनी पहली भाषा के लिए एक डिफ़ॉल्ट सॉर्ट ऑर्डर के लिए एक संयोजन का उपयोग करें। अध्याय Collation Support पढ़कर शुरुआत करें। मैनुअल में।

मैं दृढ़ता से सुझाव दूंगा कि आप PostgreSQL के नवीनतम संस्करण (लेखन के समय 9.1) का उपयोग करें क्योंकि इसमें बेहतर संयोजन समर्थन है।

जहां तक ​​तालिका संरचना . का संबंध है :इसे सरल रखें। ऐसा लगता है कि निपटने के लिए भाषाओं की एक कम, निश्चित संख्या है। तब आपके पास प्रत्येक भाषा के लिए एक कॉलम हो सकता है:

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
);

यह कई भाषाओं के साथ भी काफी प्रभावी है। नल स्टोरेज बहुत सस्ता है।
यदि आपके पास निपटने के लिए अलग-अलग संख्या में भाषाएं हैं, तो एक अलग तालिका बेहतर समाधान हो सकती है। यह समाधान मानता है कि आपके पास "मास्टर भाषा" है, जहां स्ट्रिंग हमेशा मौजूद रहती है:

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
);

या, यदि एक (दो-अक्षर) संक्षिप्त नाम पर्याप्त है, तो बस एक enum टाइप करें भाषा की पहचान करने के लिए।

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)
);

नहीं मास्टर भाषा को विशेष मानना ​​और सभी भाषा प्रकारों को एक ही तालिका में रखना आपके ऐप में हैंडलिंग को आसान बना सकता है। लेकिन यह वास्तव में आपकी आवश्यकताओं पर निर्भर करता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में डेटाबेस ट्रिगर का निष्पादन संदर्भ

  2. पोस्टग्रेज में pg_trgm . के साथ समानता कार्य

  3. तिथि के अनुसार अनुक्रम, सबक्वेरी के साथ पोस्टग्रेस्क्ल के बाद की तारीख से पहले और तारीख जोड़ें

  4. क्या मैं postgresql के फ़ंक्शन में \ copy कमांड का उपयोग कर सकता हूं?

  5. PostgreSQL में महीने के हिसाब से चयन