我一直在教自己编写代码约6个月,正在构建我的第一个Web应用程序进行练习。
我的目标是构建我自己非常简单的cms,将我的资源存储在数据库中,并在页面上备份它们。
我会有资源 - 每个资源将只分配给3个类别中的1个 - 每个资源可以有多个标签。 最终,用户可以导航到每个类别页面,并在该页面上按标签过滤资源。
我正在努力设计数据库。
毫无疑问,我将拥有一张资源表。 我应该直接在此表中存储类别分配(因为每个资源只能有1个)或者是否更好地为此创建与类别表的关系?我已经对标签模式做了很多研究,在初学者阶段,有些看起来有点太复杂了。存储资源的多个标记的最简单方法是什么。 2桌?这将如何实现?
我正在使用PHP和mySQL。
答案 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
查询它们以获得所需的结果。