数据库如何设计树形结构

在 MySQL 中,设计树形结构的区域表有多种方式。以下是一些常见的方案:

  1. 父子关系(Parent-Child Relationship)模型:在这种模型中,每个行记录包含一个指向其父级的引用。可以使用一个额外的列来存储父级 ID,或者使用自连接表来表示关系。这种模型简单直观,易于理解和管理。
  2. 路径(Path)模型:在这种模型中,每个行记录都包含一个代表其完整路径的字段。路径可以是以某种分隔符(如斜杠)分隔的字符串,例如:/地区/国家/城市。通过解析和处理路径字段,可以轻松地查询父级、子级和兄弟节点。
  3. 嵌套集模型(Nested Set Model):这是一种基于左右值的模型,通过预先计算每个节点的左右值,可以高效地查询树形结构。每个节点都有一个左值和一个右值,用于表示其在树中的位置。这种模型适用于大型树结构,但需要特殊的操作来维护左右值。
  4. 物化路径(Materialized Path)模型:这是路径模型的一种改进版本,它使用额外的列来存储节点的层级关系。除了路径字段外,还可以添加一个表示节点级别的字段。这样可以更高效地进行查询,并且可以轻松地获取节点的父级、子级和兄弟节点。

父子关系(Parent-Child Relationship)模型

父子关系(Parent-Child Relationship)模型是一种在 MySQL 中设计树形结构的方式。在该模型中,每个区域记录包含一个指向其父级区域的引用。通过这种父子关系,可以建立区域之间的层级结构。

More »

周报-28|技术文档范例

前言

本篇是对 2023-07-102023-07-16 这周生活的记录与思考。首发在我的个人 博客,你可以移步了解更多或者给我留言。

读书、健身、投资、帮朋友、陪家人。

这是我的第 27 篇周报,由于工作的原因,前两周的周报是一起发布的,所以第 27 篇周报被跳过去了。

More »

[译]Spring Boot异常处理完整指南

处理异常是构建健壮应用程序的重要部分。 Spring Boot 提供了不止一种方法。

本文将探讨这些方法,并提供一些关于何时某种给定方法可能优于另一种方法的指导。

示例代码

本文附有 GitHub 上的工作代码示例

More »

[译]Spring Boot授权服务器 - 使用 Java 的资源服务器和客户端凭证示例

概述

在本文中,我们将创建一个授权服务器,为任何客户端生成 access_token。这称为 OAuth2 的 client_credentials 流程。它主要用于服务间通信。

我们将使用 spring boot oauth2 授权服务器依赖项来创建身份验证服务器。我们还将创建一个资源服务器和客户端来对其进行端到端测试。

More »

[译]使用 Spring Boot 和 Spring Security 配置 CORS

跨源资源共享 (CORS) 是一种基于 HTTP 标头的机制,允许服务器显式将某些源列入白名单,并帮助绕过同源策略。

这是必需的,因为浏览器默认应用同源策略以确保安全。通过在 Web 应用程序中实施 CORS,网页可以请求额外的资源并从其他域加载到浏览器中。

More »

[译]使用 Spring 的 Null-Safety 注解保护您的代码免受 NullPointerExceptions 的影响

NullPointerExceptions (通常缩写为“NPE”)对于每个 Java 程序员来说都是一场噩梦。

我们可以在互联网上找到大量解释如何编写空安全代码的文章。空安全确保我们在代码中添加了适当的检查,以保证对象引用不能为空,或者毕竟在对象为空时采取可能的安全措施。

由于 NullPointerException 是一个运行时异常,因此在代码编译过程中很难找出这种情况。 Java 的类型系统没有办法快速消除危险的空对象引用。

More »

[译]使用Spring Boot Actuator公开有用的信息端点

在分布式、快节奏的环境中,开发团队通常希望了解他们部署应用程序的时间、部署的应用程序版本、部署的 Git 提交等等。

Spring Boot Actuator 帮助我们监控和管理应用程序。它公开了提供应用程序运行状况、指标和其他相关信息的各种端点。

在本文中,我们将了解如何使用 Spring Boot Actuator 和 Maven/Gradle 构建插件将此类信息添加到我们的项目中。

More »

[译]在 Spring 中实现 OAuth2:使用范围(第 2 部分)

我们在上一篇文章中了解了基本的 OAuth2 概念以及如何在 Spring 中实现和执行不同的授权。在这篇文章中,我们将介绍 OAuth2 的另一个重要概念:范围。

OAuth 范围

保护对应用程序的访问通常分两个步骤进行:身份验证和授权。要理解这两个概念,假设您在绝密政府大楼工作。在开始之前,你会得到一张卡片,可以让你进入建筑物。 OAuth 令牌可以看作是允许您访问的卡片。

More »

[译]在 Spring 中实现 OAuth2:第 1 部分

OAuth2 是一组规范,主要提供对 Rest API 的安全访问的方法。 OAuth 的主要目的是允许通过使用令牌来执行身份验证和授权,而不必为每个操作提供凭据。由于本文的重点是实现,并且为了不重新发明轮子,可以查看 OAuth RFC维基百科以获取更多理论背景。在这篇文章中,我们将深入探讨 Spring 中的 OAuth2 实现以及如何使用不同的授权类型,但在此之前值得提供一些重要概念的简要定义。

More »