博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库多级联动表结构设计
阅读量:2347 次
发布时间:2019-05-10

本文共 652 字,大约阅读时间需要 2 分钟。

以省市区县四级联动为例:

方案一:

建立多个数据库表,低级表结构中只包含上一级表中id。

省表 市表 区表 县表
province city district county
id province_id city_id district_id

优点:

  1. 此设计完全解开了各层之间的耦合性,用类似于链表的形式将多层数据关系起来。
  2. 可以节约大量的数据库空间。
  3. 维护方便。如果发生了新增和修改操作时,只要修改与之相关的那个表的主键即可。

缺点:

  1. 跨级查询效率低下。如查询河北省下有哪些县,需要查询三次涉及三张表才能查到结果。

方案二:

也就是方案一的改进版,低级表持有所有高级表的id,从而获得查询性能上的提升。

省表 市表 区表 县表
province city district county
id province_id city_id district_id
    province_id city_id
      province_id

优点:

  1. 跨级查询性能较高。

缺点:

  1. 表结构混乱,冗余字段增加,占用较多数据库空间。
  2. 新增和删除操作复杂,效率不高,维护性差,需要考虑数据完整性和一致性。

方案三:

方案二的改进版,采用自关联(递归)的方式设计。

id pid name
1 0 河北省
2 1 唐山市
3 1 保定市
4 2 迁安县
6 .. ..

优点:

  1. 节省数据库空间,表结构清晰,容易维护。
  2. 无限级别的层次关系,扩充性强。

缺点:

  1. 不能明确看出层次关系,无法实现排序。
  2. 跨级查询效率不高。

方案四:

待补充。

 

 

 

 

 

 

 

 

转载地址:http://nvivb.baihongyu.com/

你可能感兴趣的文章
基础教程:7、MySQL/MariaDB安装
查看>>
Elasticsearch 7.0变化
查看>>
elasticsearch 6.x 基本概念解读
查看>>
ES集群
查看>>
Tika简单实例应用
查看>>
基础教程:8、图解Windows平台下Intellij IDEA安装与配置
查看>>
Elasticsearch 7.x:1、图解Windows本地测试环境搭建
查看>>
Elasticsearch 7.x:2、索引管理
查看>>
Elasticsearch 7.x:3、文档管理
查看>>
完整教程:spring-boot-starter-data-elasticsearch整合elasticsearch 6.x
查看>>
更改Tomcat日志目录
查看>>
BindTransportException: Failed to bind to [9300]
查看>>
Java Web(SpringBoot 2.x)上传文件夹,完整代码
查看>>
SpringBoot 2.x项目jar包部署
查看>>
web页面上单击按钮实现复制当前页面的url到剪贴板
查看>>
Intellij idea打带Manifest文件的jar包(可执行jar包)
查看>>
SpringBoot 2.x 统一异常处理
查看>>
spring-boot-starter-data-elasticsearch整合elasticsearch 6.x实现高亮highlighter解决办法
查看>>
读取Excel数据进行决策树算法分析
查看>>
kmeans算法初步
查看>>