目录中类似标签的类别的表设计

|| 我注意到,大多数类似目录的网站都有由网站管理员创建和管理的类别,而用户选择/选择他们要发布到的类别。对于这种实现,将始终有2个表;类别表和清单表,其中清单表将由包含类别ID的列组成。 如果只有几个类别,并且您知道现有的类别,则此设计非常简单。 但是,如果您有很多类别(即2000多个类别)或允许用户指定自己的类别(即标签)怎么办? 如果我们在清单表中创建一个类别列,它将包含重复的类别。同样,如果我们创建一个单独的类别表,由于用户指定了类别,该表也将包含重复项。 在针对这种情况设计数据库时,最佳实践是什么? 先感谢您。     
已邀请:
类别的数量并没有真正改变,但是从10个类别中选择1个的UI看起来与2,000个类别的UI截然不同。 通过向数据库表添加适当的约束来防止重复。当用户也可以自己添加标签时,这不会改变。列表与类别具有一对一或一对多关系。前者最好在类别表的列表中作为外键实现。最好将后者实现为带有两个外键的附加表。一种用于类别,一种用于列表。使主键成为由清单键和类别键组成的复合键。 但是,数据库无法强制执行的是唯一的“含义”。 用户可以独立创建以下类别: Java程序设计 Java Porgramming Java编程 关于Java的一切 ...而且它们可能都意味着同一件事。最后一个类别也可能是与咖啡制作有关的类别,但我不会打赌:) Stackoverflow必须处理此问题,我怀疑您可以找到有关如何搜索元Stackoverflow的信息。     
为什么不看看WordPress的方法呢? WordPress.com确实非常庞大,它拥有超过2000个标签或类别。您可以从www.wordpress.org下载最新的WordPress。数据库模式位于纯SQL中的wp-admin \\ includes \\ schema.php文件中。     

要回复问题请先登录注册