作为后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 本文来自读者投稿,作者:陈浩翔

本篇为第一篇。讲解传统系统的表结构设计(Java开发)。

讲讲如何避免数据库设计的一些坑,方便后期的开发与维护。

以前经常能够看到,数据库范式,现在说数据库三大范式的少了。

三大范式我以前也很严格的弄过,但是后来发现,还是灵活好啊,为什么,业务变动太快了啊,按照范式来,结构变更顶不住。

下面我就说一说设计数据库表要注意的一些地方吧。我不是DBA,只是Java后端开发,以下是根据我的个人经验所得,至于能不能体会,看个人了。

外键、触发器

外键、触发器不要有。
有了外键、触发器,你会发现: 写代码不方便。 订正数据不方便。 迁移数据也麻烦。 总之,你要是坚持用,后续的坑等着你。

自增id

数据库表,一定要有id,而且要用自增id!
有些人喜欢用自定义的,用UUID或者其他七七八八的id,如果在架构设计,代码比较好的情况下,不会出啥大问题,但是一旦代码写的不行,极有可能就造成id重复之类的问题。
自增id另外还有一个好处,就是在数据迁移的时候,分页查询通过id来进行分页,速度会比传统分页快很多。

创建时间&修改时间

创建时间和修改时间这两个字段,每个表都要有! 注意,一定要用数据的时间戳,自动生成。不要通过代码去操作这两个字段。

有了这两个字段。你可以追溯到数据的时间点,创建和修改的时间点。极大方便你在某些情况下的排查数据问题。

创建人&修改人

建议每个表也有这两个字段。

还是和前面一个原因,出问题的时候可以追溯起因,否则遇上日志过久无法查看或者其他原因出现未知数据,都不知道数据怎么来的,需要花非常大的代价查看日志、代码等。

大文本字段

一列需要占很大空间的字段,一定要单独拎出来,不要和常用信息放一张表。

举个例子: 文章的信息和文章的内容,这一定要分成两个表。否则会给你的文章性能带来极大的挑战。因为很多情况下,查看文章列表,根本不需要查看到文章的内容。

表与表的关联

表与表之间的信息,用id进行关联,尽量不要有冗余的信息数据,否则你需要更新同一份信息的时候,需要更新多个地方。

但是在某些情况下,你确认信息不会经常变动,且该信息确实在两个表中都有会比较好,那么,放心的去冗余吧。但是注意,数据的更新用上事务。

单库单表单系统写原则

这个原则我自己想出来的,也就是说,数据库中的一张表,只能有一个系统对其进行写操作。 其他的系统如果想写这张表,那么经过调用这个系统的接口进行操作。

如果有多个系统写同一张表,可能带来的问题会很多。首先就是数据并发问题,其次就是事务问题,还有就是表结构变更问题,数据来源追溯问题等等。

如果谁有一张表数据想用多个系统来进行写,那肯定是想把团队拖垮。时间越久,债务越多!

总结

数据库设计,标准其实是在变的,不变的只是思想。

业务场景不同,实际需求不一样,不会存在一样的设计,但是通用的思想都是一样的,为业务服务,为未来服务,方便维护,方便扩展。

这条路很长,只能慢慢在路上体会了。

