业务场景:当我们进行头条文章接口的设计时,需要存储封面图片的字段。
文章和图片关系 ---->
一对多
方案一:传统的表设计
设计一张表,专门保存文章和封面图片之间的关系
id | article_id(文章id,FK外键) | cover_url (封面url地址) |
---|---|---|
1 | 2 | url1 |
2 | 2 | url2 |
3 | 4 | url3 |
4 | 5 | url4 |
提出问题:
文章的封面一般是不会去修改的,但是在文章首页都需要展示,此时又涉及到关联查询,所有速度是比较慢的。
方案二: 使用mysql-5.7
版本新型字段
优化方案: 使用
mysql-5.7
版本新型字段:json字段
在文章article表
中,新增一个cover
文章封面字段,数据格式为json
设计表的时候,定义字段语法:
sql语法: cover json NOT NULL COMMENT '封面'
flask语法:cover = db.Column(db.JSON, doc='封面')
Json数据格式:
cover = "{'type': 0, 'pics': [] }"
cover = "{'type': 3, 'pics': [url1, url2, url3]}"
cover = "{'type': 1, 'pics': [url1]}"
cover = "{'type': 9, 'pics': [url1....]}"
最终的文章表加上cover字段
id | tittle | cover | … |
---|---|---|---|
1 | 我是标题 | “{‘type’: 3, ‘pics’: [url1, url2, url3]}” | … |
mysql新增字段json本质:
json字段只是一层封装,底层还是使用LONGTEXT长文本实现的 但是mysql给json类型提供了一些函数方便使用