我的Web应用程序的最佳SIMPLE数据库结构,包含资源,类别和标签

时间:2016-04-08 02:02:33

标签: php mysql database database-design relational-database

我一直在教自己编写代码约6个月,正在构建我的第一个Web应用程序进行练习。

我的目标是构建我自己非常简单的cms,将我的资源存储在数据库中,并在页面上备份它们。

我会有资源 - 每个资源将只分配给3个类别中的1个 - 每个资源可以有多个标签。 最终,用户可以导航到每个类别页面,并在该页面上按标签过滤资源。

我正在努力设计数据库。

毫无疑问,我将拥有一张资源表。 我应该直接在此表中存储类别分配(因为每个资源只能有1个)或者是否更好地为此创建与类别表的关系?我已经对标签模式做了很多研究,在初学者阶段,有些看起来有点太复杂了。存储资源的多个标记的最简单方法是什么。 2桌?这将如何实现?

我正在使用PHP和mySQL。

1 个答案:

答案 0 :(得分:3)

对于类别,由于每个资源只有一个,因此存储在同一个表中。这是一对一的关系。

对于标记,您可能需要两个额外的表,因为这是多对多关系(每个资源可以有多个标记,每个标记可以分配给多个资源)。一个表用于存储标记名称及其ID。另一张表是存储关系。这个列有两列,一列用于标记ID,另一列用于资源ID。

快速举例:

id | resource | category
---+----------+----------
 1 |   rice   |    24
 2 |   apple  |    42

id | tag 
---+-------
 1 | fruit
 2 | cereal
 3 | food

id_t | id_p
-----+------
  2  |  1
  1  |  2
  3  |  1
  3  |  2

然后您可以查询表格并JOIN查询它们以获得所需的结果。