数据库编码规范

数据仓库建设之数据规范(一)--sql编码规范 1.编码原则 (1)功能完善:结果输出正确。 (2)执行效率最优:代码优化的方法。 (3)可读性强:复杂的处理加上注解,代码结构整齐。 (4)统一缩紧单位:4个空格为一个缩紧单位。 (5)尽量不使用select*,需要明确指定列名。 (6)对应的括号使用在同一列上对齐。 2.编码规范 (1)增加头部注释,模版如下: ... 阅读详情

数据库编码规范

  V1.2

  2004 年 11 月 12 日


类别

文件名:

数据库编码规范

版本号:

V1.2

版本日期:

2004-11-12

作者:

Nick

日期:

2004-11-12

 


目 录

1   目的. 2

2   范围. 3

3   术语. 3

4   设计概要. 3

4.1   设计环境. 3

4.2   设计使用工具. 4

4.3   设计原则. 4

4.4   设计的更新. 4

5   命名总体原则. 4

6   命名规范(逻辑对象). 5

6.1   数据库结构命名. 5

6.2   数据库对象命名. 6

7   脚本注释. 8

7.1   存储过程或触发器. 8

7.2   自定义函数. 9

8   数据库操作原则. 10

8.1   建立、删除、修改库表操作. 10

8.2   添加、删除、修改表数据. 10

9   常用字段命名. 10

9.1   系统信息常用字段. 10

9.2   客户个人信息常用字段. 10

9.3   铺助信息常用字段. 11

9.4   业务信息常用字段. 11

10      设计实例(SQL SERVER 2000). 12

10.1    表、主键、外键、索引、规则、约束. 12

 

 

附件1:数据库数据字典. 14

附件2:数据库类型简写. 15

 

 

 

 

1        目的

为了统一公司软件开发的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。

2        范围

本规范适用于开发组全体人员,作用于软件项目开发的数据库设计、维护阶段。

3        术语

Ø         数据库对象:在数据库软件开发中,数据库服务器端涉及的对象包括物理结构和逻辑结构的对象。

Ø         物理结构对象:是指设备管理元素,包括数据文件和事务日志文件的名称、大小、目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。一般对数据库服务器物理设备的管理规程,在整个项目/产品的概要设计阶段予以规划。

Ø         逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关的设计等。

4        设计概要

4.1                                                                  设计环境

a)       ORACLE 9I

数据库

ORACLE 9i

操作系统

SUSE LINUX 7.1以上版本,显示图形操作界面; RedHat 9 以上版本

CPU

P III 1.7G 以上

内存

512M 以上

硬盘空间

5GB以上的剩余空间,如要建立较多的、大型的数据库需要更多的硬盘空间

 

b)       MS SQL SERVER 2000

数据库

SQL SERVER 2000 企业版

打sp3以上补丁和安全补丁

操作系统

WINDOWS 2000 SERVER 或

WINDOWS 2000 Advanced Server

打sp4以上补丁

CPU

P III 1G 以上

内存

256M 以上

硬盘空间

1G 以上剩余空间如要建立较多的、大型的数据库需要更多的硬盘空间

4.2                                                                  设计使用工具

a)       使用PowerDesigner 做为数据库的设计工具,要求为主要字段做详尽说明。

b)       通过PowerDesigner 定制word格式报表,并导出word文档,作为数据字典保存,格式可参看附件1。(PowerDesigner v10 才具有定制导出word格式报表的功能)

c)       编写数据库建数据库、建数据库对象、初始化数据脚本文件

4.3                                                                  设计原则

a)       采用多数据文件

b)       禁止使用过大的数据文件,unix系统不大于2GB,window系统不超过500MB

c)       oracle数据库中必须将索引建立在索引表空间里。

d)       基本信息表在建立时就分配足够的存储空间,禁止其自动扩展功能

e)       大文本字列、blob列要独立出一张表,此表只有id和blob(或大文本)列

4.4                                                                  设计的更新

a)       在设计阶段,由数据库管理员或指定的项目组其一成员进行维护。

b)       运行阶段,由数据库管理员进行维护。

