MySQL数据库开发规范1.3

合集下载

《数据库技术与应用》课程标准(完整版)

《数据库技术与应用》课程标准(完整版)

《数据库技术与应用》课程标准课程代码:MB010020 课程类型:理论+实践课程属性:专业基础课适用专业:计算机网络技术学分:2.5 学时:48课程负责人:参编人员:一、课程定位(一)课程性质该课程是计算机网络技术专业课程体系中的一门专业基础课程,对后续数据库应用系统的开发起着铺垫作用。

该课程与职业岗位紧密联系,对学生职业素质与职业能力的培养具有实践指导作用。

(二)课程作用通过对该课程的学习,使学生掌握数据库的基本知识,掌握创建、维护和管理数据库的基本方法,学会并熟练掌握应用数据库存储、维护和查询数据的实践操作能力。

(三)前导、后续课程前导课程:《计算机基础》、《编程基础》后续课程:《PHP高级开发》、《网络安全》二、课程设计思路《数据库技术与应用》作为计算机网络专业的一门专业课,该课程主要任务是使学生能够理解性地掌握数据库主要技术,能够适应数据库应用开发岗位所需要的各种素质和技能。

或者说,培养面向数据库应用开发岗位,实践能力强、具有良好职业道德的高技能人才。

本课程是一门以实践为主的课程,同时兼顾概念的理解。

该课程每周4课时,授课方式为理论、实践一体化教学;主要教学方法有行动导向法、项目驱动法、多媒体演示法等;主要学习方法有小组学习法、自主学习法、项目模仿学习法、DBA项目任务实战学习法等。

三、课程目标(一)能力目标1.创建并维护数据库的能力;2.创建和管理表、编辑数据的能力;3.检索数据的能力;4.利用MYSQL语言编写简单应用程序的能力;5.创建索引、视图、存储过程和触发器的能力;6.对数据进行复制和恢复的能力;7.数据安全性、完整性保证的能力。

(二)知识目标1.掌握数据库的基本概念;2.掌握数据库软件的安装和主要组件的操作方法;3.掌握数据收集和数据库分析与设计方法;4.掌握数据库创建、维护和管理的方法;5.掌握数据检索等基本应用。

(三)素质目标1.诚实、正直;2.客观,善于沟通;3.具有敬业精神;4.有团队意识、学习能力强。

mysql数据库规范

mysql数据库规范
MySQL数据库使用规范涉及多个方面。首先,推荐使用InnoDB存储引擎,因其支持事务、行级锁,并发性能好,资源利用率高。新库应采用utf8mb4字符集,避免乱码风险。数据库表及字段需加中文注释,以提高可读性。规范中禁止使用存储过程、视图、触发器和Event,以减轻数据库负担。同时,禁止在数据库中存储大文件或照片。对于线上、开发、测试环境的数据库命名,也有明确的约定。在表结构设计上,要求表名、字段名小写、下划线风格,且必须直观易懂。单实例表数不得超过500,单表列数小于30,且表必须有主键。字段设计方面,禁止使用外键,字段应定义为NOቤተ መጻሕፍቲ ባይዱ NULL并提供默认值,避免使用TEXT和BLOB类型以节省空间和提高性能。对于货币,应使用整数而非小数存储。此外,还有关于索引设计和SQL编写的详细规范,如单表索引建议控制在5个以内,避免在频繁更新、低区分度的属性上建索引,以及编写SQL时的具体注意事项。最后,行为规范部分强调了环境隔离、避免隐式属性转换等要求,以确保数据库的安全和稳定。

MySQL数据库表和字段命名规范

MySQL数据库表和字段命名规范

MySQL数据库表和字段命名规范导言:在数据库设计和开发中,表和字段的命名规范是非常重要的。

一个良好的命名规范能够提高代码的可读性、可维护性和辨识度。

本文将介绍一些常见的MySQL 数据库表和字段命名规范,希望对读者在数据库开发中有所帮助。

一、表命名规范1. 采用小写字母命名表名。

这样可以避免在跨平台时大小写不敏感的问题,并且有助于代码的一致性。

2. 多个单词用下划线(_)分隔。

例如,user_info、order_detail等。

3. 尽量给表名取得有意义且具有描述性的名字,能够清楚表达出表所存储的内容。

