ما زلت أتعلم 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 | |
+-----------+------------------+------+-----+---------+-------------------+
أكثر من الإجابة نفسها ، أنا مهتم بمعرفة مزايا / عيوب كلا النهجين.