2022年数据库设计命名规范参考 .pdf





《2022年数据库设计命名规范参考 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库设计命名规范参考 .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1、命名规范1.1、命名总规则1、 所有名称的字符范围为:A-Z, a-z, 0-9 和 _(下划线 )。不允许使用其他字符作为名称。2、 采用英文单词或英文短语(包括缩写)作为名称,不能使用无意义的字符或汉语拼音。3、 名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原则。1.2、表命名规范1、不使用tab 或 tbl 作为表前缀(本来就是一个表,为什么还要说明)2、表名以代表表内的内容的一个和多个名词组成,以下划线分隔,每个名词的第一个字母大写。3、使用表的内容分类作为表名的前缀:如,与用户信息相关的表使用前缀User_,与内容相关的信息使用前缀Content_。4、
2、表的前缀以后,是表的具体内容的描述。如:用户登录信息的表名为:User_Login ,用户在论坛中的信息的表名为:User_BBS_Info 5、一些作为多对多连接的表,可以使用两个表的前缀作为表名:如:用户登录表User_Login ,用户分组表Group_Info ,这两个表建立多对多关系的表名为: User_Group_Relation 6、当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。如地区、 系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。就地区而言,如果我们要查询某个地区的记录,则数据库需要通过字符串匹配的方式来查询; 如果
3、将地区改为一个地区的代号保存在表中,查询时通过地区的代号来查询,则查询的效率将大大提高。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 程序中宜大量的使用字典表来表示这类值。字典表中保存这类值的代号和实体的集合,以外键的方式关联到使用这类值的表中。然而,在编码阶段,程序员并不使用字典表,因为首先查询字典表中实体的代号,违背了提高查询效率的初衷。程序员在数据字典的帮助下,直接使用代号来代表实体,从而提高效率。虽然字典表在实际上并不
4、使用,但是仍应该保留在数据库中(起码是在开发期内保留)。字典表作为另一种形式上的“数据字典文档”出现,以说明数据库中哪些表的哪些字段是使用了字典表的。为了提高数据库的数据完整性,在开发阶段可以保留完整的字典表和普通表的外键约束。但是在数据库的运行阶段,应该将普通表和字典表的外键删除,以提高运行效率,特别是某些表使用了很多字典表的情况。案例:某数据库中有百万条用户信息,应用系统中常常需要按照地区要查询用户的信息。用户信息表以前是按照具体的地区名称来保存的,现在将具体的名称改为字典表中的地区代号,查询效率大大提高。字典表统一以dic_作为前缀。1.3、字段命名规范1、字段不使用任何前缀(表名代表了
5、一个名称空间,字段前面再加前缀显得罗嗦)2、 字典名也避免采用过于普遍过于简单的名称:例如,用户表中,用户名的字段为UserName比 Name 更好。3、布尔型的字段,以一些助动词开头,更加直接生动:如,用户是否有留言HasMessage,用户是否通过检查IsChecked 等。4、字段名为英文短语、形容词 +名词或助动词+动词时态的形式表示,大小写混合, 遵循“见名知意”的原则。2、SQL 语句规范1、不允许写SELECT * FROM , ,必须指明需要读取的具体字段。2、不允许在应用程序代码中直接写SQL 语句访问数据库。3、避免在一行内写太长的SQL 语句,在SQL 关键字的地方将S
6、QL 语句分成多行会更加清晰。如: SELECT UserID,UserName,UserPwd FROM User_Login WHERE AreaID=20 修改成:SELECT UserID,UserName,UserPwd FROM User_Login WHERE AreaID=20 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 更加直观4、在一些块形式的SQL 语句中,就算只有一行代码,也要加上BEGIN END
7、块。如: IF EXISTS()SET nVar = 100 应该写成:IF EXISTS()BEGIN SET nVar = 100 END 5、SQL 批处理语句的空行和缩进与一般的结构化程序语言一致,应该保持良好的代码格式。6、所有的SQL 关键字大写3、存储过程编码规范3.1、只允许应用程序通过存储过程访问数据库只允许应用程序通过存储过程访问数据库,而不允许直接在代码中写SQL 语句访问数据库。在数据库开发项目中,大量使用存储过程有很多的好处,首先看微软提供信息:除此以外,使用存储过程的好处还有:1、 在逻辑上,存储过程将应用程序层和数据库物理结构分离开来。存储过程形成了一个应用程序和
8、数据库之间的接口。这样的接口抽象了复杂的数据库结构,符合极限编程中 “基于接口编程”的思想。2、 将主要的业务逻辑封装在存储过程中,能够避免在应用程序层写大量的代码(在应用程序中通过字符串插入太长的SQL 语句影响效率, 而且维护困难) 。有助于提高开发效率,使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的Transact-SQL 程序的优势有:允许模块化程序设计:只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。允许更快执行:如果某操作需要大量Transact-SQL 代
9、码或需重复执行,存储过程将比Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行Transact-SQL 语句时,都要从客户端重复发送,并且在SQL Server 每次执行这些语句时,都要对其进行编译和优化。减少网络流量:一个需要数百行Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。可作为安全机制使用:即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
10、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 并且直接在查询分析器中调试存储过程,能够更早的发现系统中的逻辑问题,从而提高代码的质量。3、 在网站一类的应用系统中,SQL 注入式漏洞一直是难以完全杜绝的漏洞。如果只通过存储过程来访问数据库,能够大大减少这类安全性问题。(因此,就算是简单的只有一句的 SQL 语句,也应该写成存储过程。)4、 由于采用存储过程,应用程序的层面可以不关心具体的数据库结构,而只关心存储过程的接口调用。因此,在以下一些情况,存储过程的优势非常明显:需求变更,表的结构必须要改
11、变。使用存储过程,只要参数不变,我们就只需要修改相应的存储过程,而不需要修改应用程序的代码。这样的设计将减小需求变更对项目的影响。为提高效率, 使部分字段冗余:一些经常性访问的字段,我们可以在相关的表中进行冗余存储。这样既提高了效率,又通过存储过程屏蔽了冗余细节。为提高效率,使用冗余表(拆分表):一些大的表,为了提高查询效率,可能需要将记录分别保存到多个表中去。使用存储过程, 有存储过程来决定从哪些拆分的表中获取或插入数据。这样提高了效率, 又不必在应用程序层面关心具体的拆分规则。5、 使用存储过程,便于在项目后期或者运行中集中优化系统性能。在项目开发过程中,由于各种原因, 往往无法编写高效的
12、代码,这个问题常常在项目后期或者在运行期体现出来。通过存储过程来封装对数据库的访问,可以在项目集成以后,通过试运行观察系统的运行效率, 从而很容易找出系统的瓶颈,并能够通过优化存储过程的代码来提高系统的运行效率。这样的优化,比在运用程序中优化更有效,更容易。同时,过多的使用存储过程,也存在以下一些疑虑:问题一 :存储过程编译后,将作为数据库的全局对象保存,太多的存储过程将占用大量的数据库服务器的内存。问题二 :在存储过程中实现大量的逻辑,将使大量的运算在数据库服务器上完成,而不是在应用服务器上完成。当访问量很大的时候,会大大消耗数据库服务器的CPU 占用率。在此还存在这个一个案例:有一个访问量
13、巨大的网站,有多台WEB 服务器构成一个负载均衡的服务器群集,但是只有一台中心的数据库服务器。当访问量持续增加的时候,接入更多的WEB 服务器来满足高并发量的访问;但是数据库服务器却没办法一直增加。因此,就需要尽量在WEB 服务器上完成业务逻辑,尽量避免消耗数据库服务器的资源。对于这两个担心,我的想法是:问题一的解决:存储过程是经过编译后的SQL 语句,在内存中是二进制的代码,并不会消耗太多内存。并且,存储过程比起直接使用SQL 语句来说,效率大大提高。换个角度来说,这是一个“以空间换时间”的方案,多消耗一点内存来换取效率的提高,是值得的。问题二的解决:首先, 在实现业务逻辑的问题上,在存储过
14、程中实现比在应用程序中实现更容易;其次,从开发效率上,存储过程的开发比应用程序更简单(就完成相同逻辑而言)。在高访问量的系统中,应用服务器和数据库服务器的资源分配的问题,应该从成本的角度来开率: 软件开发中的成本,人工支出的费用远远高于硬件支出的成本。我们可以很容易花钱购买更好的服务器,但是很难花钱让开发人员使程序有大幅度的提高。使用存储过程来封装业务逻辑,首先节省的是大量的开发时间和调试时间,并能够大大提高代码的质量。因此,从成本来说,应该使用存储过程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年数据库设计命名规范参考 2022 数据库 设计 命名 规范 参考

限制150内