二、字段命名规范1. 采用小写字母命名字段名。

同样,这可以避免大小写不敏感的问题。

2. 也可以使用下划线(_)分隔。

例如,create_time、user_id等。

3. 尽量给字段取得有意义的名字,能够清楚表达字段所存储的数据。

三、表和字段命名的一些约定1. 避免使用MySQL保留字作为表名或字段名。

在MySQL中有一些保留字(如select、update等),如果使用这些保留字作为表名或字段名,可能引发一些潜在的问题,在查询时需要特殊处理。

可以在命名中加上下划线或其他可辨识符号来避免与保留字的冲突。

2. 避免使用过长或过于简短的命名。

过长的命名可能造成代码的冗余,过于简短的命名可能不具备辨识度。

合理的命名长度可以提高代码的可读性和可维护性。

3. 避免使用缩写和简写。

虽然缩写和简写可以减少字符数,但是在团队协作中容易引起误解和混淆。

具有明确、清晰含义的命名可以降低开发和维护的成本。

4. 保持命名的一致性。

在整个数据库中,保持表和字段的命名一致性,可以提高理解和维护代码的效率。

例如,如果一个表的主键命名为"id",那么在其他表中也保持主键命名为"id",而不是使用其他类似"pk"或"key"的名称。

四、表和字段命名的示例以下是一些常见的表和字段命名示例,仅供参考,读者可以根据实际情况进行调整:1. 用户信息表:user_info(字段包括user_id, username, password, email等)2. 订单详情表:order_detail(字段包括order_id, product_id, quantity等)3. 商品信息表:product_info(字段包括product_id, product_name, price等)4. 地址信息表:address_info(字段包括address_id, user_id, address等)结论:良好的MySQL数据库表和字段命名规范是数据库开发中必不可少的一部分。

mysql 数据库设计规约 概述及解释说明

mysql 数据库设计规约 概述及解释说明

mysql 数据库设计规约概述及解释说明1. 引言1.1 概述在现代信息化的社会背景下,数据库成为了各个行业中不可或缺的重要组成部分。

而数据库的设计规范则是确保数据库系统高效、可靠运行的基础。

MySQL作为目前最流行的关系型数据库管理系统之一,其设计规约对于保证数据的完整性和一致性至关重要。

本文将对MySQL数据库设计规约进行深入解释和说明,旨在提供给读者一个全面了解MySQL数据库设计规范及其重要性的视角。

1.2 文章结构本文将从以下几个方面进行详细阐述:引言、数据库设计规约解释说明、MySQL 数据库基础知识回顾、创建数据库和表格时应遵循的规范以及设计数据库关系时应遵循的规范。

通过这些内容,读者可以全面了解到MySQL数据库设计规约相关的核心概念和实践经验。

1.3 目的本文的目标可以总结为以下几点:首先,介绍和解释什么是MySQL数据库设计规约以及它们对于构建高度可管理和可扩展的数据库系统所起到的作用。

其次,回顾MySQL数据库的基础知识,包括它的特点、优势以及基本组成与架构。

这样可以为读者提供一个全面的背景,以便更好地理解如何使用数据库设计规范。

接着,讨论在创建数据库和表格时应遵循的规范。

这包括数据库、表格和字段命名规范以及注意事项。

通过明确这些规范,可以保证数据库在整个开发过程中的一致性和稳定性。

最后,探讨设计数据库关系时应遵循的规范。

主要包括主键、外键和索引设计原则、建立表格之间的关系以及范式理论在数据库设计中的应用。

这些规范将帮助读者优化数据库结构和关系,提高数据处理效率。

通过本文内容的解释与说明,读者将能够深入了解MySQL数据库设计规约,并能够在实际项目中灵活应用。

同时,也将对构建高效可靠的MySQL数据库系统具备更加全面和深入的认识。

2. 数据库设计规约解释说明2.1 数据库设计规约的定义和作用数据库设计规约是指在设计和开发数据库时需要遵循的一系列规范和准则。

它们旨在确保数据库的结构合理、高效,并且能够满足系统需求。

《MySQL数据库技术与应用》课程标准

《MySQL数据库技术与应用》课程标准

《MySQL数据库技术与应用》课程标准《MySQL数据库技术与应用》是一门培养学生数据库管理与应用能力的专业课程。