c)       如对表结构进行修改,应先在PowerDesigner中进行修改,再重新导出WORD文档,最后在数据库中进行修改。如果修改的是数据库字典表,必须由数据库管理员进行。

d)       使用PowerDesigner生成SQL代码,禁止由PowerDesigner直接连数据库进行数据库操作

e)       修改数据库要通过SQL,禁止其它方式对数据进行修改

f)       修改数据库的SQL要添加说明后保存备查

5        命名总体原则

Ø         设定的前缀一律用小写字母

Ø         标识名称命名全部小写

Ø         整个命名的全长不得超过30个字母

Ø         全部使用字母和下划线‘_’,不能使用中文和其他字符,有特别情况允许使用末尾数字编号。例如:t_Finace1, t_Finace2...

Ø         命名名称来自于业务,全部采用英文单词

Ø         英文单词过长可以采用通用的缩写,尽量表达出业务的含义

Ø         如需要两个以上的英文单词做标识名称,单词之间要用下划线‘_’连接

Ø         名称全是由名词组成的,名词由大范围到小范围排序取名

Ø         完成某功能的名称,如函数和过程,以动宾形式取名

6        命名规范(逻辑对象)

6.1                                                                  数据库结构命名

a)       数据库命名

数据库的命名要求使用与数据库意义相关联的英文字母,并且以“db_”打头,

即db_<业务系统名称>。

例如:china care 数据库的命名为 db_ccnet;

客户资料数据库的命名为db_Customer_Info。

 

b)       数据库日志设计命名

数据库日志的的命名以<数据库名>_<日志名>.log格式命名。其中,<日志名>为有意义的数据库日志名称。

例如:db_ccnet_logredo.log

c)       数据库配置设计命名

数据库配置设计方案是以文件形式保存的,其内容是关于特定数据库的配置项目的具体值。

数据库配置文件的命名以:<数据库类型简写〉_<应用系统标志>_cfg.ini格式命名。

其中,数据库类型简写见附件2《数据库类型简写》,cfq表示该文件是数据库配置文件。

例如:ORA_ ccnet_cfg.ini

d)       数据库复制与存储设计命名

     数据库复制与存储设计方案是以文件形式保存的,其内容是关于特定数据库之间的复制策略的具体细节。

数据库复制与存储设计文件的命名以:<数据库类型简写>_<应用系统标志>_rep.txt格式命名。

其中,数据库类型简写见附件2《数据库类型简写》,rep表示该文件是数据库复制与存储文件。

e)       数据库连接设计命名

     数据库连接设计方案是以文件形式保存的,其内容是关于特定分布式数据库之间的连接设计的具体细节。

数据库连接设计文件的命名以:<数据库类型简写>_<应用系统标志>_dbl. sql格式命名。其中,数据库类型简写见附件2《数据库类型简写》,dbl表示该文件是数据库连接设计文件。

f)       表空间、数据文件命名(主要针对Oracle)

索引表空间:

表空间命名格式:ts<系统标识>_i

数据库文件命名格式:ts<系统标识>_i[n].dbf

临时表空间:

表空间命名格式:ts<系统标识>_t

数据库文件命名格式:ts<系统标识>_t[n].dbf

回滚表空间:

表空间命名格式:ts<系统标识>_r

数据库文件命名格式:ts<系统标识>_r[n].dbf

数据表空间:

表空间命名格式:ts<系统标识>_d

数据库文件命名格式:ts<系统标识>_d[n].dbf

 

注:表空间名不超过8位,n 可取00-99或0-9,根据系统数据量确定。

 

6.2                                                                  数据库对象命名

a)       表

表的命名必须以“t_”(Table缩写)开头,格式为:t_[系统标识]_<数据表类型标识>_<表标识>。

其中,[ ]表示可选项,依据实际情况而增加;<表标识> 要求与表意义相关联的英文字母,例如:t_Customers。

数据表大致分为:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结算数据表、决策数据表;

基本编码表用base标志

累计数据表用count标志

系统信息表用info标志  ...

例如:t_trade_base_trade_code,t_trade_info_help   ...

b)       字段/域

根据业务要求进行命名,不需设定固定的前缀。

 

c)       索引

