section,file表都同时新建一个vod字段

来源:10-4 基于OSS原生SDK上传视频到点播1

慕神4535282

2020-08-22

RT,本节视频16:00~16:04秒处有提到。section,file表都同时新建一个vod字段。
这是否又是老师你以前所说的

将几个必要的字段冗余成一张section表

老师,面对类似的情况,你都是采用冗余设计这个原则吗? 那假如有需求要修改某条记录中 vod 字段的值时,那岂不是section,file表 vod 字段下的值 也要进行同步更新, 这样会不会变复杂了.

老师,你在这门课程中,有遇到类似情况而采用非冗余设计的例子吗? 具体是在哪一节中有提及,或是具体是哪张表,course_category 算吗?

create table course_category (
	id char(8) not null default ‘’ comment ‘id’,
	course_id char(8) comment ‘课程|course.id’,
	category_id char(8) comment ‘分类|course.id’,
	primary key (id)
) engine=innodb default charset=utf8mb4 comment=‘课程分类’;
写回答

1回答

甲蛙

2020-08-22

vod这个也可以说算,比如可以在section表加一个fileId,这样就可以关联到file表的所有字段,包括vod,但是这样设计的话,每次要播放视频,得去关联查一下file表。所以我们直接将vod字段加到section表,每次只要读section表就可以了。

course_category 这张表不算,这是将两张表关联起来的一张中间表。

有个经典的例子,订单表和商品表,一笔订单买的是哪个商品,可以在订单表里加一个商户ID字段,但是这样的话,每次要在订单详情里显示商品名称,都得去关联商品表。所以可以在订单表里多冗余一个商品名称字段,这样订单详情只要查一张订单表就可以了。

冗余字段确实有一个注意点,当一个字段要更新时,所有的冗余的表都要更新。当然这也看需求,比如订单表我就是要保留当时购买的商品的名称,即使后面商品改名了,订单表也不能动。

一般是这样,如果是变更得少,查询得多的字段,可以考虑用冗余字段的做法来减少数据库压力

0
1
慕神4535282
非常感谢!
2020-08-25
共1条回复

Spring Cloud+ Vue前后端分离开发企业级在线视频系统

全网稀缺课程 市场热门项目+主流框架 一课掌握前后端技术

1743 学习 · 1697 问题

查看课程