我仍在学习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
存储所有区域设置并更改当前区域设置的表
现场
待处理字段
tinyint 2
使用外键进入存储所有区域设置的新表。
例子:
+-----------+------------------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------------------+
| locale_id | tinyint(2) unsigned | NO | PRI | NULL | auto_increment |
| locale | char(50) | NO | | NULL | |
+-----------+------------------+------+-----+---------+-------------------+
除了答案本身,我还想知道这两种方法的优缺点。