本课程将为学生提供MySQL数据库的全面了解,包括数据库设计、表创建和维护、数据查询和更新、数据库安全以及性能优化等方面的知识。

通过本课程的学习,学生将能够熟练掌握MySQL数据库的基本操作和高级应用,为进一步学习和从事相关领域的工作打下坚实的基础。

掌握MySQL数据库的基本概念和体系结构,了解数据库设计的基本原则和规范。

掌握MySQL数据库的安装与配置,以及客户端工具的使用。

掌握表的设计与创建,包括表的结构、主键、外键、索引等概念及操作。

掌握SQL语言的基本语法和用法,包括数据查询、插入、更新和删除等操作。

掌握存储过程、函数和视图等数据库对象的设计与实现。

掌握触发器、事务和锁等高级特性的使用及管理。

了解数据库安全性和性能优化的基本概念和方法。

能够根据实际需求设计并实现简单的数据库应用系统。

、1数据库安全性概述2用户管理3权限管理4数据备份与恢复第八章数据库性能优化1性能优化概述2 SQL优化3索引优化4系统优化5数据字典与元数据管理第九章数据库应用系统设计与实现1系统需求分析2系统设计3系统实现4系统测试与部署课程实施本课程的实施将采用理论教学与实践教学相结合的方式,以培养学生的实际操作能力为核心目标。

具体措施包括:1)建立完善的课程体系,确保教学内容的完整性和系统性;2)采用多媒体教学、网络教学等多种手段,提高教学效果;3)加强实践教学环节,设置相应的实验课程和项目,提高学生的实际操作能力;4)鼓励学生参加各种相关比赛和实践活动,提高其综合素质和应用能力。

课程评价本课程的评价将采用多种方式相结合的方式,以全面了解学生的学习情况和综合素质。

具体措施包括:1)平时成绩:通过课堂表现、作业完成情况等方面进行评定;2)实验成绩:通过实验课程和项目的完成情况进行评定;3)期末考试成绩:通过综合考试或项目答辩等方式进行评定;4)综合评价:结合学生的综合素质和应用能力进行评价。

mysql建表原则

mysql建表原则

mysql建表原则MySQL建表原则MySQL是一种常用的关系型数据库管理系统,它的建表原则对于数据库设计和优化非常重要。

下面我们将详细介绍MySQL建表的原则,以便开发人员能够更好地利用MySQL数据库。

一、命名规范1.1 表名表名应该简洁明了,不要使用过长或者过于复杂的名称。

可以使用下划线(_)或者驼峰式命名法来命名表名。

1.2 列名列名也应该简洁明了,不要使用过长或者过于复杂的名称。

可以使用下划线(_)或者驼峰式命名法来命名列名。

二、数据类型选择2.1 数值类型在选择数值类型时,应该根据实际需要选择合适的数据类型。

比如:tinyint、smallint、mediumint、int和bigint等整数类型;float和double等浮点数类型。

2.2 字符串类型在选择字符串类型时,应该根据实际需要选择合适的数据类型。

比如:char、varchar和text等字符类型;binary、varbinary和blob等二进制类型。

三、主键与索引设计3.1 主键设计每个表都应该有一个主键,并且主键应该是唯一的。

通常情况下,主键使用自增长整数作为标识符。

3.2 索引设计在设计索引时,应该根据实际需要选择合适的索引类型。

比如:普通索引、唯一索引、全文索引和空间索引等。

四、表的结构设计4.1 表的字段设计在设计表的字段时,应该遵循以下原则:(1)尽量避免使用NULL值,因为它会占用额外的存储空间。

(2)尽量避免使用TEXT和BLOB类型,因为它们会占用大量的存储空间。

(3)尽量避免使用ENUM类型,因为它会增加查询的复杂度。

4.2 表的关系设计在设计表之间的关系时,应该遵循以下原则:(1)使用外键来建立表之间的关系。

(2)避免使用多对多关系,因为它会增加查询和维护的复杂度。

(3)尽量将数据拆分成多个表,以便更好地管理和维护数据。

五、性能优化原则5.1 数据库范式化将数据分解成多个独立的表,并通过外键建立关联。

mysql数据表设计原则

MySQL数据表设计原则1. 介绍MySQL是一种广泛使用的关系型数据库管理系统,因其稳定性、可靠性和性能而备受开发者的喜爱。