针对数据库表中一个或多个字段建立的索引的命名格式应以“idx_”开头,索引列名间用_隔开,即为idx_ColumnName1_ColumnName2_…

其中,ColumnName1是数据库表中(第一个)索引字段的名称或名称简写;ColumnName2是数据库表中(第二个)索引字段的名称或名称简写;索引名的总长必需符合数据库的规定。

例:idx_cert_number (表示在字段cert_number上创建索引)

 

d)       视图

视图的命名必须以“v_”(View 缩写)开头,格式为: v_<视图类型>_[系统标识] _<视图标识>。

其中,视图类型参见“表的分类说明”;[系统标识_]是可选项,依据情况而增加;<视图标识> 应与视图意义相关联的英文字母。

例:v_user_detail_info

 

e)       存储过程

存储过程的命名必须符合sp_[系统标识]_<存储过程标识>格式。

其中,sp表示是存储过程;[系统标识]为可选项,依据情况而增加;<存储过程标识>是与存储过程意义相关联的英文字母,例如:USP_Query_Write_to_Disk。

   例:sp_check_user_auth(以动宾方式取名)

 

f)       触发器

 触发器的的命名必须符合tr_<表名>_<i,u,d的任意组合> 格式。

其中,tr表示是触发器;<i,u,d的任意组合>是与触发器意义相关联的英文字母。

例:tr_user_info_iu (表示对user_info表进行插入、更新的触发器)

 

g)      函数

 函数的命名必须符合fn_[系统标识]_<函数标识>格式。

其中,fn表示是函数,[系统标识]为可选项,依情况而定;<函数标识>是与函数意义相关联的英文字母。

例:fn_create_id(以动宾方式取名)

 

h)       自定义数据类型

自定义数据类型的命名格式为:ud_<自定义数据类型标识>_<数据类型>

 

i)       Default(缺省)

Default(缺省)的命名格式一般为:df_<Default标识>;对于非绑定的默认可取系统默认的名字,请参见第8.1点实例绑定具体字段。

例:df_begin_date 缺省开始日期 ‘20030101’

if exists (select * from sysobjects where type = 'D' and name = 'df_begin_date')

drop default dbo.df_begin_date

go

 

create default df_begin_date as '20030101'

go

 

j)       Check、Constraint(约束)

约束的命名格式一般为:ck_<表名>_ <Check标识>;一些约束可直接放在生成表的语句中。

例:ck_flag 参见第8.1点实例,约束字段flag只能取字符‘0’到‘9’:

constraint ck_flag CHECK (flag between ' 0 ’ and ' 9 ’ )

 

k)       Rule(规则)

规则的命名格式一般为:rl_<Rule标识>;对于非绑定规则(约束) 可取系统默认的名字,参见第10点设计实例绑定具体字段。

例:rl_not_zero (定义一个不等于0的规则)

if exists (select * from sysobjects where type = 'R' and name = 'rl_not_zero')

drop rule dbo.rl_not_zero

go

 

create rule rl_not_zero as @i <> 0

go

 

l)       主键

主键的命名格式为pk_<表名>_<主键标识>。

例:pk_user_info_userid (表user_info以字段userid创建主键)

 

m)       外键

外键的命名格式为fk_<表名>_<主表名>_<外键标识>。

例:fk_user_info_department_deptid (在表user_info的字段department_id上创建外键,参照主表department)

 

n)       同义词(ORACLE)

同义词的命名格式为:sy_<同义词标识>

例:sy_user_info (为所有权属于ben的表user_info的公共同义词)

7        脚本注释

7.1                                                                  存储过程或触发器

a)       每一个存储过程或触发器都要在最前面写注释,注释如下

/*

writer:

create date:

ver:

Depiction:

remark:

*/

另外,过程中声明的重要变量要有注释,例如:

    @iActionFlag   int = 0  /* 0 => Checkout, 1 => GetLatest, 2 => UndoCheckOut */

 

b)       如果只对存储过程或触发器进行部分修改时须添加以下注释:

 

/*rewriter:    add(rewriter):      date:<格式:YYYY-MM-DD>    start1:   

  修改描述:

*/

/* 原代码内容*/(修改时)

/*rewriter:   date:<格式:YYYY-MM-DD>     end1:  */

