微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgres中的对称关系

如何解决postgres中的对称关系

我一直在使用 Translation API,但建议缓存翻译,因为不必要的服务器行程,所以我将其缓存在 postgres 数据库中。

所以我创建了一个

CREATE TABLE translation_cache(
    src_lang_code CHAR(3),dst_lang_code CHAR(3),src VARCHAR,dst VARCHAR NOT NULL,PRIMARY KEY(src_lang_code,dst_lang_code,src)
);

这意味着,对于每个字符串 src,只有一个src_lang_codedst_lang_code 的翻译。但这是一种对称关系! dog (en) -> собака (ru); собака (ru) -> dog (en),别无他法!

在 postgres 中是否有一种漂亮的方式来实现这种对称关系,或者我应该变得丑陋并复制数据?

解决方法

对此没有非常好的解决方案。

您可以在需要查找翻译时搜索表格两次,也可以添加触发器,在插入行时添加第二个镜像行。

在第一种情况下,您应该添加一个唯一约束,不允许同一对语言使用相同的 dst

让我补充一点,这个翻译模型过于简单。一个词很少与另一种语言中的单个词对应,因此这种关系通常是不对称的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。