在被隔绝的桌上的主要钥匙

时间:2016-11-13 11:32:17

标签: mysql database relational-database

我无法真正找到问题的解决方案,问题是:我真的必须在这里创建一个主键吗?

详情

我的网站在一个名为translations的数据库中有一个表格,其中我用不同的翻译放置每个单句/单词。我有这个结构:

id  | lang | text
-------------------
01  |  01  | hello
01  |  02  | ciao
01  |  03  | salut
02  |  01  | surname
02  |  02  | cognome
02  |  03  | nom

字段id与单词相关联,字段lang是一个表示翻译的数字(01 =英语,02 =意大利语,03 =法语)和text是该词的翻译。

在这种情况下,如果我需要(例如)单词 hello ,我知道它有id = 1然后我可以选择语言。

这是创建这种表的好方法吗?我不确定,但我发现这很简单,因为我可以致电:

SELECT text FROM tablename WHERE id = ? AND lang = ?
你可以看到吗?因为我用PDO绑定了params。 'lang'是从cookie(01,02,03)中检索的常量。

重要说明:此处我没有主键,我只将idlang设置为唯一

1 个答案:

答案 0 :(得分:5)

如果您想保留表格结构,并且每个单词只有一个每种语言的翻译,那么您可以使用id + lang作为主键

CREATE TABLE translations
(
   id int,
   lang int,
   text varchar(150) NOT NULL,
   PRIMARY KEY (id, lang) 
);