/*rewriter:   add(rewriter):      date:<格式:YYYY-MM-DD>     start2:    */

新代码内容

/*rewriter:   date:<格式:YYYY-MM-DD>     end2:  */

 

c)       如果对存储过程或触发器有较大的修改,可增加修改内容的注释。

 

    /*Log Id:<Log编号,从1开始一次增加>

      rewriter:

      rewrite date:<格式:YYYY-MM-DD>

  Depiction:

    */

 

7.2                                                                  自定义函数

a)       每一个自定义函数都要在其前面写注释,注释如下

/*

function name:xxxx

    Depiction:<对此函数的描述>

param(a,b)

   a 功能或描述....

   b 功能或描述

output: x   x=0表示.....   x=1 表示......

    writer:

    create date:<创建日期,格式:YYYY-MM-DD>

ver:

    remark:

* /

 

另外,函数中声明的重要变量要有注释,例如:

    @iActionFlag   int = 0  /* 0 => Checkout, 1 => GetLatest, 2 => UndoCheckOut */

 

b)       如果只对函数进行部分修改时须添加以下注释:

/*rewriter:    add(rewriter):      date:<格式:YYYY-MM-DD>    start1:   

  修改描述:

*/

/* 原代码内容*/(修改时)

/*rewriter:   date:<格式:YYYY-MM-DD>     end1:*/

/*rewriter:   add(rewriter):      date:<格式:YYYY-MM-DD>     start2:    */

新代码内容

/*rewriter:    date:<格式:YYYY-MM-DD>     end2:   */

 

c)       如果对函数有较大的修改,可增加修改内容的注释。

    /*Log id:<Log编号,从1开始一次增加>

      rewriter:

      rewrite date:<修改日期,格式:YYYY-MM-DD>

  Depiction:

    */

 

8        数据库操作原则

8.1                                                                  建立、删除、修改库表操作

Ø         在开发环境中,对于自己的库表可任意进行修改、删除操作;但需保留相应的建表语句和说明,与建表人建表时间。

8.2                                                                  添加、删除、修改表数据

Ø         在开发环境中,开发人员所开发模块独自使用的库表,可自由操作表中数据;

Ø         对其他模块关联的库表,应取得其他模块的开发人员同意后再执行操作;

Ø         系统的信息表、字典表的修改应向数据库的管理员提出操作需求,由数据库的管理员执行操作。

9        常用字段命名

9.1                                                                  系统信息常用字段

字段名称

字段代码

ORACLE

SQLSERVER

值

说明

用户标识

user_id

char(8)

char(8)

 

用于登录应用系统的标识, 填写数字。一般做主键,要填满长度。

用户名称

user_name

varchar2(20)

varchar(20)

 

用户标识对应的名称

组标识

grp_id

char(4)

char(4)

 

用户所属的组标识,填写数字。一般做主键,要填满长度。

组名称

grp_name

varchar2(50)

varchar (50)

 

组标识对应名称

组权限标识

grp_auth_id

char(2)

char(2)

 

由低到高,从00到99。要填满长度

组权限名称

grp_auth_name

varchar2(50)

varchar (50)

 

组权限标识对应名称

密码

password

varchar2(30)

varchar(30)

 

 

9.2                                                                  客户个人信息常用字段

字段名称

字段代码

ORACLE

SQLSERVER

值

说明

客户标识

customer_id

char(?)

char(?)

 

业务系统使用的客户标识,一般做主键,不用可变长类型。要填满长度。

客户姓名

customer_name

varchar2(50)

varchar(50)

 

 

部门标识

dept_id

char(?)

char(?)

 

一般做主键,不用可变长类型。要填满长度。

部门名称

dept_name

varchar2(50)

varchar(50)

 

 

性别

sex

char(1)

char(1)

F/M

以下没有标识的,直接在字段中填写具体值

婚姻状况

marriagestatus

varchar2(50)

varchar(50)

 

 

出生日期

birthday

date

smalldatetime

 

 

身高

hight

number(5,2)

dec(5,2)

 

单位为厘米

体重

weight

number(5,2)

dec(5,2)

 

单位为公斤

民族

nationality

varchar2(20)