在使用MySQL时,数据表设计是至关重要的一环。

一个良好的数据表设计可以提高数据库的性能、可维护性和扩展性。

本文将探讨MySQL数据表设计的原则,帮助开发者避免常见的设计错误和陷阱。

2. 数据表设计原则2.1 单一职责原则在设计数据表时,每个数据表应该只负责一个明确的职责或实体。

遵循单一职责原则可以使数据表更加清晰、可理解和易于维护。

如果一个数据表负责多个职责或实体,会导致数据冗余、数据冗杂和操作复杂化。

2.2 数据表命名规范良好的命名规范可以提高代码的可读性和可维护性。

在设计数据表时,应遵循以下命名规范: - 使用有意义的表名:表名应具有描述性,能够清晰地表达表的内容。

- 使用小写字母和下划线:表名应使用小写字母和下划线,以增加可读性和一致性。

- 避免使用保留字:表名不应使用MySQL的保留字,以免引起冲突和错误。

2.3 数据字段设计数据字段是数据表中最基本的组成单元,其设计至关重要。

在设计数据字段时,应遵循以下原则: - 使用合适的数据类型:选择适当的数据类型可以减小数据存储空间、提高查询性能并确保数据完整性。

例如,使用整数类型存储整数值,使用字符串类型存储文本。

- 使用适当的字段长度:字段长度应根据实际需求进行设置,过长的字段会浪费存储空间,而过短的字段可能导致数据被截断。

- 避免使用保留字段名:避免使用MySQL的保留字段名作为数据字段,以免引起冲突和错误。

- 使用合适的主键:每个数据表都应该有一个主键,用于唯一标识表中的每一行数据。

主键可以是单个字段,也可以是多个字段的组合。

- 添加索引以提高查询性能:对于经常被用于查询的字段,可以添加索引以加快查询速度。

但过多的索引会增加写入操作的开销。

2.4 规范化和反规范化数据库的规范化是指将数据表拆分成多个关联的数据表,以消除数据冗余。

mysql数据表设计原则

mysql数据表设计原则Mysql是一种开源的关系型数据库管理系统,它广泛应用于各种网站和应用程序中。

在使用Mysql时,数据表设计是非常重要的一部分。

本文将介绍mysql数据表设计的原则。

一、概述1.1 数据库设计的重要性数据库设计是任何软件开发项目的关键步骤之一。

一个良好的数据库设计可以提高数据存储和检索效率,降低维护成本和风险,并使系统更加灵活和可扩展。

1.2 数据表设计原则在mysql中,数据表设计需要遵循一些基本原则。

这些原则包括:规范化、简洁性、可读性、可扩展性、可维护性等。

二、规范化2.1 什么是规范化?规范化是指将一个复杂的数据结构分解成多个简单的结构,并通过关系连接来实现对这些结构的访问。

规范化可以消除冗余信息,并确保每个数据项只在一个地方存储,从而提高了数据存储和检索效率。

2.2 规范化级别mysql支持三个规范化级别:第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

通常情况下,我们应该尽可能地满足第三范式。

2.3 规范化的优点规范化可以提高数据存储和检索效率,降低维护成本和风险,并使系统更加灵活和可扩展。

同时,规范化还可以减少数据冗余,提高数据的一致性和完整性。

三、简洁性3.1 什么是简洁性?简洁性是指数据表设计应该尽可能地简单明了,避免不必要的复杂性。

在mysql中,一个简单的数据表通常比一个复杂的数据表更易于维护和管理。

3.2 如何实现简洁性?实现简洁性需要注意以下几点:(1)避免过度设计。

只需创建必要的字段和索引即可。

(2)避免使用过多的触发器、存储过程等数据库对象。

(3)避免使用过多的外键关系。

外键关系可以增加数据一致性,但也会增加查询时间和写入时间。

四、可读性4.1 什么是可读性?可读性是指数据表设计应该易于理解和阅读。

在mysql中,一个易于理解和阅读的数据表可以提高开发效率,并降低出错率。

4.2 如何实现可读性?实现可读性需要注意以下几点:(1)使用有意义的字段名。

数据库管理规范

数据库管理规范版本号:V1。

0信息科2017年4月数据库管理规范1 规范说明 (1)2 维护管理安全规范 (1)3设计规范 (2)4。

