我想使用MySQL为我的程序添加字典功能。
它有3个表:products
,languages
和product_dictionary
用户可以选择产品和语言,并在product_dictionary中找到相应的产品名称。
如果products
表是:
products_id | product_name
1 | chocolate
2 | flour
和languages
表是:
languages_id | language_name
1 | english
2 | french
3 | german
我有两个product_dictionary
表格的想法,但我不确定哪个是最好的。
products_id | languages_id | translation
1 | 1 | chocolate
1 | 2 | chocolat
1 | 3 | Schokolade
2 | 1 | flour
2 | 2 | farine
product_id
和language_id
创建复合主键以查找翻译的位置;
或
products_id | english | french | german
1 | chocolate | chocolat | Schokolade
2 | flour | Farine | Mehl
language_name
表中languages
列的值是product_dictionary
表中的列名,而product_id
也是product_dictionary
的主键1}}表。
有人可以给我一些见解吗? 谢谢。
答案 0 :(得分:1)
我强烈推荐第一个选项,原因如下:
可能需要添加新语言,并且选项2需要您更改表格结构,而选项1则只需要插入新行
使用选项1您必须在代码中使用的查询可以在其where
子句中包含两个参数,而使用选项2,您必须构建不同的select
对于每种语言
答案 1 :(得分:1)
我建议你拥有以下数据库架构:
产品
id_product |
1 |
2 |
3 |
语言(和你一样)
languages_id | language_name
1 | english
2 | french
3 | german
product_dictionary(第一个)
products_id | languages_id | translation
1 | 1 | chocolate
1 | 2 | chocolat
1 | 3 | Schokolade
2 | 1 | flour
2 | 2 | farine
您可以在product_dictionary中添加PRIMARY_KEY(products_id,languages_id)。
对于每种语言使用专栏通常不是一个好主意,因为如果你添加100多种语言,它就不容易维护。