varchar(20)

 

 

联系电话

phone

varchar2(50)

varchar(50)

 

 

家庭电话

home_phone

varchar2(50)

varchar(50)

 

 

办公电话1

office_phone1

varchar2(50)

varchar(50)

 

 

办公电话2

office_phone2

varchar2(50)

varchar(50)

 

 

区号

zone

varchar2(20)

varchar(20)

 

 

传真号码

office_fax

varchar2(50)

varchar(50)

 

 

移动电话

mobil_phone

varchar2(50)

varchar(50)

 

 

电子信箱

email

varchar2(50)

varchar(50)

 

 

邮政编码

post_code

varchar2(20)

varchar(20)

 

 

国籍

country

varchar2(50)

varchar(50)

 

 

居住省

province

varchar2(20)

varchar(20)

 

 

居住市

city

varchar2(20)

varchar(20)

 

 

家庭住址

home_addr

varchar2(80)

varchar(80)

 

 

办公地点

office_addr

varchar2(80)

varchar(80)

 

 

证件号码

cert_number

varchar2(50)

varchar(50)

 

 

证件名称

cert_name

varchar2(20)

varchar(20)

 

 

职业标识

occupation_id

char(4)

char(4)

 

要填满长度

职业名称

occupation

varchar2(50)

varchar(50)

 

 

教育程度

education

varchar2(20)

varchar(20)

 

 

9.3                                                                  铺助信息常用字段

字段名称

字段代码

ORACLE

SQLSERVER

值

说明

记录状态标识

flag

char(1)

char(1)

A/D…

A:有效;D:删除;S:暂停…

记录序号

id

number

int

 

 

9.4                                                                  业务信息常用字段

字段名称

字段代码

ORACLE

SQLSERVER

值

说明

业务发生日期

oper_date

date

smalldate

 

 

开始日期

begin_date

date

smalldate

 

 

结束日期

end_date

date

smalldate

 

 

操作日期

curr_date

date

smalldate

 

 

操作员编号

user_id

char(4)

char(4)

 

即为系统信息中的用户标识

发生额

 

number(7,2)

dec(7,2)

 

 

余额

balance

number(10,2)

dec(10,2)

 

 

描述

description

varchar2(50)

varchar(50)

 

 

 

 

 

 

 

 

 

 

10  设计实例(SQL SERVER 2000)

10.1                                                             表、主键、外键、索引、规则、约束

名称:t_base_user

中文名称:用户基本信息表

简单说明:存放用户的基本信息

名称

代码

数据类型

键、规则、约束

注释

用户ID

user_id

char(8)

PK

用户唯一标识

用户姓名

user_name

varchar(20)

 

用户真实姓名

身高

hight

decimal(7,2)

rl_not_zero

为举例子而设定此三个字段,原表没有。

体重

weight

decimal(7,2)

 

开始日期

begin_date

smalldatetime

df_begin_date

部门id

department_id

char(4)

FK

用户所属的部门id

参照主表:department

用户职务1id

headship1_id

char(4)

FK

用户的职务id

参照主表:

用户职务2id

headship2_id

char(4)

FK

用户的职务id

参照主表:

用户职称id

title_id

char(4)

FK

用户的职称id

参照主表:

电话号码

phone

varchar(50)

 

用户的电话号码

 

email

varchar(50)

 

 

银行账号

account_no

varchar(50)

 

用户的工资银行账号

身份ID

cert_number

varchar(30)

UNI INDEX

用户的身份ID

停用

flag

char(1)

NOT NULL

识别用户是否被注销

 

/*==============================================================*/

/* Table: t_base_user  */

/*==============================================================*/

create table t_base_user (

user_id              char(8)              not null,

user_name            varchar(20)          null,

hight                decimal(7,2)         null,

weight               decimal(7,2)         null,

begin_date           smalldatetime        null,

department_id        char(4)              null,

headship1_id         char(4)              null,

headship2_id         char(4)              null,

title_id             char(4)              null,

phone                varchar(50)          null,

email                varchar(50)          null,

account_no           varchar(50)          null,

cert_number          varchar(30)          null,

flag                 char(1)              null,

constraint ck_flag CHECK (flag between '0' and '9' ),

constraint PK_USER_BASE_USERID primary key  (user_id)

)

