【发布时间】:2016-09-19 22:02:30
【问题描述】:
我想构建一个在 SQL 中定义数据模型的标记系统。 我会像 SE 一样标记帖子。
我需要的是标签同义词。
以下哪项/s 可以允许将来扩展具有同义词的标签集?如果没有或有更好的方法,那是什么?
我目前有这三个想法。
1。第一个只有一个表tags,它将所有标签和同义词标签保存在数据库中的一个表中,并具有以下字段,(简而言之,我只输入了几列必要的,并且有一个伪代码不是有效的 SQL):
标签表:
id(Primary Key) tag_id label synonym_id(References tags.tag_id, on this table)
2。第二个,有两个表如下:
标签表:
id(PK) label
tag_synonyms 表:
id(PK) label synonym_id(References tags.id)
3。第三,又是两张表,一张用于标签,一张用于同一标签表本身的标签关系:
标签表:
id(PK) label
tag_to_synonym 表:
id(PK) tag_id(References tags.id) synonym_id(References tags.id)
【问题讨论】:
-
我更喜欢第一个...如果您提前知道所有标签和同义词,第二个会更好。但在现实生活中,我假设您从一些标签开始,然后您会发现其中一些是同义词,并且您将其中一个声明为前导标签。只需在同义词行中设置一个指向其主标签的引用,就是这样......
-
此外,当确定标签
x是标签y的同义词时,标签x的所有同义词将成为标签y的同义词。实施起来会很酷,我会努力做到的。
标签: sql database tags data-modeling