ما هي الطريقة الأكثر عملية لإعداد قاعدة بيانات للمحتوى متعدد اللغات؟

3

ما زلت أتعلم MySQL وأثناء العمل على مشروع جديد يتطلب محتوى متعدد اللغات ، فقد تعثرت على سؤال حول الطريقة الأكثر عملية لتصميم قاعدة بيانات تدعم هذه الوظيفة وتكون في الوقت نفسه قاعدة البيانات الأكثر كفاءة اقامة.

الطاولة content_quote :

+--------------+-----------------------+------+-----+---------------------+-----------------------------+
| Field        | Type                  | Null | Key | Default             | Extra                       |
+--------------+-----------------------+------+-----+---------------------+-----------------------------+
| quote_id     | int(11) unsigned      | NO   | PRI | NULL                | auto_increment              |
| url_slug     | varchar(255)          | NO   |     | NULL                |                             |
| author_id    | mediumint(8) unsigned | NO   |     | NULL                |                             |
| quote        | mediumtext            | NO   |     | NULL                |                             |
| category     | varchar(15)           | NO   |     | NULL                |                             |
| likes        | int(11) unsigned      | NO   |     | 0                   |                             |
| publish_time | datetime              | NO   |     | 0000-00-00 00:00:00 | on update CURRENT_TIMESTAMP |
| locale       | char(5)               | NO   |     | NULL                |                             |
+--------------+-----------------------+------+-----+---------------------+-----------------------------+

الآن هنا يمكنني فقط الحصول على قيمة لغة قياسية مثل en-US في حقل اللغة ، لكن لدي عدد غير قليل من الجداول مثل هذا ولست متأكدًا من المسار الصحيح ، إما أن تتركه على هذا النحو أو قم بإنشاء locale جدول لتخزين جميع الإعدادات المحلية وتغيير التيار locale المجال ليكون tinyint 2 مع مفتاح خارجي يذهب إلى الجدول الجديد الذي يخزن جميع الإعدادات المحلية.

مثال:

+-----------+------------------+------+-----+---------+-------------------+
| Field     | Type                | Null | Key | Default | Extra          |
+-----------+------------------+------+-----+---------+-------------------+
| locale_id | tinyint(2) unsigned | NO   | PRI | NULL    | auto_increment |
| locale    | char(50)            | NO   |     | NULL    |                |
+-----------+------------------+------+-----+---------+-------------------+

أكثر من الإجابة نفسها ، أنا مهتم بمعرفة مزايا / عيوب كلا النهجين.

1 إجابة

0

مزايا وعيوب جديدة locales الجدول (يتم تبديلها عندما لا locales يستخدم الجدول):

مزايا

  • أضف قائمة باللغات المحلية المتاحة في حالة عدم استخدام بعضها حتى الآن. يسمح لك بإنشاء قائمة منسدلة للغات المتاحة في شكل ما.
  • امنع الأخطاء المطبعية حيث لن يكون هناك سوى خطأ واحد en_US القيمة المتاحة.

سلبيات

  • JOIN على الطاولة الجديدة طوال الوقت فقط للحصول على سلسلة مثل en_US .

ضع في اعتبارك أن الفضاء لن يكون مشكلة. لا تحاول اتخاذ قاعدة قرار على 5 أحرف مقابل حجم int صغير للغاية.

:مؤلف
فوق
قائمة طعام