SQL编写规范 (5)5. 数据库备份与恢复策略规范 (6)6开发测试与上线安全规范 (7)7 监控 (7)8连接池使用规范 (8)9 数据库重要级别划分 (8)10 数据库安装规范 (8)11 业务上线数据库部分规范 (9)1 规范说明本规范是针对数据库使用,维护管理,设计开发等.2 维护管理安全规范2.1数据库版本使用规范【强制】MYSQL使用5.6。

39社区版本2.3数据库账户安全与管理规范2。

3.1 密码安全【强制】●密码不少于8位,应包含数字,字母,字符●密码不应该和用户名一致●删除数据库默认空用户账户●必须修改root密码2。

4账户安全管理【强制】●为应用程序设立独立访问账户●禁止开发工程师通过应用帐号登录生产数据库●禁止QA申请线上账号与使用账号登陆线上环境进行测试●数据库只有root用户具有最高管理权限●备份数据库用户要单独建立,并专属备份恢复操作●数据库安装后删除或锁闭不需要使用的数据库账号●数据库管理员账户可以锁定和解锁其他用户●数据库管理账户在空闲5分钟以上会自动退出●数据库管理权限账号不能超过2个2。

5数据库日志管理规范【强制】windows、linux 下的日志管理●Windows系统应开启日志功能,记录系统和系统中各个进程的相关信息●linux的操作系统要开启系统日志●Mysql数据库如果使用了innodb引擎必须打开二进制日志●Mysql必须打开慢日志,并且将慢日志阀值设置为1—2秒之间●对Mysql的错误日志等要进行定期查看,定期清理和定期备份管理2.6数据库架构规范【强制】2.6。

1 mysql数据库高可用●MYSQL 采用复制+第三方心跳软件或者第三方集群架构(经测试后)实现近7X24小时高可用性要求,数据库架构必须能够实现故障自动迁移,满足业务7X24小时持续服务要求3设计规范3。

MySQL数据库原理及应用实战教程单元导学案MySQL数据库原理及应用实战教程课程大纲

《MySQL数据库原理及应用实战教程》课程大纲1.课程定位和课程设计1.1 课程性质与作用本课程计算机应用技术专业的一门专业核心课程。

本课程将数据库理论和MySQL数据库操作与管理整合为一体,按照“数据库设计、数据库创建、数据库使用、数据库管理”的数据库应用过程组织教学。

使学习者掌握数据库的设计方法,熟练操作数据库管理系统My SQL,并能够利用SQL语言进行数据和数据库对象操作,掌握数据维护方法,并对数据库的安全进行管理。

旨在培养学生对数据库管理系统的基本操作与管理技能,对学生的专业核心能力和职业岗位能力培养起主要支撑作用,为专业培养目标实现奠定重要基础。

1.2 课程基本理念“互联网+”时代,智慧职教mooc网络平台为依托,通过省级精品在线开放课程“数据库技术”课程(承德石油高等专科学校王永红)实施线上教学。

根据信息化环境下教学改革需求,落实“以学习者为中心”,“以提升学习体验”为目标的课程设计。

在线学习语境下,深入推进信息技术与教育教学相融合的混合式教学,使在线学习与课堂教学有机融合,开展线上线下混合式教学,避免单纯的在线学习或课堂教学的局限性。

利用微课、动画、短视频等形式,完美展现课程的知识点和技能点,同时实现在线作业、测验、讨论、考试等教学活动,促进教学方式和学习方式的变革,向教学方式混合化,教学资源开放化,学生学习个性化,学习过程社会化方向转变。

教师针对不同的教授对象和课程要求,利用精品在线开放课程灵活组织教学内容、辅助教学实施,实现教学目标,同时使学生可以在课堂教学以外,通过精品在线开放课程巩固所学及进行拓展学习。

1.3 课程设计思路本门课程遵循有效教学的基本规律,结合在线开放课程教学的特征与需求,应用课程建设资源,围绕教学目标精心设计教学活动、教学安排及呈现形式。

让学生通过短视频及微课进行前置学习,通过图文资料进行自主学习,通过动画理解难点,通过习题库完成单元测验,通过论坛在线讨论等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

