首页 > 数据库 >数据库设计的必备小技巧

数据库设计的必备小技巧

时间:2024-04-19 10:35:04浏览次数:23  
标签:sys 建议 技巧 必备 数据库 单词 user 主键

前言

对于后端开发人员来说,访问数据库,是代码中必不可少的一个环节。

系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。

后端开发的日常工作,需要不断的建库和建表,来满足业务需求。

这里就跟大家分享一下数据库设计的一些小技巧!

见名知意

在数据库设计中,一个好的表名、字段名、索引名是非常重要的,不仅降低维护成本,还让后期的维护人员方便理解,好的名字要言简意赅、见名知意。

比如用户表:t_user:user_name,user_phone,user_card,...

表名

建议在创建表名的时候加上系统业务前缀。

比如:系统服务(sys)中,创建表加上 sys_ 前缀:sys_user,sys_role,order_pay,order_detail,...

大小写

建议命名尽量都用小写字母,小写字母阅读起来容易理解。

分隔符

一个字段名为了能达到见名知意效果,会包含多个单词,建议每个单词间使用_作为分隔符。

单词间没有分隔,或者单词间用驼峰标识,或者单词间用空格分隔,或者单词间用@分隔,这几种方式都不太建议。

通用字段统一管理

建议通用字段统一管理,比如表中的创建时间(createtime)、修改时间(update_time)、状态(status)等。
有的表使用flag表示状态、有的表status表示状态维护起来会有歧义。可以将通用字段抽象为父类。其他类通过继承父类实现字段统理解、管理。

字段类型

  • 建议在满足业务需求的情况下,选择占用存储空间小的字段类型
  • 字符串长度固定或者差别不大使用 char 类型,字符串差别较大选择 varchar 类型
  • 是否字段可以选择 bit 类型
  • 主键可以选择 bigint 类型
  • 金额字段可以选择 decimal 类型, floatdouble 可能会丟失精度
  • 时间字段可以选择 timestampdatetime 类型

主键

建议创建表时要创建 主键 并且主键要保证与业务无关,减少业务耦合方便扩展,单个数据库主键可设置为 自动增长,如果是 分布式 数据库中主键可以采用外部算法生成(比如:雪花算法)。

not null

建议定义字段时能定义成not nu1l就定义成not null,防止没有传值的时候数据还能保存成功,影响后续的使用。not null的字段需要给定默认值。

避免使用外键约束

使用外键有利于维持数据完整性和一致性,但是对于开发人员来说比较麻烦,每次删除或者修改的时候必须考虑外键约束,并且出现bug时追踪很麻烦。

冗余字段

建议合理使用冗余字段来提升查询速度,比如订单列表需要展示用户姓名,可以采用关联查询获取用户姓名,但是如果订单表和用户表数据量非常大,那么关联查询效率会比较低,可以在订单表中增加一个user_name的字段来提高查询效率。

查看更多

标签:sys,建议,技巧,必备,数据库,单词,user,主键
From: https://www.cnblogs.com/zhaojinhui/p/18145247

相关文章

  • DbMigrator迁移数据库报错:The ConnectionString property has not been initialized.
    问题执行.DbMigrator时报错:TheConnectionStringpropertyhasnotbeeninitialized.原因情况一DbContext中没有指定连接字符串解决方案情况二appsettings.json配置文件的属性没有设置为始终复制解决方案右键appsettings.json选择属性>复制到输出目录选择始终复制或......
  • 如何实现数据库数据到Abp vnext实体对象的同步?以及代码生成工具
    在采用了EFCore的CodeFirst方式下,如果你在数据库中直接添加了新表或存储过程,你需要在项目代码中手动反向工程这些数据库的更改,以保持CodeFirst的代码与数据库同步。这种情况可以通过如下两个步骤来实现:从现有数据库创建模型:使用EntityFrameworkCore的Scaffold-DbContext......
  • 【高级RAG技巧】在大模型知识库问答中增强文档分割与表格提取
    前言文档分割是一项具有挑战性的任务,它是任何知识库问答系统的基础。高质量的文档分割结果对于显著提升问答效果至关重要,但是目前大多数开源库的处理能力有限。这些开源的库或者方法缺点大致可以罗列如下:只能处理文本,无法提取表格中的内容缺乏有效的分割策略,要么是一整个文档......
  • JDBC数据库汇总Attack研究
    前言针对除Mysql的其它数据库的jdbcattack分析H2RCE介绍H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,即只有一个jar文件,可以直接嵌入到应用项目中。H2主要有如下三个用途:第一个用途,也是最常使用的用途就在于可以同应用程序打包在一起发布,这样可以非常方便地......
  • 10 个优化技巧,减少 Docker 镜像大小【转】
    什么是docker?Docker是一种容器引擎,可以在容器内运行一段代码。Docker镜像是在任何地方运行您的应用程序而无需担心应用程序依赖性的方式。要构建镜像,docker使用一个名为Dockerfile的文件。Dockerfile是一个包含许多指令(RUN、COPY、EXPOSE等)的文件。成功执行这些命令后,do......
  • 达梦数据库(DM8)安装
    达梦数据库(DM8)安装一、安装部署1.1下载本手册版本选择“DM8开发板”,CPU平台选择“X86”,操作系统选择“RedHat7”下载地址:https://www.dameng.com/DM8.html~]#wgethttps://download.dameng.com/eco/adapter/DM8/202401END/dm8_20240116_x86_rh7_64.zip1.2创建安装用户......
  • 6个高级Vue3知识技巧
    Vue3是一个非常流行的前端框架,广泛应用于大型互联网企业和个人项目。虽然我们已经熟悉了一些常见的Vue3知识,但还有一些不太常见但实用性很强的点可以帮助我们进一步优化和提升Vue3应用的性能和开发效率。本文将介绍一些不太常见的Vue3知识点。01、TeleportTeleport是V......
  • MSSQL 数据库服务器磁盘空间报警 -
    如服务器上有创建MSSQLReplication,则会自动创建distribution数据库,有时distribution数据库日志文件过大解决方案:1.第一种方案:查看日志大小, dbccsqlperf(logspace),查看哪个数据库日志文件过大,如果有数据库日志文件非常大,就需要通过检查日志的VLF使用情况来进行诊断,日志文件......
  • ETLCloud中多并行分支运行的设计技巧
    在大数据处理领域,ETL(Extract, Transform, Load)流程是至关重要的一环,它涉及数据的提取、转换和加载,以确保数据的质量和可用性。而在ETL流程中,多并行分支的运行设计是一项关键技巧,可以有效提升处理效率和性能。在本文中,我们将探讨优化ETLCloud中多并行分支运行的设计技巧和最佳实......
  • NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧
    NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧NL2SQL基础系列(1):业界顶尖排行榜、权威测评数据集及LLM大模型(SpidervsBIRD)全面对比优劣分析[Text2SQL、Text2DSL]NL2SQL基础系列(2):主流大模型与微调方法精选集,Text2SQL经典算法技术回顾七年发展脉络梳理NL2SQL进......