最近在写一个javaweb,谈谈数据表及后端处理逻辑
多对多,一对多
演员(多) -- 影片(多)
演员表actors
| id | name | sex |
|---|---|---|
| 1 | name1 | sex1 |
| 2 | name2 | sex2 |
| 3 | name3 | sex3 |
影片表movies
| id | url | title | actor_name |
|---|---|---|---|
| 1 | url1 | title1 | name1 |
| 2 | url2 | title2 | name2 |
| 3 | url3 | title3 | name3 |
演员影片中间表movie_actors
| id | actor_id | movie_id |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 1 | 3 |
从上面三个表中可见,一个影片可以被多个演员演,一个演员可以演多个影片,因此演员与影片之间是多对多的关系,此时必须要有一个中间表来记录这两张表的关系
当业务中执行影片新增操作时,后端得到前端来的movie对象,把movie插到数据库中后,再根据movie的title属性来遍历整张movies表,得到与title相同movie对象,再新建一个movie_actors对象,根据前面返回的movie对象中的actor_name来查询演员表中与actors表中与之相对应的actor对象,此时有了两个对象,此时往movie_actors对象中设置movie的id和actor的id,此时该影片的插入操作结束
当业务中执行影片删除操作时,后端根据id先删除movie_actors表中movie_id与之相等的数据,再根据id删除该影片
影片(一) -- 剧集(多)
影片表movies
| id | url | title |
|---|---|---|
| 1 | url1 | title1 |
| 2 | url2 | title2 |
| 3 | url3 | title3 |
剧集表episodes
| id | movie_id | url |
|---|---|---|
| 1 | 1 | url1 |
| 2 | 1 | url2 |
| 3 | 3 | url3 |
| 4 | 1 | url4 |
在上面两个表中,可见一个影片可以有多个剧集,在表的设计中应该在多的一方设置一的一方的id属性
当业务中剧集在执行新增时,后端需要得到前端传到后端的movie_id和url才能实现新增操作.
新增,修改或删除后,需要得到该剧集所属的影片id来刷新当前剧集列表
当业务中影片删除时,需要先根据影片id删除剧集表中所有movie_id与之相等的的数据

浙公网安备 33010602011771号