go

 

/*==============================================================*/

/* Index: idx_cert_number                                       */

/*==============================================================*/

create unique  index idx_cert_number on user_base (cert_number)

go

 

/*==============================================================*/

/*      foreign Key: fk_user_base_department_depid              */

/*==============================================================*/

alter table user_base

add constraint FK_USER_BASE_DEPARTMENT_DEPID foreign key (department_id)

      references department (department_id)

go

 

…

 

(注:以上语句假设主表名为DEPAERMENT。依照此语句创建其他外键)

 

/*==============================================================*/

/* 绑定规则rl_not_zero 到表 user_vase中的列hight              */

/*==============================================================*/

exec sp_bindrule 'dbo.rl_not_zero', 'user_base.hight'

 

/*==============================================================*/

/* 绑定缺省 df_begin_date 到表user_base的列begin_date         */

/*==============================================================*/

exec sp_bindefault 'dbo.df_begin_date', 'user_base.begin_date'

 

 

 

附件1:数据库数据字典

名称:t_base_user

中文名称:用户基本信息表

简单说明:存放用户的基本信息

名称

代码

数据类型

外来键

(外键)

强制

(约束)

主要的(主键)

注释

用户ID

user_id

Char(8)

 

TRUE

TRUE

用户唯一标识

用户姓名

user_name

Varchar(20)

 

 

 

用户真实姓名

部门id

department_id

Char(4)

TRUE

 

 

用户所属的部门id

参照主表:department

用户职务1id

headship1_id

Char(4)

TRUE

 

 

用户的职务id

参照主表:

用户职务2id

headship2_id

Char(4)

TRUE

 

 

用户的职务id

参照主表:

用户职称id

title_id

Char(4)

TRUE

 

 

用户的职称id

参照主表:

电话号码

Phone

Varchar(50)

 

 

 

用户的电话号码

 

Email

Varchar(50)

 

 

 

 

银行账号

account_no

Varchar(50)

 

 

 

用户的工资银行账号

身份ID

cert_number

Varchar(30)

 

 

 

用户的身份ID

停用

Flag

Char(1)

 

TRUE

 

识别用户是否被注销

 

主键:PK_BASE_USER_USERID

外键:FK_BASE_USER_DEPARTMENT_DEPID,…

 

附件2:数据库类型简写

编号

数据库

类型简写

1

SYBASE

SYB

2

ORACLE

ORA

3

DB2

DB2

4

SQL SERVER

SQL

 



 

JAVA编码规范:安全规约、mysql数据库_java后端的sql编码规范 说明:其中 id 必为主键,类型为 bigint unsigned、单表时自增、步长为1。create_time,update_time的类型均为 datetime 类型。数据的创建时间和数据的修改时间,分别代表这条数据什么时间创建什么时间修改;id是作为数据库一定遵守设计范式第一范式就是必须有主键代表数据的唯一值。正例:where a=?and b=?order by c;索引:a_b_c反例:索引如果存在范围查询,那么索引有序性无法利用,如:WHERE a>10 ORDER BY b; 阅读详情

相关推荐

数据仓库开发教程 (DW) 之数据模型架构&编码规范

数据层次的划分 ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史变化。其主要作用是把基础数据引入到MaxCompute。 CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。它的主要作用是完成数据加工与整合、建立一致性的维度、构建可复用的面...

AI天才研究院 8982

数据字典类别编号规范

项目的编码原则  项目编码是计算机查找信息的主要依据和手段,它为数据的记录、存储和检索提供了一种简化的符号标识,提高了数据处理的效率和准确性。项目编码实质上是将相同内容、相同性质和需要统一管理的项目归并在一起,将不同的和需要分别管理的项目区分开来,自上而下排列成一个有层次的逐级展开的标准分类体系。在此基础上,用科学、实用和统一的原则和方法对分类项目进行标准编码,并确立代码与项目之间的对应关系。对每...

weixin_30702887的博客 2294

数据科学家之路: 数据仓库开发教程 (DW)- 数据模型架构&编码规范 & 分层 ODS / DWD / DWS / ADS...

