命名规范(数据库,c#)
Ⅰ. Naming Conventions
1. Table Naming
Rule 1a ( Prefix) 新加的Table要加上適當的前缀
e.g. mUsr, eTxn, tmpRollex, tSmsInfo, zLogEvt
|
前綴 |
描述Desc |
|
m |
表示相對固定的,e.g. mUser ,mCustomer |
|
e |
表示會變動的,比如交易記錄eTxn |
|
temp |
表示臨時的,可以刪除 e.g. tempRollex |
|
t |
表示由程序臨時生成,提供給程式臨時調用。e.g. tSmsInfo temp與t的區別是,在程序正式交付使用后,temp不參與數據交互,可以刪除,而t不能刪除。 |
|
z |
表示日誌類.e.g. zLogEvt |
|
(注:Insight的database前缀有两个地方有区别,màVld, eà去掉) |
|
Rule 1b (Extra Field) 每個Table加上4个Field以記錄操作信息:
|
Field Name |
Date Type |
描述Desc |
|
wCreateDate |
Datetime |
創建時間 |
|
wCreateUser |
Bigint |
創建用戶 |
|
wStampDate |
Datetime |
修改時間 |
|
wStampUser |
Bigint |
修改用戶 |
Rule 1c (db table) 新建Table.sql,先在.eap文檔裏面加說明,變量類型全部大寫,并對齊, CONSTRAINT要加在字段裏面.
//good
CREATE TABLE [tSmsInfo] (
[wRowId] BIGINT IDENTITY(1,1) NOT NULL,
[wBatchNo] UNIQUEIDENTIFIER NOT NULL,
[wTemplateType] VARCHAR(30) NULL,
CONSTRAINT [PK_tSmsInfo] PRIMARY KEY CLUSTERED ([wRowId])
);
//bad
CREATE TABLE [tSmsInfo] (
[wRowId] bigint identity(1,1) NOT NULL, /* 自增 */
[wBatchNo] uniqueidentifier NOT NULL, /*批次号,GUID。 */
[wTemplateType] varchar(30) NULL, /* 模板*/
);
GO
ALTER TABLE [tSmsInfo]
ADD CONSTRAINT [UQ_tSmsInfo_wRowId] UNIQUE ([wRowId]);
GO
|
新建Table要點說明 |
e.g. |
|
◆將Table及備註加到eap文件 |
|
|
◆變量類型全部大寫 |
BIGINT IDENTITY(1,1) NOT NULL |
|
◆對齊,變量類型之間要對齊 |
[wBatchNo] UNIQUEIDENTIFIER NOT NULL, [wTemplateType] VARCHAR(30) NULL, |
|
◆CONSTRAINT等加到字段裏面 |
[wTemplateType] VARCHAR(30) NULL, CONSTRAINT [PK_tSmsInfo] ... |
|
◆Create Table sql字段不用加備註 |
/* 模板*/ |
2.Column字段
Rule 2a (Prefix) 字段以w作為前綴 ,e.g. wName, wUserId
3.View
Rule 3a (Prefix) view以vw作為前綴 ,e.g. vwUser, vwCustomer
4.Stored Proc
Rule 4a (Prefix) Stored Proc要加上適當的前綴
e.g. spaUser,spqUserLst,sprMember,spzLogEvt
|
前綴 |
描述Desc |
|
spa |
表示Insert Or Update. |
|
spq |
表示query查詢. |
|
spr |
表示 Report用到的sp |
|
spz |
與z為前綴的日誌類table的操作. |
Rule 4b (Parameter) 參數以@p作為前綴
e.g. @pUserId, @pRemark
Rule 4c (Variables) 變量以@d 作為前綴,以區別參數
e.g. @dUserName, @dDtCur
Rule 4d (Syntax) 語句對齊並且要有間隔等,關聯字大寫,Table整齊劃一,一目了然.
//good
SELECT c.wCustId, c.wCName AS wCustName
FROM [dbo].[vwCustomerDtl] AS c LEFT OUTER JOIN
[dbo].[mCustPrefer] AS m ON c.wCustId = m.wCustId
WHERE c.wCardType <> 'STAFF'
ORDER BY c.wCardType DESC;
//bad
select c.wCustId, c.wCName wCustName from vwCustomerDtl c LEFT OUTER JOIN
mCustPrefer m on c.wCustId = m.wCustId where c.wCardType <> 'STAFF' order by c.wCardType desc
|
Store Proc要點說明 |
e.g. |
|
◆Select與From要換行,並且間隔一個Tab,From、Where與Order By要對齊 |
SELECT *** FROM *** WHERE *** |
|
◆幾個 Table Join要換行,並且Table之間要對齊. |
FROM [dbo].[vwCustomerDtl] AS c LEFT OUTER JOIN [dbo].[mCustPrefer] AS m ON |
|
◆關鍵字要大寫 |
SELECT, FROM, ORDER BY |
|
◆重命名中間在用AS |
c.wCName AS wCustName,[vwCustomerDtl] AS c |
|
◆Table名要加上dbo |
[dbo].[vwCustomerDtl] |
|
◆一個語句結束后要加分號“;” |
; |
c#
1. Main
Rule 1a 定義變量,儘量避免用var,用具體的變數類型, 便于閱讀代碼,。
e.g.
//good
string _msg = string.Empty;
//bad
var _msg = string.Empty;
Rule 1b 數據庫查詢,儘量少用Linq, 與多個Table關聯的查詢,要用Stored Proc,方便Debug以及修改. e.g.
//good
List<spqGetSiteLstByTaskIdResult> _lst = db.spqGetSiteLstByTaskId(pTaskId).ToList()
//bad
var query = from pt in this.ObjectContext.SpaGetPartiesTypes(wCategory)/
join so in db.SiteOrgs.Where(x => x.wSiteRowId == wSiteRowId) on pt.wRowId equals so.wOrgTypeId into ps
from so in ps.DefaultIfEmpty(new SiteOrg() { wOrgTypeId = -1, wRECNO = -1, wSiteRowId = -1 })
join uo in db.VldUserOrgs on so.wRECNO equals uo.RECNO into psu ***
命名规范(数据库,c#)的更多相关文章
- mysql及php命名规范
一.mysql命名规范 1.设计原则 1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)通常被认为在性能.扩展性和数据完 ...
- 这次一定理清晰ThinkPHP之中的模型、数据库之间命名规范
ServiceSiteModel.class.php 这个模型操控的数据库是service_site表: <?php namespace Admin\Model; use Think\Model ...
- SQL Server数据库命名规范
良好的命名习惯是一种美德,下面是个人整理的数据库命名规范: 数据库命名规范: 1. 数据库名: 1.1)用产品或项目的名字命名: 1.2)Pascal Case,如 ...
- Android 命名规范 (提高代码可以读性)
android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高代码可以读性) 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名 ...
- Oracle命名规范
1.编写目的 使用统一的命名和编码规范,使数据库命名及编码风格标准化,以便于阅读.理解和继承. 2.适用范围 本规范适用于公司范围内所有以ORACLE作为后台数据库的应用系统和项目开发工作. 3.对象 ...
- C#开发命名规范
学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 ...
- NET 命名规范
1 ADO.NET 命名规范 数据类型 数据类型简写 标准命名举例 Connection con conNorthwind Command cmd cmdReturnProducts Paramete ...
- Android 命名规范 (提高代码可以读性) 转
转自:http://blog.csdn.net/vipzjyno1/article/details/23542617 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件 ...
- ThinkPHP 模型(Model)命名规范
一个小问题搞了好久:如果数据库的表名中有下划线,那么在用thinkphp做自动完成时注意Model类的命名要变成驼峰法,文件名和类名都要变.( 另外注意:只有使用create方法创建数据时才能调用到自 ...
- sql server命名规范
命名规范 表 表名如Order/UserAccout 符合以下规范: 1. 统一采用单数形式,反对Orders 2. 首字母大写,多个单词的话,单词首字母大写,反对order/User ...
随机推荐
- angularjs 新窗口打开
原文链接:angularjs 中state.go 跳转并且打开新的浏览器窗口 业务需要,需要点击打开一个新窗口,并且是点击事件触发的打开新窗口: $scope.lookLook =function(d ...
- repeater控件如何隐藏列?
.aspX文件里将要隐藏的"<td>修改</td>"放在Lable标签里,隐藏实现,如:<asp:lable id=lable1 run=server ...
- 欢迎来到Joyful Physics博客
本博客主要包括以下内容: 物理课程 预计会涵盖非物理专业普通物理.物理专业普通物理.理论物理(四大力学).凝聚态物理,会特别关注软物质物理,因为博主是做软物质物理的. 软硬科普 软科普写给非专业人士. ...
- [Machine Learning & Algorithm] 神经网络基础
目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...
- [Machine Learning & Algorithm]CAML机器学习系列2:深入浅出ML之Entropy-Based家族
声明:本博客整理自博友@zhouyong计算广告与机器学习-技术共享平台,尊重原创,欢迎感兴趣的博友查看原文. 写在前面 记得在<Pattern Recognition And Machine ...
- (转)Sql日期时间格式转换
sql server2000中使用convert来取得datetime数据类型样式(全) 日期数据格式的处理,两个示例: CONVERT(varchar(16), 时间一, 20) 结果:2007-0 ...
- C++编译期间字节序判断
当前常用的字节序一般就两种,大端序和小端序. 下面列出四种字节序的表达方式.在对应平台下,内存布局为{0x,00,0x01,0x02,0x03}的四字节,表示为十六进制的值就如下面代码所示的. END ...
- Owin Self Host
http://owin.org/ Owin 定义了webserver和webapplication之间的标准接口,目标就是为了解耦webapplication对webserver的依赖, 就是说以后可 ...
- pycharm2016 激活
pycharm 2016 专业版 激活方式选第二种 code 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibG ...
- Python3.5在Windows 7下连接ORACLE数据库
1.首先需要安装好oracle数据库,本机适用plsql连接数据库正常,记录下数据库名称 2.安装cx_oracle模块 pip install cx_Oracle 3.python中引入模块 imp ...