目录
相关文章
|
4天前
|
安全 前端开发 关系型数据库
深入理解后端开发:从基础到高级实践
本文将带你走进后端开发的奇妙世界,从最基础的概念开始,逐步深入到高级实践。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到有价值的信息。我们将一起探讨后端开发的核心概念、常用技术栈、以及如何在实际项目中应用这些知识。准备好了吗?让我们一起开启这场后端开发的探索之旅吧!
|
2天前
|
JavaScript 关系型数据库 数据库
探索后端开发:从新手到专家的旅程
本文将带领读者踏上一场激动人心的旅程,从零基础开始,逐步深入后端开发的奥秘。我们将一起揭开后端世界的面纱,探索其核心概念、关键技术和实用工具。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和启发,帮助你在后端开发的道路上更进一步。准备好迎接挑战,让我们启程吧!
20 8
|
3天前
|
JavaScript 测试技术 API
探索后端开发:构建高效API的艺术
【9月更文挑战第8天】本文旨在揭示后端开发中一个经常被忽视的领域——API设计。通过深入浅出的方式,我们将探讨如何构建一个既高效又易于维护的API。文章将涵盖设计原则、最佳实践以及一些常见的陷阱和解决方案。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在后端开发的道路上更进一步。
|
2天前
|
网络协议 JavaScript Java
探索后端开发:从基础到高级
本文将带你走进后端开发的神秘世界。无论你是初学者还是有经验的开发者,都可以在这篇文章中找到你需要的内容。我们将从基础开始,逐步深入,最后达到高级水平。让我们一起来探索后端开发的奥秘吧!
14 4
|
3天前
|
存储 算法 前端开发
深入浅出:探索后端开发的核心要素
在数字化浪潮中,后端开发如同一座城市的基础设施,支撑起整个互联网的运行。本文将带你走进后端世界的大门,从数据库设计、服务器架构到API开发,一一剖析这些构成网络世界脊梁的技术要点。我们将用通俗易懂的语言,结合生动的比喻和实例,为你揭开后端开发的神秘面纱,让你即便是编程新手也能对这一领域有个清晰的认识。文章不仅会分享技术细节,更会探讨如何通过不断学习与实践,找到属于自己的技术成长之路。
15 4
|
3天前
|
前端开发 API 开发者
深入浅出:后端开发中的API设计艺术
在数字化时代的浪潮中,后端开发如同搭建一座座数据桥梁,连接着用户与服务的无限可能。而API设计,则是这座桥梁的精髓所在。本文将带领读者领略API设计的艺术,从基础原则到进阶实践,探索如何打造高效、稳定且易于使用的后端接口。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高质量后端开发的大门。
|
2天前
|
存储 安全 API
探索后端开发:构建高效API的艺术
【9月更文挑战第9天】在数字时代的浪潮中,后端开发如同一位默默无闻的艺术家,精心雕琢着每一个数据交互的细节。本文将带你走进后端的世界,从基础概念到实战技巧,一起学习如何打造高效、稳定且易于扩展的API。我们将通过深入浅出的方式,探讨后端开发的哲学与实践,让你在编码之旅中,找到属于自己的节奏和和谐。让我们一起跟随代码的脚步,解锁后端开发的无限可能。
|
5天前
|
存储 JavaScript 安全
深入浅出Node.js后端开发
【9月更文挑战第6天】在数字化浪潮中,后端开发作为技术架构的支柱,承载着数据存储、业务逻辑处理和用户交互等核心功能。Node.js,作为一个轻量级、高效的JavaScript运行环境,已经成为许多开发者的首选工具。本文将深入探讨Node.js的基础知识、实战应用以及面临的挑战,旨在为初学者和经验丰富的开发者提供一份全面的指南。从搭建开发环境到部署应用程序,我们将一步步揭示Node.js的魅力所在,同时也会触及性能优化和安全防护等高级话题。无论你是初涉后端开发的新手,还是希望深化对Node.js的理解,这篇文章都将是你的宝贵资源。
|
2天前
|
设计模式 Kubernetes 开发者
探索后端开发中的微服务架构
本文旨在通过浅显易懂的方式,向读者介绍微服务架构的概念、优势以及在后端开发中的应用。我们将从微服务的基本定义出发,逐步深入到如何设计、部署和维护一个高效的微服务系统。文章还将分享一些实际案例,帮助初学者和有经验的开发者更好地理解和掌握微服务架构。
|
3天前
|
存储 JavaScript NoSQL
探索后端开发:从基础到高级的实践之路
在数字化时代,后端开发是构建强大、可靠和高效软件系统的基石。本文将引导你了解后端开发的各个方面,包括语言选择、框架应用、数据库管理、API设计、安全性考虑及性能优化等关键要素。无论你是初学者还是有一定经验的开发者,都能通过这些实用技巧和最佳实践,提升你的后端开发技能。
9 0