将CSV文件中的同义记录转换为MySQL DB条目

时间:2013-02-07 16:33:11

标签: php mysql database-design

我有一个应用程序,它使用CSV格式的信息填充文本文件。问题是,每个记录的列数应该是灵活的,并且不是恒定的。我试图在MySQL中实现相同的数据结构,以便从许多节点更快地读取和并行写入。

以下是从我的CSV文件

中提取的示例
like|love|adore|admire
hate|dislike
revive|resurrect
info|information|pieces of information|data
shoot|snipe|kill|hunt

每条记录代表具有相同含义的词语。稍后,我使用该CSV文件获取单词的同义词。例如,我使用我的应用程序中的函数获取单词hate的同义词dislike,该函数解析csv文件并输出匹配的单词。

我有哪些选项可以使用相同的实现方法但使用MySQL?

1 个答案:

答案 0 :(得分:1)

你在这里处理很多关系。不受欢迎的解决方案看起来像是:

CREATE TABLE words (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    word VARCHAR(40) NOT NULL UNIQUE
);
CREATE TABLE synonyms (
    word_id INT UNSIGNED NOT NULL,
    synonym_id INT UNSIGNED NOT NULL
    PRIMARY KEY (word_id, synonym_id)
);

然后,获取字$ Y的所有同义词,其ID为$ Y:

SELECT w.id, w.word
FROM synonyms s
JOIN words w ON (s.synonym_id = w.id)
WHERE s.word_id = $Y;

这样你也可以在某些时候添加反义词。