数据库结构与实现

时间:2019-07-31 16:15:23

标签: database database-design

我已经从事开发人员多年(尽管我已经从自学中学到了一切,并且没有参加任何课程/培训/课程)

已经完成了许多与数据库相关的工作,关于为什么以这种方式实现,我有些不了解,

假设我已经想到了这种数据库结构。

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      |

我认为这只是浪费数据库资源,无法创建附加表,即使我们可以简单地将数据添加为该特定表上的附加列。

现在我的问题是为什么以及有什么好处?两种实现之间的优缺点是什么?

非常感谢能启发我这个话题的人

干杯:)

0 个答案:

没有答案
相关问题