热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数据库多级联动表结构设计

以省市区县四级联动为例:方案一:建立多个数据库表,低级表结构中只包含上一级表中id。省表市表区表县表provincecitydist

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

方案一:

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

省表市表区表县表
provincecitydistrictcounty
idprovince_idcity_iddistrict_id

优点:

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

缺点:

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

方案二:

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

省表市表区表县表
provincecitydistrictcounty
idprovince_idcity_iddistrict_id
  province_idcity_id
   province_id

优点:

  1. 跨级查询性能较高。

缺点:

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

方案三:

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

idpidname
10河北省
21唐山市
31保定市
42迁安县
6....

优点:

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

缺点:

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

方案四:

待补充。

 

 

 

 

 

 

 

 


推荐阅读
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • 本文详细介绍了Python中列表的创建、访问、修改、排序及遍历等基本操作,帮助初学者快速掌握列表这一重要数据结构。 ... [详细]
  • 本文介绍了ArcXML配置文件的分类及其在不同服务中的应用,详细解释了地图配置文件的结构和功能,包括其在Image Service、Feature Service以及ArcMap Server中的使用方法。 ... [详细]
  • 本文详细介绍了 RosPack 类的功能和用法,探讨了其在 ROS 系统中的重要作用。RosPack 类提供了类似于终端命令 rospack 的功能,能够方便地查询和管理 ROS 包的相关信息。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 金山与万普广告争议:APP开发者权益受侵害
    探讨了金山毒霸对嵌入特定广告SDK的APP进行封禁的行为,分析其对安卓开发者的影响,并揭示了这一系列事件背后的复杂性。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 本文提供南昌大学《嵌入式系统》课程期末考试的真题及详细解答,涵盖填空题、指令测试题等内容,帮助学生更好地理解和掌握相关知识点。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 本文详细介绍如何在Linux系统中配置SSH密钥对,以实现从一台主机到另一台主机的无密码登录。内容涵盖密钥对生成、公钥分发及权限设置等关键步骤。 ... [详细]
  • 本文探讨了在C++中如何有效地清空输入缓冲区,确保程序只处理最近的输入并丢弃多余的输入。我们将介绍一种不阻塞的方法,并提供一个具体的实现方案。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 算法题解析:最短无序连续子数组
    本题探讨如何通过单调栈的方法,找到一个数组中最短的需要排序的连续子数组。通过正向和反向遍历,分别使用单调递增栈和单调递减栈来确定边界索引,从而定位出最小的无序子数组。 ... [详细]
author-avatar
zj5415
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有