平安金融科技数据库(MySQL)开发规范作者: 简朝阳Last Updated: 25/02/14 19:30:18历史修订记录:版本修订人修订时间修订内容1.01.1 李海军2013-03-11 增加部分说明及修改1.2 李海军2013-07-29 增加连接池使用说明和memory引擎的控制1.3 李海军2014-02-25 增加了char类型,修改了timestamp的使用场合。

说明⇧本规范包含平安金融科技使用MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。

⇧所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系DBA Team 取得帮助。

概述⇧禁止明文传播数据库帐号和密码。

⇧禁止开发工程师通过应用帐号登录生产数据库。

⇧禁止应用在服务器安装MySQL客户端(可以安装开发包)。

⇧禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。

⇧禁止使用悲观锁定,即读锁select … for update。

⇧禁止在开发代码中使用DDL语句,比如truncate,alter table … 等。

⇧禁止DML语句的where条件中包含恒真条件(如:1=1)。

1. 命名规范总则⇧数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。

⇧数据库对象命名禁止使用MySQL保留字。

⇧多个单词之间用下划线(_)分隔。

⇧对象名称长度若超过限制,则使用简写/缩写命名。

1.1. 数据库命名⇧数据库以"db_"前缀+ "站点名_"前缀及其所服务的应用名称命名。

1.2. 表命名⇧所属同一模块的表必须以模块名作为前缀命名。

⇧历史数据表在原表基础上增加"_his"后缀命名。

1.3. 字段命名⇧布尔意义的字段以"_flag"作为后缀,前接动词。

如:表示逻辑删除意义的字段可命名为delete_flag。

⇧各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。

1.4. 索引命名⇧唯一索引以uk_tablename_columnnames 方式命名⇧普通索引以idx_tablename_columnnames 方式命名⇧组合索引以idx_tablename_column1_column2... 方式命名示例⇧站点名:maymay⇧模块名:order ;⇧数据表:item;⇧字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5⇧标准数据库名:db_maymay_order;⇧标准数据表名:order_item;⇧历史数据表名:order_item_his;⇧索引需求:c1唯一,c2和c3 组合索引:uk_order_item_c1, idx_order_item_c2_c3⇧字段实际意义:是否已删除;⇧标准字段名:delete_flag;⇧字段order.order_id被order_item引用;⇧order_item 表中与之对应的字段命名必须为:order_id2. 对象设计规范总则⇧所有表、字段必须添加能够清楚表示其含义的注释。

状态类字段的注释中必须明确列出各状态值的说明。

⇧MySQL数据库中仅可以使用下文提及的数据类型。

2.1. 数据类型2.1.1. 数值类型⇧DECIMAL(M,D)当表示定点小数的情况下使用该类型,禁止使用浮点类型,会带来不精确。

定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。

⇧INT系列所有整数类型字段使用INT(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT),根据所存放的数据大小选择合适的子类型,且所有INT类型都不使用长度限制。

2.1.2. 字符串类型⇧VARCHAR所有可变长度的字段均使用VARCHAR类型,对于有限类别的字段(如性别、状态等),均建议使用VARCHAR类型存储能明显表现其意义的字符串。

⇧TEXT系列仅当需存储的字节数可能超过20000时,使用TEXT系列类型(TEXT、MEDIUMTEXT、LONGTEXT)。

并和原表进行分拆,与原表主键组成新表存储,且每个表只允许有一个TEXT系列类型字段。

⇧CHAR仅当字段确定为定长,且将来不会修改长度时,使用CHAR类型。

上线以后不允许修改字段类型。

谨慎使用2.1.3. 时间类型⇧DATE只需要精确到天的字段使用DATE类型。

精确到"天"的取当前时期的操作使用CURDATE()函数实现。

-DATETIME需要精确到时间(时、分、秒)的字段使用DATETIME类型。

精确到"秒"的取当前时间的操作使用NOW()函数实现。

取值范围:'1000-01-01'到'9999-12-31'TIMESTAMP该类型仅允许raw_update_time字段使用,其它字段不允许使用该类型。

取值范围:'1970-01-0100:00:00'到'2037-01-01 00:00:00'2.2. 表设计⇧必含字段id INT:主键使用MySQL的自增类型raw_add_time DATETIME:创建日期(大字段拆分表除外),必须使用数据库时间(用now()生成)raw_update_time TIMESTAMP:修改日期(大字段拆分表除外, 但内容变化必须修改主表的update_time字段),由数据库自动变更,应用不操作此字段以上3个字段都必须是没有任何商业意义的与业务无关的字段,不允许赋予任何商业意义⇧作为表间连接关系的字段,数据类型必须保持严格一致,避免索引无法正常使用。

