当前位置:首页 > 技术积累 > 正文内容

可迁移数据库的基本命名和实施规范

竹林之风5年前 (2017-08-31)技术积累1365

前言

        数据库管理系统(DBMS)是各类信息系统的核心组成部分,常用的关系数据库系统(RDBMS)有SQLite、SQL Server、MySQL、Oracle等等。不同种类和版本的关系数据库系统在大小写区分、数据类型、SQL语法等等方面各有差异,若一个信息系统需要支持一种以上的数据库系统,那么为了可迁移而在数据库命名和实施上应该遵守必要的命名和实施规范。


命名规范

        1、各数据库对象(数据库、表、字段、视图、触发器、存储过程、函数等)采用下划线命名法,即标识符由小写字母和数字组成、以小写字母开头、各单词之间用下划线隔开,当然标识符建议使用英文单词(包括公认的单词缩写),例:merchant_record、api_param等。因为Linux系统对大小写敏感而Windows系统不区分大小写,部分数据库如PostgreSQL等对大小写敏感而部分数据库如SQL Server等不区分大小写,所以为了便于迁移且SQL语句大小写统一,所以标识符建议都小写并用下划线隔开。至于不能以数字开头是因为使用ORM框架时计算机语言标识符不支持数字开头。

        2、数据库名称应能表明其内容和用途,即主要存储哪些数据、包含哪些业务、属于哪个系统哪个子系统,例:mis_qrcode(MIS系统下的QRCode子系统)等;表名建议由所属业务前缀和数据名称组成,业务前缀一来可以表明表所属的业务,二来方便后期垂直分库,例:base_user等;字段名建议由所有表的数据名称前缀和属性名称组成,例user_id、user_mobile等。

        3、视图、触发器、存储过程、函数等的名称建议由前缀附加关联表名或功能名称组成。视图前缀view、触发器前缀trigger、存储过程前缀procedure、函数前缀function,例:view_base_user等。

        4、主键和外键的字段名称应一致。

        5、数据库、表、字段、视图等的名称基本上是名词词性、触发器、存储过程、函数等的名称可以是动词+名称或动词格式。


实施规范

       1、使用自增整数做为表的物理主键、使用GUID做为表的逻辑主键,自增整数主键在迁移或合并时容易丢失,故表间关联建议使用GUID逻辑主键。

        2、每个表建议增加一个状态字段(*_state),-1表示逻辑删除、0表示已禁用、1表示已启用,0和1的具体含义根据数据不同而不同。

        3、每个字段要么不允许NULL值,要么设置默认值,这样就可以在逻辑代码中免除不必要的NULL判断;

        4、建议不要设置数据库域完整性、参照完整性或其它自定义约束,如数据类型和值范围约束、主键外键值约束、check条件等,这些可在应用逻辑中实现。

        5、对于常用的表间连接可酌情使用视图访问,不建议过多采用触发器、存储过程、函数等数据库逻辑,在业务逻辑中实现。

        6、设计时考虑后期垂直分库(避免不同业务表之间的连接)、水平分库。

        7、考虑建立过期或访问频率低的数据的历史数据库。

        8、三个基础表:参数表(存储各种参数的名称、编码和值等)、枚举表(存储各种编码和含义的对照,如订单状态等)、类别表(存储各种类别数据,如商家类别、产品类别等)。


后语

       如有错误,敬请指正;如有遗漏,欢迎补充。

扫描二维码推送至手机访问。

版权声明:本文由久爱编程网发布,如需转载请注明出处。

本文链接:http://www.9icode.com/index.php/post/20.html

标签: 数据库
分享给朋友:

相关文章

在ASP.NET Core下使用Scaffold-DbContext命令自动从数据库生成EF Core模型

在ASP.NET Core下使用Scaffold-DbContext命令自动从数据库生成EF Core模型

        在ASP.NET Core下使用EF Core读取和操作数据库时,若采用DB First开发模式,则需要手动写或者自动生成相关实体类和DBCon...

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后进行重定向”异常时,其中一个原因是:在已经重定向后又重定向。在ASP.NET中实现重定向有以下几...

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常问题解决

        ASP.NET中报“无法在已发送HTTP标头之后设置状态”异常,是因为设置Response的StatusCode之前,程序已设置响应标头。可从以...

ASP.NET网站自定义错误处理及其它安全相关

ASP.NET网站自定义错误处理及其它安全相关

        ASP.NET网站在运行过程中总是有可能报错,例如404等HTTP错误、500等程序异常。在IIS托管并报错的情况下,网站的默认行为依次是:(1).NET运行时接收并处理的部分显示.N...

从被扫描记录看网站安全应该注意的一些细节

从被扫描记录看网站安全应该注意的一些细节

1、尽可能地隐藏服务器真实IP,减少攻击目标。例如使用负载均衡、网关等作为门户,由负载均衡或网关转发到后端服务器。2、服务器必须开放的服务(除HTTP、HTTPS等为公众开放的服务外),尽可能改为其它较大的不常用的端口号,这样攻击者需要扫描...

ASP.NET Core网站报“An assembly specified in the application dependencies manifest was not found”异常解决

ASP.NET Core网站报“An assembly specified in the application dependencies manifest was not found”异常解决

        ASP.NET Core网站报“An assembly specified in the application dependencies ma...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。