本文将介绍数据库设计规范,包括命名规范和字段类型选择。 一、命名规范 表名和字段名使用小写字母,单词之间使用下划线分隔,如:user_table, user_id。 三、具体案例 数据库设计规范是指在设计数据库时需要遵循的一些规范和原则,以确保数据库的结构合理、性能优良、易于维护和扩展。下面是一个案例分析,说明数据库设计规范的具体应用。 根据数据库设计规范,我们可以进行如下的表设计: 学生表(students) 学生ID(student_id):主键,唯一标识一个学生。 姓名(name):学生的姓名。 根据数据库设计规范,可以对上述表设计进行如下优化: 主键和外键的设计: 主键应该是唯一标识一条记录的字段,可以使用自增长或UUID等方式来生成主键值。 通过以上的数据库设计规范,建立弱关联,可以设计出一个结构合理、性能优良、易于维护和扩展的学生管理系统数据库。 四、总结 在数据库设计中,合理的命名规范和字段类型选择对于系统的性能和可维护性至关重要。
数据库的重要性不言而喻。对程序员来说跟数据库打交道更是家常便饭。数据库给开发带来了巨大的便利。我们或多或少的知道一些数据库设计规范,但并不全面。 数据库设计规范包括命名规范、库表基础规范、字段规范、索引规范和SQL设计规范。 1. 命名规范 1.1 库名、表名、字段名禁止使用MySQL保留字。 2.9 尽量只存储单一实体类型的数据 2.10 数据库中不允许存储明文密码 所有的密码、scret key和SSH key等类似的保密信息,必须经过非对称加密,再保存到数据库中。 数据库在处理的时候,需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。 SQL设计规范 5.1 所有关键字的所有字母必须大写 5.2 杜绝直接SELECT *读取全部字段 即使需要所有字段,明确指定所需字段也能减少网络带宽消耗,能有效利用覆盖索引,表结构变更对程序基本无影响
1.为什么需要数据库设计 2.范式 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。 要想设计一个结构合理的关系型数据库,必须满足一定的范式。 数据库性能和规范化数据的矛盾,和现实世界一致。 4.E-R模型 什么是E-R模型? 实体关系模型 什么时候要用E-R模型? 在开发基于数据库的信息系统的设计阶段,通常用ER模型来描述信息需求和信息特征,帮助理清业务逻辑,从而设计出优秀的数据库。特别是对于大型复杂的项目。 ER模型包括哪些要素? 关系的类型?
规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。 本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2. 设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 2.1.6 字符集 【强制】数据库本身库、表、列所有字符集必须保持一致,为utf8或utf8mb4。 【强制】前端程序字符集或者环境变量中的字符集,与数据库、表的字符集必须一致,统一为utf8。 因为他们消耗数据库资源,降低数据库实例可扩展性。推荐都在程序端实现。 【强制】禁用insert into …on duplicate key update…在高并发环境下,会造成主从不一致。
规范十,对于字典类型的表,因数据量少,修改少,影响面大,应依赖数据库约束来确保数据质量。对于日志或流水型表,为了提升效率,可以适当放宽限制。 规范十一,对于字段设计:越简单越好,越小越好。
范 式 范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结 构需要满足的某种设计标准的 级别 。 要想设计一个结构合理的关系型数据库,必须满足一定的范式。 范式都包括哪些 目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是:第一范式(1NF)、第二范式 (2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF 为了使表符合 1NF ,我们应该有如下表数据: 举例2: user 表的设计不符合第一范式 其中,user_info字段为用户信息,可以进一步拆分成更小粒度的字段,不符合数据库设计对第一范式的 要求
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意 bak_ 为前缀并以日期 (时间戳) 为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低) 数据库基本设计规范 数据库和表的字符集统一使用 UTF8 兼容性更好,统一字符集可以避免由于字符集转换产生的乱码,不同的字符集进行比较前需要进行转换会造成索引失效,如果数据库中有存储 emoji 表情的需要,字符集需要采用 禁止在数据库中存储图片,文件等大的二进制数据 通常文件很大,会短时间内造成数据量快速增长,数据库进行数据库读取时,通常会进行大量的随机 IO 操作,文件很大时,IO 操作很耗时。 通常存储于文件服务器,数据库只存储文件地址信息 禁止在线上做数据库压力测试 禁止开发环境、测试环境直接连接生成环境数据库
一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。 二、数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新 e) 外键约束一般不在数据库上创建,只表达一个逻辑的概念,由程序控制。 f) 当万不得已必须使用外健的话,必须在外健列创建 INDEX。
一、MYSQL数据库设计规范 1、数据库命名规范 a、采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线’_'组成; b、命名简洁明确(长度不能超过30个字符); c、例如:user , stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; d、除非是备份数据库可以加0-9的自然数:user_db_20151210; 2、数据库表名命名规范 user_role_relation, user_role_right, user_role_right_relation 注:表前缀’user_'可以有效的把相同关系的表显示在一起; 3、数据库表字段名命名规范 ); IP地址最好使用int类型; 固定长度的类型最好使用char,例如:邮编; 能使用tinyint就不要使用smallint,int; 最好给每个字段一个默认值,最好不能为null; 5、数据库表索引规范 1、第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式); 例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段; 2、第二范式(2NF):一个表必须有主键
字段设计规范 1. decimal Decimal 类型为精准浮点数,在计算时不会丢失精度;占用空间由定义的宽度决定,每 4 个字节可以存储 9 位数字,并且小数点要占用一个字节;可用于存储比 bigint 更大的整型数据 索引设计规范
为了达到数据库设计规范的要求,一般来说,需要符合以下几个要求。 虽然表中允许有空列,但是,空字段是一种比较特殊的数据类型,数据库在处理的时候 需要进行特殊的处理,这样的话,就会增加数据库处理记录的复杂性,当表中要比较多的空字段时,在同等条件下,数据库处理的性能会降低许多 数据库对象要有统一的前缀名 一个比较复杂的应用系统,其对应的数据表往往数以千计,钥匙让数据库管理员看到对象名就了解这个数据库对象所起的作用 这样比较困难,而且在数据库对象引用的时候,数据库管理员也会为不能迅速找到数据对象对发愁 为此在开发数据库之前,最好花时间去制定一个数据库的对象的前缀命名规范, 如在设计数据库时和前台应用程序协商,确定合理的命名规范,如和物料管理模块相关的表可以用M为前缀,而订单管理相关的就用C作为前缀,具体采用什么前缀就根据用户的爱好 就需要为每次出版的图书增加作者信息,这无疑会增加额外的存储空间,也会增加记录的长度,而且作者的情况有变,如住址修改,这样还会修改每本书的记录,同属若这个作者的数从库中全部删除后,跟着这个作者的信息也就没了很明显这不符合数据库设计规范要求
规范背景与目的 MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。 本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。 2. 设计规范 2.1 数据库设计 以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。 对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。 2.1.6 字符集 【强制】数据库本身库、表、列所有字符集必须保持一致,为utf8或utf8mb4。 【强制】前端程序字符集或者环境变量中的字符集,与数据库、表的字符集必须一致,统一为utf8。 因为他们消耗数据库资源,降低数据库实例可扩展性。推荐都在程序端实现。 【强制】禁用insert into …on duplicate key update…在高并发环境下,会造成主从不一致。
编码规范 UTF-8 表设计规范 必须有主键 主键递增,可提高写入性能,减少碎片 禁止使用外键 降低表之间的耦合,不要涉及更新操作的级联,并发高情况极度影响SQL性能 字段设计规范 必须有注释 不然鬼才知道代表什么意思 ,默认current_timestamp,on update current_timestamp is_deleted:逻辑删除标志位,视情况选择 禁止使用text\blob 浪费磁盘和内存空间,影响数据库性能 尽量使用分或者更小的单位用整数存储,否则精度的问题会很麻烦 命名规则 表、列 使用业务模块开头,如tb_order,列名以下划线分割 索引 create_time、update_time必须包含索引 主键索引 数据库自动
一、三范式 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。 要想设计一个结构合理的关系型数据库,必须满足一定的范式。 1.第一范式 确保每列保持原子性 列不可分 有主键 根据实际需求来定。 比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。 这样设计才算满足了数据库的第一范式,如下表所示。 二、数据库表设计规范 1.表与字段的规范 (1)表达是与否概念的字段,必须使用 is _ xxx 的方式命名,数据类型是 unsigned tinyint( 1 表示是,0 表示否 ) 。
反范式化 # 3.1 概述 规范化 vs 性能 为满足某种商业目标,数据库性能比规范化数据库更重要 在数据规范化的同时,要综合考虑数据库的性能 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间 我简单总结下数据仓库和数据库在使用上的区别: 数据库设计的目的在于 捕捉数据 ,而数据仓库设计的目的在于 分析数据 。 BCNF 被认为没有新的设计规范加入,只是对第三范式中设计规范要求更强,使得数据库冗余度更小。所以,称为是 修正的第三范式 ,或 扩充的第三范式 ,BCNF 不被称为第四范式。 【强制】禁止在数据库中存储图片、文件等大的二进制数据 通常文件很大,短时间内造成数据量快速增长,数据库进行数据库读取时,通常会进行大量的随 机 IO 操作,文件很大时,IO 操作很耗时。 可视化工具除了方便,还能直接帮我们将数据库的结构定义转化成 SQL 语言,方便数据库和数据表结构的导出和导入。
一、数据库设计流程 1、需求分析 确定用户对数据库系统的使用要求和各种约束条件,形成用户需求规约 2、概念设计 对用户要求描述的现实世界,通过对其分类、聚集和概括,建立抽象的概念数据模型 3、逻辑设计 将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式 4、物理设计 对具体的应用任务选定最合适的物理存储结构、存取方法和存取路径等 5、验证设计 在其他设计基础上 ,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性 6、运行与维护设计 在数据库系统正式投入运行的过程中,必须不断地对其进行评估、调整与修改 二、E-R图 1、什么是实体 四、数据库设计常用规范 为了优化数据库的设计,提高数据库设计的合理性和数据访问高效性,同时便于阅读和理解数据库的结构,以提高数据共享的质量和效率,促进数据库编码的标准化,特制订一套数据库规范 1、数据库命名规则 (1)对象名 使用有意义的英文单词,杜绝使用汉语拼音,单词之间用下划线分割 最大长度32个字符 名称中的缩写要统一 尽量使用名词结构 (2)表名、字段名 2、数据库设计规范 五、E-R数据模型设计
在现代数据库技术领域,实现高性能访问及数据一致性是设计数据库系统时面临的关键挑战。随着数据规模和应用复杂度的不断提高,传统的数据库设计方法面临性能瓶颈、扩展性限制及一致性保障难题。 本文旨在系统梳理YashanDB的数据建模与设计规范,细化关键技术点,帮助开发人员和DBA准确理解和应用,以提升数据库设计的科学性和实用性。1. 存储结构与表设计规范YashanDB支持HEAP(行存表)、MCOL(可变列式存储的列存表,TAC表)及SCOL(稳态列式存储的列存表,LSC表)三种存储结构,分别适配OLTP、HTAP及OLAP场景。 结论本文从YashanDB的部署架构、存储结构、索引机制、事务管理、分区与访问约束、安全防护等多个技术维度,对数据建模与设计规范进行了系统性梳理。 合理运用YashanDB提供的丰富功能和灵活策略,能够有效提升数据库的性能、可用性及安全性。
主键类型 在解释数据设计规范之前先理解物理主键、逻辑主键和业务主键的区别: 物理主键即认为是数据库的自身的物理标识主键,例如oracle的ROW_ID,mysql的自增Sequence,物理主键除了具备独立的物理特性 ,也是数据库连接数据的核心。 逻辑主键是与数据库无关的非业务意义的主键,用于对行数据的唯一性进行标识。在单数据库系统中,通常不需要逻辑主键,而在分布式系统中,逻辑主键的意义重大。 无论是什么数据库,逻辑主键要求全库(所有的数据库)唯一。某些时候可以将物理主键和逻辑主键合二为一。 业务主键是指与含有业务特性的的主键,例如订单编号会以 时间+流水号+业务编号实行存在。 所以最大效率的保证b+树主键和索引数据进入的递增性对于数据库的性能有决定性作用(b+树越扁平,效率越高)。
二、界面图片设计比例 常见图片尺寸比例:16:9、4:3、1:1、1:0.618(黄金比例)等 三、APP版式设计规范 对齐、对称、分组 四、文字设计规范 文字是APP中最核心的元素,是产品传达给用户的主要内容 五、文字设计规范 iOS 主流设备的分辨率分别是: 640x1136px:【(@2x)iPhone SE 】 750 x1134px:【(@2x)iPhone6s/7/8 】 1242x2208px:【
有幸在刚入部门就参与设计规范制定,前前后后大概花费一个月时间。本次博文结合亲身参与的制定规范项目,围绕:设计规范的重要性,制定规范的时机,制定的过程和后续工作这几个方面来总结和分享。 设计规范的重要性 设计总监刚开始召集设计师讨论立项制作设计规范时,就有设计师提出“规范只是公司给外部看的一种噱头”,更像是体现一种公司视觉形象(VI)。 制定设计规范过程 设计规范虽然只是简单几页,但那是浓缩概括的结果,并非一蹴而就。 及时地总结对后期设计规范的制定打下良好基础,否则很容易忘记设计初衷,找不到文件或者设计负责人等等问题。 总结归纳会议 准备制作设计规范时,需要召集各产品线上的设计师将设计结果进行汇总和提炼。 规范标准 先看几个优秀的设计规范:微信weui与weui文档;Ant Design ; Material Design;IBM Design Language 优秀设计规范拥有明确层级和逻辑,便于其他组员查找相应内容