有文字的表格:
CREATE TABLE words (
id integer PRIMARY KEY,
word varchar(100) NOT NULL
);
INSERT INTO words VALUES (1,'angry'), (2,'mad'), (3,'bitter'),
(4,'enraged'), (5,'furious'), (6,'irritated'),
(7,'nice'), (8,'pleasant'), (9,'cute');
具有同义词组的表
CREATE TABLE synonymgroups (
id integer PRIMARY KEY,
description varchar(100)
);
INSERT INTO synonymgroups VALUES (1,'synonyms for "angry"'),
(2,'synonyms for "nice"');
还有一个带有组词映射的表格
CREATE TABLE synonyms (
synonymgroupid integer NOT NULL REFERENCES synonymgroups,
wordid integer NOT NULL REFERENCES words,
PRIMARY KEY (synonymgroupid,wordid)
);
INSERT INTO synonyms(synonymgroupid,wordid) VALUES (1,1), (1,2), (1,3),
(1,4), (1,5), (1,6), (2,7), (2,8), (2,9);
查找单词“mad”的所有同义词:
SELECT s.wordid, w.word, s.synonymgroupid, sg.description
FROM synonyms s
JOIN words w ON w.id=s.wordid
JOIN synonymgroups sg ON sg.id=s.synonymgroupid
WHERE s.synonymgroupid IN (
SELECT synonymgroupid
FROM synonyms
JOIN words ON words.id=synonyms.wordid
WHERE words.word='mad'
);
PS。 SQL 数据库可能不是完成此类任务的最佳工具。这只是一个例子。