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

#数据库设计规范#

数据库的重要性不言而喻。对于层序员来说跟数据库打交道更是家常便饭。数据库给开发带来了巨大的便利。我们或多或少的知道一些数据库设计规范,但并不全面,下面我

数据库的重要性不言而喻。对于层序员来说跟数据库打交道更是家常便饭。数据库给开发带来了巨大的便利。我们或多或少的知道一些数据库设计规范,但并不全面,下面我就简单整理一下我自己平时的总结梳理。
1、 库名,表名,字段名禁止使用mySQL保留字
2、 库名 表名 字段使用常用英语而不要使用编码,常见名知意,命名与业务,产品线等相关联。
3、 库名 表名 字段名必须是名词的复数形式,并且使用小写字母,多个名词采用下划线,这些表名都是不可以超过32个字符的,是禁止超过。

数据库的三范式
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式,第一范式的合理遵循需要根据系统的实际需求来定,比如某些数据库中需要用到地址 这个属性,本来直接将地址属性设计成一个数据库表字段就行了,但是如果系统经常会访问地址属性中的城市部分,那么就非要将地址这个属性重新拆分为省份 城市 详细地址等多个部分进行储存,这样在对地址中某一些部分操作的时候就将非常方便。这样设计才满足了数据库的第一范式。
第二范式在第一范式的基础上更进一层,第二范式需要确保数据库表中的每一列都和主键相关,而不能与主键的某一些部分相关,主要针对联合主键而言。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
在这里插入图片描述

此图片来源于网络
在我们平时需要设计数据库的时候,以我们的设计经验都是先进行数据的分析,看看有哪些数据或者哪些表,我们经常会出现数据库异常这种情况,就是因为在设计数据库的时候没有把表设计规范,导致后面的项目无法使用数据库中的数据,我们先根据需求看看需要哪些表,建一个文档出来,然后再进行建表,这样就不会那么乱了,如果没有提前规划出来,你一边看一边建表就会很乱的,样式如下面图片
在这里插入图片描述
数据表的是基本性值
基本表与中间表、临时表不同,因为它具有如下四个特性
1原子性,基本表中的字段是不可再分解的。
2原始性,基本表中的记录是原始数据 基础数据 的记录
3演绎性,由基本表与代码表中的数据,可以派生出所有的输出数据
4稳定性,基本表的结构是相对稳定的,表中的记录是要长期保存的
理解基本表的性质后,在设计数据库时,就能将基本表与中间表,临时表区分开来。

防止数据库设计打补丁的方法是 三少原则
一个数据库中表的个数越少越好,只有表的个数少了,才能说明系统的图少而精,去掉了重复的多余的从,实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计
一个表中组合主键的字段个数越少越好,因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段少了,不仅节省了运行时间,而且节省了索引存储空间
一个表中的字段越少越好,只有字段的个数少了,才能说明数据中不存在重复数据,且很少有数据沉余,更重要的是督促读者学会 列变行 这样就防止了将字表段拉入到主表中去,在主表中留下许多空余的字段,所谓 列变行,就是将主表中的一部分内容拉出去,另外单独建一个子表,这个方法简单,有的人就是不习惯。不采纳 不执行。
数据库设计的实用原则是:在数据沉余和处理速度之间找到合适的平衡点。 三少 是一个整体的概念,综合观点,不能孤力谋一个原理,该原则是相对的,不是绝对的,三多 原则肯定是错误的
提倡 三少 原则,是让你们学会利用数据库设计技术进行系统的数据集成,数据集成的步骤是将文件系统集成,为应用的数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。集成的程度越高,数据共享性就越强,信息孤岛现象就越少,整个企业信息系统的全局 图中实体的个数,主键的个数,属性的个数就会越来越少

提高数据库运行效率的办法
在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是
1、 在数据库物理设计时,降低范式,增加沉余,少用触发器,多用存储过程
2、 当计算非常复杂,而且记录条数非常巨大时(例如一千万条时,这是电信计费系统设计的经验
3、 发现某个表记录太多,则要对该表进行水平分割。水平分割的做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表,即可以维护 表行数过大 手动分割为两个 建个两表。
4、 对数据库管理系统DBMS进行系统优化,即优化各种参数,如缓冲区个数
数据库命名规范
1、表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部大写或首字母大写,表名中包含的单词首字母大写
2、数据库表名应该有意义,并且易于理解,最好可以表达功能的英文单词或缩写,如果用英文单词表示,建议使用完整的英文单词。
3、表名不要太长,最好不超过三个英文单词长度
4、如果是后台表命名时应该在表名基础上加后缀
6、在创建完表之后,记得为表添加上注释
在这里插入图片描述

在这里插入图片描述


推荐阅读
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • MySQL Server 8.0.28 升级至 8.0.30 的详细步骤
    为了修复安全漏洞,本文档提供了从 MySQL Server 8.0.28 升级到 8.0.30 的详细步骤,包括备份数据库、停止和删除旧服务、安装新版本以及配置相关环境变量。 ... [详细]
  • 本文详细介绍了 Oracle 数据库的自动备份机制及其安装步骤。通过具体示例,解释了系统变更号(SCN)和块结构在备份过程中的作用,以及热备份恢复的具体步骤。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 在 CentOS 7 环境中使用 MySQL 5.6 镜像启动数据库时遇到权限问题,本文将详细探讨并提供解决方案。 ... [详细]
  • 本文详细介绍了如何在PHP中记录和管理行为日志,包括ThinkPHP框架中的日志记录方法、日志的用途、实现原理以及相关配置。 ... [详细]
  • 本文旨在解决 MySQL 无法连接到 localhost 的常见问题,并提供详细的步骤来确保 MySQL 服务正确启动和配置。 ... [详细]
  • 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。netstat -anlp | grep mysqltcp 0&am ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 深入理解Redis中的字典实现
    本文详细介绍了Redis中字典的实现机制,包括其底层数据结构、哈希表与哈希节点的关系、元素添加方法及rehash操作的具体流程。 ... [详细]
  • 数据仓库ETL开发过程中,如何有效进行测试是一个关键问题。由于数据仓库通常包含大量数据,并且出于安全考虑,开发库和测试库的数据与生产库不完全一致,这给测试带来了挑战。本文将探讨适用于ETL开发的测试方法,包括单元测试、集成测试以及具体测试技术。 ... [详细]
  • 本文介绍了Java编程语言的基础知识,包括其历史背景、主要特性以及如何安装和配置JDK。此外,还详细讲解了如何编写和运行第一个Java程序,并简要介绍了Eclipse集成开发环境的安装和使用。 ... [详细]
author-avatar
唐耿铠1_747
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有