我设置了一个相当普通的标记系统:
table|'keyword'| : tag_id | tag
table|'tag_thread'|: tag_thread_id | tag_id | thread_id
table|'thread'| : thread_id | thread_info
但是,我已经改变了我的标记显示方式。
我的新想法是在related
中添加keyword_tbl
列。我决定尝试这条路线,因为我想做一个面包屑系统,并希望“订购”标签,例如,体育 - >棒球 - >投手。此外,如果他们输入“棒球”,我想将体育作为标签的一部分,而不用担心它。
keyword_tbl : keyword_id | keyword | related_id
例如:
keyword_tbl:
keyword_id // 1 // 2 // 3
keyword // sports // baseball // pitchers
related // 0 // 1 // 2
0
标志着它是一个“通用”标签,是最广泛的术语。这意味着对于他们发布的每个线程,我只需要存储单个值(上面示例中最详细或“投手”)。从“Pitcher”开始,我可以派生相关字段,并以向后的方式创建面包屑。
我的问题是:对于我正在尝试使用面包屑的方法,哪条路线会更好?我计划这样做的方式有什么特别错误吗?有人可以看到吗?
由于
答案 0 :(得分:1)
这是一些潜在的问题(但这并不意味着你走错了路。)
通常,标签比类别更宽松。听起来你把它们混合在一起,这可能是一个问题。当你有一个适用于棒球和足球人的标签(比方说,“左撇子”)时会发生什么?发明标签是为了避免这种分类问题,其中一切都需要树中的一个父母。
查找相关标签集的查询可能效率低下/杂乱,具体取决于您可能拥有多少级别的面包屑。谁负责将标签分类到树中?如果它是管理功能(因此不会经常发生),您可能需要创建一个“物化视图”,其中包含每个标记的所有相关标记。