sql 设计规范
设计规范:
1.采用有意义的字段名
尽可能地把字段描述的清楚些。当然,也别做过头了,比如CustomerShippingAddressStreetLine1虽然很富有说明性,但没人愿意键入这么长的名字,具体尺度就在你的把握中。首个字母小写,多个单词的话,每个单词的首个字母要求用大写!不要用下划线来连接每个单词. 2.遵守3NF
标准3NF规定:
A.表内的每一个值都只能被表达一次。
B.表内的每一行都应该被唯一的标识(有唯一键)。
C.表内不应该存储依赖于其他键的非键信息。
3.小心保留词
要保证你的字段名没有和保留词、数据库系统或者常用访问方法冲突,比如,写的一个ODBC连接程序里有个表,其中就用了DESC作为说明字段名。后果可想而知!DESC 是DESCENDING缩写后的保留词。表里的一个SELECT *语句倒是能用,但我得到的却是一大堆毫无用处的信息。
4.表应避免可为空的列
5.保持字段名和类型的一致性
在命名字段并为其指定数据类型的时候一定要保证一致性。假如字段在某个表中叫做“AgreeMentNumber”,你就别在另一个表里把名字改成“ref1”。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。记住,你干完自己的活了,其他人还要用你的数据库呢。
命名规范
(所有的名字加上前缀:Bio,在加上大板块前缀,如ERP的表应为:BioErpBaseUser)
相关前缀:
Erp系统:BioErp 电子商务:BioShop 门户网站:BioCo 相关子前缀:
基本: Ba(Base) 客服: Cs 人事: Hr 表单: Tb
销售: Sa(Sale) 等等
1.数据库(Database)的定义
数据库名称=数据库内容标识(首字大写)
2.表(Table)的定义
命名应尽量反映存储的数据内容。
表名前缀:以该表及与该表相关联的一系列表的内容而得到一个代表统一的标识 表名称=表名前缀+表内容标识(首字大写) 如客服相关联的一系的表以Cs作为前缀,
即有表名:BioErpCsHistory, BioErpCsContact, BioErpCsBusiness
符合以下规范:
1. 统一采用单数形式,反对BioErpBaUsers
2. 首字母大写,多个单词的话,单词首字母大写,反对bioErpCsHistory /BioErpBaUseraccout/BioErpBaORDER
3. 避免中文拼音,反对BioErpBaAgentBaoXiao
4. 避免下划线连接,反对BioErpBa_UserAccout(下划线适用Oracle数据库) 5. 避免保留字
3.字段
字段名如userID/userName/userType 符合以下规范:
1. 首个字母小写,多个单词的话,单词首字母大写,反对UserID/Userid 2. 必须有一主键,主键直接用ID 3. 常用的字段name,不直接用name,而是表名+Name,如userName/orderName 4. 常用的字段desc,不直接用desc,而是表名+Desc,如userDesc/orderDesc 5. 大写字母前必须包含至少两个小写的字母,反对uID/oID 6. 避免中文拼音 7. 避免下划线连接 8. 避免名称过长 9. 避免保留字
4.变量名
首个字母小写,多个单词的话,每个单词的首个字母要求用大写,如@employeeName
5.对象
1. 存储过程以SP_为前缀 2. 触发器以TR_为前缀 3. 函数以FN_为前缀 4. 主键以PK_为前缀 5. 索引以IX_为前缀
6. 前缀后的首字母大写,多个单词的话,单词首字母大写,如BioErpSP_CountFee 7. 所有的关键字的所有字母必须大写,如SELECT userID,username FROM User
6.命名中其他注意事项
禁止使用中文命名!
命名都不得超过30个字符的系统限制,变量名的长度限制为29(不包括标识字符@)。 命名都采用英文字符,每个单词的首个字母要大写。
7.SQL语句的编写规范
数据库中存储过程和触发器中涉及大量的SQL语句,对SQL语句的编写规范如下:
关键字大写:在SQL语句的编写中,凡是SQL语句的关键字一律大写,如:SELECT、ORDER BY、GROUP BY、FROM、WHERE、UPDATE、INSERT INTO、SET、BEGIN、END等
8.内容注释
存储过程,触发器,函数,视图等都应该加上内容注释。注释格式如下: -- =============================================
-- Author: Tiger
-- Create date: 2009-4-15
-- Description: 根据信息完整度生成客户统计数据 -- Update: 2009-4-30 By Tiger
-- ============================================= 表的陌生字段应当加上简要的字段说明和内容说明。
设计规范 命名规范
sql 设计规范的更多相关文章
- MySQL数据库规范 (设计规范+设计规范+操作规范)
I 文档定义 1.1 编写目的 为了在软件生命周期内规范数据库相关的需求分析.设计.开发.测试.运维工作,便于不同团队之间的沟通协调,以及在相关规范上达成共识,提升相关环节的工作效率和系统的可维护性. ...
- DBA的规范
DBA操作规范 1.涉及业务上的修改/删除数据,在得到业务方.CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆. 2.所有上线需求必须走工单系统,口头通知视为无效. 3.在对大表做表 ...
- DBA的40条军规
DBA操作规范 1.涉及业务上的修改/删除数据,在得到业务方.CTO的邮件批准后方可执行,执行前提前做好备份,必要时可逆. 2.所有上线需求必须走工单系统,口头通知视为无效. 3.在对大表做表结构变更 ...
- SQL Server数据库设计规范
数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...
- SQL Server 数据库设计规范
数据库设计规范 1.简介 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其他应用系统,使之能有效地存储数据,满足各种用户的需求.数据库设计过程中命名规范很是重要,命名规范合理的 ...
- MySql设计规范及SQL索引优化【呕心之作】
数据库及表结构基本设计规范 1. 所有表必须使用Innodb存储引擎 没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5. ...
- 高性能可扩展mysql 笔记(一)数据库表、索引、SQL语句设计规范
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 项目说明:该笔记的背景为电商平台项目,电商项目由于其高并发.多线程.高耗能等特性,在众多的项目类型中涉及 ...
- 关于Schema设计规范及SQL使用建议
1.所有的InnoDB表都设计一个无业务用途的自增列做主键,对于绝大多数场景都是如此,真正纯只读用InnoDB表的并不多,真如此的话还不如用TokuDB来得划算: 2.字段长度满足需求前提下,尽可能选 ...
- 解析大型.NET ERP系统 20条数据库设计规范
数据库设计规范是个技术含量相对低的话题,只需要对标准和规范的坚持即可做到.当系统越来越庞大,严格控制数据库的设计人员,并且有一份规范书供执行参考.在程序框架中,也有一份强制性的约定,当不遵守规范时报错 ...
随机推荐
- socket客户端和服务器端
服务器端: #!/usr/bin/env python #-*- coding:utf-8 -*- import socket sk=socket.socket() sk.bind(('127.0.0 ...
- 聊聊Http协议
http协议是大家在互联网中最为熟悉的协议,只要上网大家都会遇到,但是,很多人被问道什么是http协议,http协议的内容是什么就懵了.这里,我们随便聊聊http协议. 首先,我们说说协议.我一直觉得 ...
- java两年工作经验有什么经验
这两年里,了解了完整项目的开发过程,知道如何快速入手一个完全没接触过的项目:譬如先了解数据库关系后,马上熟悉一个功能从前端到后端的实现过程,自己再写一个功 能,这样子就能马上上手开发项目,之后在慢慢了 ...
- php js css加载合并函数 宋正河整理
<?php //php js css加载合并函数 宋正河整理 //转载请注明出处 define('COMBINE_JS',true); define('COMBINE_CSS',true); ...
- 使用python实现解析二元一次方程
二元一次函数的实现 import cmathimport mathimport sys 这里导入cmath包是在后面用来处理复数的情况导入math使用来处理 平方 根号等的运算而导入sys的意义是为了 ...
- Controller - 压力机的设置 - 界面图表分析
一. Controller- 压力机界面的一下设置讲解 2种测试场景的设计和压测策略 二. Controller- 压力机界面的图表分析
- 007 --MySQL索引底层实现原理
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之一.我们都希望查 ...
- 【Docker】Docker 目录
目录: [Docker]第一篇 Docker的初始化安装部署 [Docker]第二篇 Docker镜像管理 [Docker]第三篇 Docker容器管理 [Docker]第四篇 Docker仓库管理
- VGG——Very deep convolutional networks for large-scale image recognition
1. 摘要 在使用非常小(3×3)的卷积核情况下,作者对逐渐增加网络的深度进行了全面的评估,通过设置网络层数达 16-19 层,最终效果取得了显著提升. 2. 介绍 近来,卷积神经网络在大规模图像识别 ...
- Qt tableWidget 空单元格 获取选中行行号
bool focus = tableWidget->isItemSelected(tableWidget->currentItem()); // 判断是否选中一行 Int row1 = t ...