多语言数据库诞生地设计

时间:2016-03-21 08:45:32

标签: mysql multilingual

我有一个数据库,必须与2个国家/地区,IT和RO合作。 我有一个名为User的表,它也包含了诞生地。

User
| id | name | surname | birthplace |

| 1  | Test | Test    | New York   |

我还有两张桌子用于出生地,一张用于IT用户,一张用于RO。我无法将所有城市存储在一个表中,因为IT和RO具有不同的层次结构(地区,省,区......)。所以我的第一个想法是为每个国家做一个出生地,如下:

User
    | id | name | surname | birthplaceIT | birthplaceRO |

问题在于,每次添加国家/地区时,我都必须修改数据库和应用程序。另一方面,我不能成为一个出生地"表格,因为IT和RO地址不兼容。

所以,我不能这样做:

Birthplace
| idUser | country | city |

因为我不能推荐" city" IT市场表和RO表。

建议?

EDIT。在我的PHP应用程序中,我使用Symfony和Doctrine,一个ORM,所以我需要用户和CityID之间的外键约束!

1 个答案:

答案 0 :(得分:0)

不要将出生地存储在User表格中,而是将其更改为名称birthplace ID - 它可以只是整数,但您可以做更复杂的事情并使用唯一代码(您自己的代码)或者可能有"适当的地理代码)。

然后,您可以拥有每个国家/地区特定出生地的表格,并根据出生地ID连接表格。这样,您可以将每个国家/地区特定的地理层次结构保留在自己的表如果您需要添加其他国家/地区,则只需为该国家/地区创建另一个表格,然后将其加入User