数据层次的划分ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于一个数据准备区,同时又承担着基础数据的记录以及历史...

AI天才研究院 1万+

编码体系与规范

网页编码是指网页中字符的编码方式。目前国内常见的网页字符编码主要有utf-8、gbk、gb2312,其中 utf-8为国际化编码,在各国各地区的网站中都很常见,可以说是最通用的字符编码。此外,有些日本网页会使用EUC-JP、SHIFT-JIS,有些韩国网页会使用EUC-KR等字符编码。

W_chuanqi的博客 1655

数据库编码规范Database Code Conventions

Database Code Conventions

DaVinci Configurator实战:从DBC导入到通信栈配置全解析

本文详细解析了如何使用Vector DaVinci Configurator工具,从导入行业标准DBC文件开始,高效完成AutoSAR通信栈(包括COM、PduR、CanIf等模块)的自动化与精细化配置。文章通过实战步骤,重点阐述了DBC导入、与EB MCAL协同、核心模块参数调整及诊断标定服务集成等关键环节,旨在帮助汽车电子工程师快速掌握这一核心工具,提升开发效率与准确性。

weixin_29159127的博客 596

数据字典的编码规范

在程序处理中,单个关键词不可使用空格分割是idea语法的要求,但是数据字典只是比对,从视觉上空格肯定优于下划线分割,毕竟我们从开始学英文时就是空格分割的。编码使用英文描述,禁止数字标识,英文看几次可以看出来,如果是数字只能去数据字典表对比。看老程序的数据字典采用下划线分割,其实使用空格分割不是更好吗?

qq_41609778的博客 454

DRM驱动架构浅析-上(DRM基础概要与U-Boot阶段驱动解析)

本文主要探讨了Rockchip平台的DRM显示驱动架构及其在U-Boot阶段的实现。

一路寒风身如絮,命海沉浮客独行 1766

数据开发 的 代码规范 以及 代码评审脚本

代码评审 Python编码规范 SQL编码规范 子查询用WITH AS,每个子查询都要有中文注释 代码审核 正则表达式 注释占比 注释占比 代码审核脚本Python3 编程规范 代码规范 代码扫描 代码审核

ArYe 1968

离线路径规划服务Graphhopper

离线路径规划服务Graphhopper 本文主要探索使用Graphhopper搭建离线路径规划服务,需要掌握一定的JAVA基础环境配置的知识 文章目录离线路径规划服务Graphhopper前言一、Graphhopper是什么?二、使用步骤1.下载Graphhopper2.从OpenStreetMap下载路图数据3.安装Graphhopper所需环境4.修改配置5.启动Graphhopper总结 前言 在外网环境中可以使用百度、高德等第三方的sdk用以实现路径规划的功能,由于项目的需要,在离线环境中需要使

Sysdark的博客 7561

Vscode + QT + CMake:高效开发环境搭建全攻略

本文详细介绍了如何搭建Vscode+QT+CMake高效开发环境,涵盖环境安装、配置优化及项目创建全流程。通过整合Vscode的轻量化编辑、QT的跨平台GUI开发以及CMake的现代构建管理,该组合特别适合大型QT项目和跨平台开发团队,能显著提升开发效率。

weixin_30338481的博客 504

数据仓库-HQL编码规范

目录 模型命名规范 SQL文件约定 SQL编码规范 文件头部 SQL结构 编码习惯 HIVE学习资源汇聚模型命名规范 整体命名格式 [库名/层名][主题/DBNAME][具体表名]_[模型更新周期][全量/增量标识](1)[库名/层名]: stg: 贴源数据 表名采用 s

yangws2004的博客 1890

PX4算法解析:L1制导律

一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算...

weixin_44616080的博客 8257

OceanBase数据库编码规范详解

编码规范是软件开发中至关重要的一环,它不仅能提高代码的可读性和可维护性,还能减少潜在的错误。本文将深入解析OceanBase数据库项目的编码规范,帮助开发者更好地理解和遵循这些规范。 ## 目录与文件规范 ### 目录结构设计 OceanBase采用清晰的目录结构划分: - src目录:存放核心源代码,包括头文件和实现文件 - unittest目录:存放单元测试和小规模集成测试代码 - to...

