自定义类别的SQL数据库结构

时间:2009-10-27 00:09:50

标签: sql mysql database-design data-modeling

我正在创建一个在线博客网站,对于每篇博文,我希望用户能够创建/编辑/删除他们自己的类别,以便他们可以对他们的帖子进行分类。

通常认为用户生成的类别的数据库设计是什么?

这是我提出的表格设计。 (这种类型的数据库有名称吗?)

USER_TABLE
user_id(pk),user_name

CATEGORY_TABLE
category_id(pk),category_name

USER_CATEGORIES
user_id(fk),category_id(fk)

感谢您的帮助。我有信心在这方面有一个帖子,但我无法找到它。如果这是一个欺骗请告诉我,我将删除这个问题。

3 个答案:

答案 0 :(得分:5)

这是一对多关系。这将允许每个用户可能具有许多不同的类别,并且每个类别可能具有许多不同的用户。对于您要做的事情,这似乎是一个有用的模型。

答案 1 :(得分:2)

我认为您的架构看起来不错。您将类别标签保留在一个表中以避免重复,然后只将其ID分配给用户。

答案 2 :(得分:1)

如果您要做的是为每个用户设置“私人”类别,那么这很好。 另一方面,如果类别应该是公共的(类似于stackoverflow上的标签),那么您可以考虑另一个选项 - 不存储用户< - >类别关系,而是将字段use_counter添加到类别表并使用触发器在类别时递增它正在使用(博客条目被分类)或当它被“释放”时减少(博客条目被删除/其类别被删除)。当use_counter达到0时 - 删除类别。