word_id INTEGER REFERENCES word(id) 实际上并没有在 MySQL 上创建外键。即使您使用的是 InnoDB,它也需要明确的 FOREIGN KEY 声明。
另外,我可能会为两个表的 ID 使用自动编号,然后将其标记为主键。
因此,考虑到这两个因素,再加上 mpacona 关于多个翻译需要多对多关系的说明:
CREATE TABLE word (
word_id UNSIGNED INTEGER AUTOINCREMENT PRIMARY KEY,
entry TEXT,
pos VARCHAR(50)
);
CREATE TABLE translation (
translation_id UNSIGNED INTEGER AUTOINCREMENT PRIMARY KEY,
word_id UNSIGNED INTEGER,
lang VARCHAR(5),
entry TEXT
);
CREATE TABLE word_translation (
word_id UNSIGNED INTEGER,
translation_id UNSIGNED INTEGER,
PRIMARY KEY (word_id, translation_id),
INDEX (word_id),
INDEX (translation_id),
FOREIGN KEY fk_word_id (word_id) REFERENCES word(id),
FOREIGN KEY fk_translation_id (translation_id) REFERENCES translation(id)
);
编辑:我不确定 pos 是什么,所以我将其限制为 50 个字符。如果您需要超过 32k 个字符,您可能还需要将 TEXT 调整为更大的变体之一。
将 lang 更新为 5 个字符以支持 en-us 样式语法。