数据库表之间的关系
开发工具与关键技术:Visual
Studio 2015 表与表之间的关系处理
作者:廖 茂
撰写时间:2019年06月26日
做项目最重要的就是数据库,数据库没做好,那么后面的功能实现就会出现问题,数据库创建时,表与表之间的关系至关重要,如果处理不好,那么将无法对表进行数据的插入与修改,表与表之间有着一对多、多对多的关系,现在先来看一对多的关系,表格如下:
我们都知道,一个航班中有多个票价,一个票价只能对应一个航班,所以如果按照上面的
连接方向来连接两张表的话,用Excel来显示的表格数据如下:
可以看到,一个航班只能对应一个票价,而一个票价却可以对应多个航班,这样就不符合实际的逻辑关系了,所以为了符合实际的逻辑关系,连接的方向应该反过来,如下:
反过来连接之后,在Excel显示的数据自然也会改变,如下:
可以看到,一个航班中有多个票价,一个票价也只能,这样就符合实际的逻辑关系了,毕竟在一个航班中有头等舱票价、公务舱票价、经济舱票价三个基本票价,而每个不同的航班,票价也有所不同,所以需要理清两个表之间的关系,否则在查询航班的票价时只能查到一个票价,新增票价也只能新增一个。
一对多的关系处理完了,接下来就看一下多对多的关系应该如何处理,首先看一下表格,如下:
旅客信息表和订单表之间又有着什么样的关系?一个订单上可以只有一位旅客,但也可以有多位旅客,就好比如发票,如果只买一样东西,那么发票上就只有一条商品数据,如果买多样东西,那一张发票上就有多条数据了。订单对旅客的关系已经明白,那么旅客对订单的关系也是如此,一个旅客可有多个订单,因为旅客可以查询历史订单,历史订单也不止一条,所以一位旅客可以有多个订单,问题来了,一个订单上面可以有多位旅客,而一位旅客也可以有多个订单,如何连接两张表?,不是两张表相互连接,需要再创建一张表,如下:
从上面可以看出,新建一张订单明细表,分别连接旅客信息表和订单表,通过两张表的主键获取数据,让两张表的数据同时存放在订单明细表中,在Excel中显示的数据如下:
可以看到,ID为1的订单里面有三位旅客,这是符合实际的逻辑的,还可以看到,ID为1的旅客有三个订单,这也是符合逻辑的,这样的话,我们在新增订单时不会出现数据冗余和数据混乱,对数据的维护更有利。
所以在搭建前端页面和编写后端控制流程之前,一定要把数据库建好,否则会在编写后端的功能控制流程代码时会出现一系列问题,然后就需要去修改数据库,甚至数据库崩溃,需要重建,一切推翻重做。