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

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

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

前言

        数据库管理系统(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、三个基础表:参数表(存储各种参数的名称、编码和值等)、枚举表(存储各种编码和含义的对照,如订单状态等)、类别表(存储各种类别数据,如商家类别、产品类别等)。


后语

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

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

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

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

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

“可迁移数据库的基本命名和实施规范” 的相关文章

通用基础表逻辑设计(一)——配置、枚举和类别

通用基础表逻辑设计(一)——配置、枚举和类别

一、配置表        一个系统中往往有很多需要可自定义的参数,比如网站名称、联系地址等基础参数以及各种系统运行参数等等,这个时候就需要单独一个参数配置表来保...

Java相关的一些名词

Java相关的一些名词

Java语言:一种程序设计语言,版本号从1.0到1.4,从1.5起版本号变更为5、6、……;JDK版本号、Java平台版本号类同。Java平台:1998年12月发布JDK 1.2后,Java从与平台无关的语言变成Java 2平台,分为三个版...

IIS中使用PHP-CGI报500错误问题可能原因

IIS中使用PHP-CGI报500错误问题可能原因

        在IIS中使用CGI方式运行PHP网站突然报500服务器错误,需要判断当前系统的软件环境有何变化去一一排查,通常可能的原因有:(1)PHP程序因...

在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之前,程序已设置响应标头。可从以...

发表评论

访客

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