⇧附属表拆分后,附属表关联字段使用主表主键字段,且附属表须有独立主键(大字段拆分的表不需要单独的主键)⇧存在过期概念的表,在其设计之初就必须有过期机制,且有明确的过期时间。

过期数据必须迁移至历史表中。

⇧不再使用的表,必须通知DBA予以更名归档。

⇧线上表中若有不再使用的字段,为保证数据完整,禁止删除,而是进行更名归档,名称统一增加"droped_"前缀2.3. 约束使用2.3.1. 主键⇧主键不能包含业务含义。

⇧主键在任何情况下不允许被更新。

2.3.2. 唯一约束⇧除主键外,需存在唯一性约束的,可通过创建以"uk_"为前缀的唯一索引实现。

2.3.3. 外键⇧任何情况不在数据库创建外键约束,外键规则由应用控制。

2.3.4. 非空列⇧所有非空列须在建表之初明确标识"NOT NULL",上线之后,不允许再变更。

2.3.5. 存储过程、触发器、视图、计划任务⇧禁止任何业务逻辑通过封装在数据库中的procedure/function/trigger实现。

⇧禁止应用程序使用view。

⇧禁止业务逻辑使用数据库的计划任务。

3. SQL编写规范3.1. 绑定变量与替代变量原则所有Query 的Where 条件中的变量,都需要使用绑定变量来实现,此要求并不完全是基于性能的考虑,更多是基于安全方面的考虑。

3.2. 数据类型转换原则避免因数据类型转换导致执行计划有误。

说明⇧where条件中的过滤字段如需转换类型,只可转换过滤值,不可转换被过滤字段。

⇧表连接操作中,作为连接条件的字段的数据类型严格一致。

⇧如果表连接字段数据类型不一致,在SQL中用显示用类型转换,具体情况咨询DBA。

示例正确用法1:select col1, col2 from tbl1, tbl2where tbl1.col3 = tbl2.col4;其中"tbl1.col3"与"tbl2.col4"数据类型严格一致。

正确用法2:select col1,col2 from tblwhere gmt_create = str_to_date('20100526 00:00:00','%Y%m%d %H:%i:%s');"count(…)"使用除非是明确目的是统计某个字段上值不为空的记录的数目,否者只允许之用count(*),而不允许使用count(column_name) 或者count(1)。

3.3. "select * from …"使用原则为避免查询中无用字段参与排序操作而导致的性能降低及潜在的安全隐患。

禁止使用"select * from …"。

说明任何情况都要明确列出查询需要返回的字段,禁止使用select * 返回所有字段。

3.4. "insert into tablename values()"使用原则为避免增加或删除字段带来的SQL报错。

禁止使用省略字段名的insert into语句。

任何情况都要明确列出需要写入的字段名称。

3.5. 表连接原则规范连接语法以方便SQL脚本的阅读及提升连接操作性能。

说明⇧非外连接查询中,连接表在"from"子句中列出,并以逗号分隔;连接条件在"where"子句中列出,而不允许使用join … on 方式实现join。

⇧外连接查询中,可使用"left join … on"语法;外连接一律使用"left join"表示。

⇧可以改写为连接的子查询禁止使用子查询方式,而应改写为连接方式。

示例⇧规范select col1, col2 from tbl1, tbl2 where tbl1.col4 = tbl2.col3;select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;select col1, col2 from tbl1 left outer join tbl2 on tbl1.col4 = tbl2.col3;select col1 from tbl1,tbl2 where tbl1.col2 = tbl2.col3;select col1 from tbl1 left join tbl2 on tbl1.col2 = tbl2.col3 where tbl2.col3 is null;⇧非规范:select col1, col2 from tbl1 join tbl2 on tbl1.col4 = tbl2.col3;select col1 from tbl1 where col2 in (select col3 from tbl2);select col1 from tbl1 where col2 not in (select col3 from tbl2);3.6. 分页查询说明⇧分页查询必须带有唯一的排序条件,除非业务逻辑明确要求随机展现数据。

相关文档
最新文档