我已经从事开发人员多年(尽管我已经从自学中学到了一切,并且没有参加任何课程/培训/课程)
已经完成了许多与数据库相关的工作,关于为什么以这种方式实现,我有些不了解,
假设我已经想到了这种数据库结构。
ITEM
- id (integer)
- name ( string )
- tags ( longtext) ( array of tag IDs )
TAGS
- id ( integer )
- name ( string )
ITEM可以有多个TAGS,在这种情况下,我要执行的操作是简单地将标签ID存储在来自ITEMS的标签字段中,并以序列化数组格式或json存储,我的数据看起来像这样
ITEMS
|--ID--|---NAME ---| -- TAGS ---------------------|
| 6 | John Doe | a:2:{i:0;i:1;i:1;i:3;} |
| 5 | Mark Toe | a:2:{i:0;i:2;i:1;i:3;} |
TAGS
|--ID--|---NAME ---|
| 1 | Black |
| 2 | Red |
| 3 | Blue |
但是,我看到很多情况下都为ITEMS和TAGS之间的关系创建了另一个表,其中的数据如下所示
ITEM
|--ID--|---NAME ---|
| 6 | John Doe |
| 5 | Mark Toe |
TAGS
|--ID--|---NAME ---|
| 1 | Black |
| 2 | Red |
| 3 | Blue |
TAGS & ITEMS RELATIONSHIP
|-- item_id --|--- tag_id ---|
| 6 | 1 |
| 6 | 3 |
| 5 | 2 |
| 5 | 3 |
我认为这只是浪费数据库资源,无法创建附加表,即使我们可以简单地将数据添加为该特定表上的附加列。
现在我的问题是为什么以及有什么好处?两种实现之间的优缺点是什么?
非常感谢能启发我这个话题的人
干杯:)