gitblog_00208的博客 462

【STM32】R05D电控红外协议的美的空调遥控器

目录一、设计思路一、R05D红外协议原理1.协议手册理解2.验证时序(重点)二、硬件实现1.需要的材料2.对发射模块电路进行修改3.STM32 GPIO选择三、代码实现1.载波38kHZ实现2.R05D时序实现3.调用函数并验证 一、设计思路 通常红外遥控采用NEC传输协议,而美的空调采用的是R05D红外协议(应该是自己设计的协议),因此用一般红外编码发射模块无法直接对空调进行控制。 解决方法:获取R05D协议手册 + 用红外接收管对原有遥控器红外接收进行波形分析。 一、R05D红外协议原理 R05D电控功

weixin_42204837的博客 1万+

SAP_MM模块采购订单显示含税价&不含税简介

不含税价(Net Price):基础商品价格,不包含税金。含税价(Gross Price):基础价格加上适用税金后的总价。在SAP中,采购订单通常以不含税价为基础,通过配置税码和定价方案,系统会自动计算含税总价。

我小时候很黑的博客 2303

ORACLE数据库命名编码规范

ORACLE数据库命名编码规范 ORACLE数据库命名编码规范 版本记录: 当前版本: 作 者: 完成日期: 签 收 人: 文件状态: [ ] 草稿 [√] 正式发布 [ ] 正在修改 签收日期: 1、 编写目的 使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和 继承。 2、 适用范围 本规范适用于公司范围内所有以

再谈蓝色勋章 2731

基于STM32+ESP8266+手机APP的心率血氧温湿度监测报警系统设计(项目资料ID:18)

基于 STM32 微控制器、ESP8266 无线模块和 QT 手机 APP 的多参数监测报警系统。该系统可实时采集心率、血氧饱和度、环境温湿度等参数,通过 OLED 显示屏本地显示,并通过 WiFi 模块上传至手机 APP 实现远程监测与数据可视化。系统具备报警阈值自定义功能,当参数超出设定范围时,通过蜂鸣器和 LED 进行声光报警。系统以 STM32F103 为控制核心,采用 MAX30102 传感器采集心率和血氧,DHT20 采集温湿度,通过 ESP8266 实现无线通信,配合 QT 开发的手机 APP

以培养嵌入式工程师为己任 1万+

数据库设计 命名及编码规范

[url]http://blog.youkuaiyun.com/seusoftware/archive/2010/04/24/5524414.aspx[/url][quote]一、综述 命名和编码过程中,定义有意义的名称,以易于理解、方便书写为原则。 (1)避免使用中文,尽量使用全拼音或全英文,以方便国际化; (2)避免拼音和英文的中西合璧,如:CAOZUO_TIME; (3)避免在命名中包括空格及特...

Wuaner的博客 602

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ORACLE数据库的统一命名与编码规范

1、编写目的 使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。 2、适用范围 本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。 3、对象命名规范 3.1 数据库和SID 数据库名定义为系统名+模块名 ★ 全局数据库名和例程SID 名要求一致 ★ 因SID

wise_man的专栏 1293

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Oracle数据库命名编码规范

ORACLE数据库命名编码规范版本记录:当前版本:作 者: 完成日期:签 收 人:文件状态:[ ] 草稿[√] 正式发布[ ] 正在修改签收日期:1、 编写目的使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读、理解和继承。2、 适用范围本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作。3

吻舞双全的专栏 762

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

mysql schema命名规范_数据库设计 命名及编码规范

http://blog.youkuaiyun.com/seusoftware/archive/2010/04/24/5524414.aspx引用一、综述命名和编码过程中,定义有意义的名称,以易于理解、方便书写为原则。(1)避免使用中文,尽量使用全拼音或全英文,以方便国际化;(2)避免拼音和英文的中西合璧,如:CAOZUO_TIME;(3)避免在命名中包括空格及特殊字符;(4)避免使用保留字;(5)避免名称太长...

weixin_32287433的博客 938
上一篇: 当今中国最经典的25句话
下一篇: IT人为什么有的难以拿到高薪?
gmplayer
博客等级 码龄22年 2粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值