我无法真正找到问题的解决方案,问题是:我真的必须在这里创建一个主键吗?
详情
我的网站在一个名为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)中检索的常量。
重要说明:此处我没有主键,我只将id
和lang
设置为唯一
答案 0 :(得分:5)
如果您想保留表格结构,并且每个单词只有一个每种语言的翻译,那么您可以使用id
+ lang
作为主键
CREATE TABLE translations
(
id int,
lang int,
text varchar(150) NOT NULL,
PRIMARY KEY (id, lang)
);