2014.5.5数据库设计:一对多关系的表的设计和查询技巧
来源:互联网 发布:国家干部网络培训 编辑:程序博客网 时间:2024/05/22 17:07
数据库设计:一对多关系的设计
表的设计原理
在实际开发过程中往往会出现一张表的一条数据(a表)会引用另外一张表(b表)的多条数据:
a表:
b表:
a表中cresist的类型是varchar,它冗余了b表中的多个主键ID,以一定规则存在(此处为以英文逗号间隔),b表中主键的类型是int
问题描述
我们需要查看的不只是类似“1,2”这种结果,相反,我们想看到的结果是“位置偏远,配套不齐”,如何才能得到这样的结果呢?
解决方式
方式一:先查询出a表所有的数据,再遍历所有数据,取出cresist字段的值,解析(以逗号分隔开来)后从关联表查询每一条数据,取出实际内容拼接(执行sql次数:>1+n*i次):
方式二(效率更高):先查询出a表所有的数据,再遍历所有数据,取出cresist字段的值,通过sql实现内容拼接,直接得到结果(执行sql次数:=1 + n*1次):
这里使用了MySQL的两个函数:GROUP_CONCAT(将满足条件的结果拼接起来,跨多条数据的拼接,不同于CONCAT:一条数据之间的拼接)和FIND_IN_SET(判断第一个参数是否在第二个参数中出现),效果如下:
(FIND_IN_SET)
(GROUP_CONCAT + FIND_IN_SET)
方式三(能否实现?):通过一条sql语句查询出结果,不再进行遍历(执行sql次数:=1次):
结论:可以使用1条sql语句联合查询结果
0 0
- 2014.5.5数据库设计:一对多关系的表的设计和查询技巧
- 数据库表项的一对多关联设计
- 关系型数据库表结构的两个设计技巧
- 关系型数据库表结构的两个设计技巧
- 关系型数据库表结构的两个设计技巧
- 关系型数据库表结构的两个设计技巧
- 关系型数据库表结构的两个设计技巧
- 关系型数据库表结构的两个设计技巧
- hibernate中一对多关系模式的设计
- 数据库设计一对多、多对多关系
- 即时通讯数据库好友关系(一对多)应该怎样设计?
- 数据库的设计技巧
- 多表设计之间的关系;一对一,一对多,多对多
- 数据库查询的设计
- 一对多关系的多表关联查询
- 数据库设计 表和表之间的三种关系
- Mybatis一对多中的SQL(查询、删除、更新、插入)及表的设计
- 数据库的关系表:一对多、多对多实例
- I2C驱动实例解析
- ScrollView上拉刷新的小例子
- hadoop cdh4.5 mapreduce yarn 配置文件 (接上文)
- Android常见UI组件之ListView(一)
- poi-----无模板生成Excel的方法
- 2014.5.5数据库设计:一对多关系的表的设计和查询技巧
- 架构一个可承受千万级访问量的动态扩展CMS
- 我的 SAP COE support consultant intern 面试经历
- POJ 1958 Strange Towers of Hanoi (四塔问题,线性dp,记忆化搜索)
- Hibernate复习(三)配置文件详解
- shell笔记
- poj3580 splay
- 利用存储xss制造僵尸的方法
- 关于程序集的引用