数据库设计和编码规范
数据库编码规范

数据库编码规范V1.02022-8-28目的范围术语设计概要命名规范(逻辑对象)数据库对象命名脚本注释数据库操作原则常用字段命名(参考)1)目的为了统一公司软件开辟的设计过程中关于数据库设计时的命名规范和具体工作时的编程规范,便于交流和维护,特制定此规范。
2)范围本规范合用于开辟组全体人员,作用于软件项目开辟的数据库设计、维护阶段<3)术语数据库对象:在数据库软件开辟中,数据库服务器端涉及的对象包括物理结构和逻辑结构的对象。
物理结构对象:是指设备管理元素,包括数据文件和事务日志文件的名称、大小、目录规划、所在的服务器计算极名称、镜像等,应该有具体的配置规划。
普通对数据库服务器物理设备的管理规程,在整个项目/产品的概要设计阶段予以规划。
逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数据库配置有关的设计以及数据库中其他特性处理相关的设计等。
4)设计概要设计环境<数据库:ORACLE9i、MSSQLSERVER2000 等,操作系统:LINUX7.1 以上版本,显示图形操作界面;RedHat9 以上版本WINDOWS2000SERVER 以上设计使用工具手使用PowerDesigner 做为数据库的设计工具,要求为主要字段做详尽说明。
对于SQLServer 尽量使用企业管理器对数据库进行设计,并且要求对表,字段编写详细的说明(这些将作为扩展属性存入SQLServer 中) 手通过PowerDesigner 定制word 格式报表,并导出word 文档,作为数据字典保存。
(PowerDesignerv10 才具有定制导出word 格式报表的功能)<对于SQLServer 一旦在企业管理器进行数据库设计时加入扩展属性,就可以通过编写简单的工具将数据字典导出。
4 编写数据库建数据库、建数据库对象、初始化数据脚本文件设计原则4 采用多数据文件手禁止使用过大的数据文件,unix 系统不大于2GB,window 系统不超过500MB$oracle 数据库中必须将索引建立在索引表空间里。
数据库的设计方法、规范与技巧

数据库的设计⽅法、规范与技巧⼀、数据库设计过程 数据库技术是信息资源管理最有效的⼿段。
数据库设计是指对于⼀个给定的应⽤环境,构造最优的数据库模式,建⽴数据库及其应⽤系统,有效存储数据,满⾜⽤户信息要求和处理要求。
数据库设计中需求分析阶段综合各个⽤户的应⽤需求(现实世界的需求),在概念设计阶段形成独⽴于机器特点、独⽴于各个DBMS产品的概念模式(信息世界模型),⽤E-R图来描述。
在逻辑设计阶段将E-R图转换成具体的数据库产品⽀持的数据模型如关系模型,形成数据库逻辑模式。
然后根据⽤户处理的要求,安全性的考虑,在基本表的基础上再建⽴必要的视图(VIEW)形成数据的外模式。
在物理设计阶段根据DBMS特点和处理的需要,进⾏物理存储安排,设计索引,形成数据库内模式。
1. 需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的处理需求)。
需求分析的重点是调查、收集与分析⽤户在数据管理中的信息要求、处理要求、安全性与完整性要求。
需求分析的⽅法:调查组织机构情况、调查各部门的业务活动情况、协助⽤户明确对新系统的各种要求、确定新系统的边界。
常⽤的调查⽅法有:跟班作业、开调查会、请专⼈介绍、询问、设计调查表请⽤户填写、查阅记录。
分析和表达⽤户需求的⽅法主要包括⾃顶向下和⾃底向上两类⽅法。
⾃顶向下的结构化分析⽅法(Structured Analysis,简称SA⽅法)从最上层的系统组织机构⼊⼿,采⽤逐层分解的⽅式分析系统,并把每⼀层⽤数据流图和数据字典描述。
数据流图表达了数据和处理过程的关系。
系统中的数据则借助数据字典(Data Dictionary,简称DD)来描述。
数据字典是各类数据描述的集合,它是关于数据库中数据的描述,即元数据,⽽不是数据本⾝。
数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分(⾄少应该包含每个字段的数据类型和在每个表内的主外键)。
数据项描述={数据项名,数据项含义说明,别名,数据类型,长度, 取值范围,取值含义,与其他数据项的逻辑关系} 数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}} 数据流描述={数据流名,说明,数据流来源,数据流去向, 组成:{数据结构},平均流量,⾼峰期流量} 数据存储描述={数据存储名,说明,编号,流⼊的数据流,流出的数据流, 组成:{数据结构},数据量,存取⽅式} 处理过程描述={处理过程名,说明,输⼊:{数据流},输出:{数据流}, 处理:{简要说明}} 2. 概念结构设计阶段 通过对⽤户需求进⾏综合、归纳与抽象,形成⼀个独⽴于具体DBMS的概念模型,可以⽤E-R图表⽰。
数据库标准规范(两篇)2024

数据库标准规范(二)引言:数据库是当代信息系统中关键的存储和管理数据的工具,数据库标准规范的制定对于确保数据的一致性、完整性和可靠性至关重要。
本文将详细阐述数据库标准规范的五个大点,包括数据库设计、数据模型、数据操作、数据存储和数据安全。
概述:在数据库标准规范中,数据库设计是基础,决定了整个数据库系统的架构和功能。
数据模型定义了数据的结构和属性,数据操作确定了对数据库的增删改查操作,数据存储指定了数据的物理存储方式,数据安全保证了数据库的安全性和可用性。
正文内容:一、数据库设计1. 定义数据库设计的目标和要求,包括数据的一致性、可扩展性和易用性。
2. 建立数据库的概念模型,包括实体关系模型、关系模型和层次模型。
3. 制定数据库设计的规范和准则,确保数据库结构的一致性和易维护性。
4. 设计数据库的表结构,包括表的字段、属性和约束等。
5. 定义数据库的索引和视图,提高数据库的查询和操作效率。
二、数据模型1. 介绍常用的数据模型,包括层次模型、网络模型、关系模型和面向对象模型。
2. 选择合适的数据模型,根据数据库的特点和应用需求进行权衡。
3. 设计数据模型的实体和属性,确保数据的准确性和完整性。
4. 定义数据模型之间的关系,包括一对一、一对多和多对多关系。
5. 使用标准的建模工具和方法,对数据模型进行建模和验证。
三、数据操作1. 定义数据操作的目标和要求,包括数据的增加、删除、修改和查询。
2. 设计数据操作的接口和功能,提供简单易用的操作方式。
3. 制定数据操作的规范和约束,确保数据的一致性和安全性。
4. 优化数据操作的性能,提高查询和更新的效率。
5. 实现数据操作的事务管理和并发控制,确保数据的一致和可靠。
四、数据存储2. 设计数据的物理存储结构,包括数据文件、表空间和数据块等。
3. 制定数据存储的规范和准则,确保数据的安全和可靠。
4. 实施数据存储的备份和恢复策略,保护数据的完整性和可用性。
5. 优化数据存储的性能,提高数据访问的效率和响应速度。
mysql 编码规则

MySQL编码规则是指MySQL数据库中字符集和排序规则的设置。
字符集定义了存储在数据库中的字符数据的类型,而排序规则定义了对这些字符数据的比较和排序方式。
MySQL支持多种字符集和排序规则,其中最常用的是utf8字符集和utf8_general_ci排序规则。
utf8字符集可以存储任何Unicode字符,而utf8_general_ci排序规则则按照字典顺序对字符进行排序。
在MySQL中,可以通过以下命令查看当前数据库的编码规则:
```
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
```
如果需要修改编码规则,可以使用以下命令:
```
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
```
其中,database_name是要修改编码规则的数据库名称,table_name是要修改编码规则的数据表名称。
XX集团数据库开发设计规范

xx数据库开发设计规范第一章总则第一条为了规范集团公司数据格式,提高数据库设计的合理性和数据访问高效性,同时便于阅读和理解数据库的结构,以提高各子集团之间数据共享的质量和效率,促进数据库编码的标准化,特制定本规范。
第二条本规范由集团总公司信息管理部负责制定和修改,最终解释权由集团总公司信息管理部所有。
第三条本规范适用于集团总公司及各子集团及其下属子公司所有包含数据库开发的软件开发项目。
第二章设计规范第四条数据库规范:建议使用Oracle,Sql Server等主流的数据库,禁止使用任何开源数据库(MySql等)。
第五条表设计规范:(一)一行记录必须表内唯一,所有表必须必须有主键。
(二)尽量少使用数据库外键,如有外键完整性约束时,尽量使用程序控制)(三)新加的表,所有字段禁止NULL。
(四)在表创建完成前,应该为表添加表的注释,对表中字段也要有相应的注释和说明第六条索引设计规范:(一)表中索引的数量最好控制在5个以内。
(二)一个索引关联的字段在5个以内。
(三)禁止在更新十分频繁、或者区分度不高的属性上建立索引。
(四)建立组合索引,必须把区分度高的字段放在前面。
第七条字符设计规范:(一)字符类型建议采用varchar/nvarchar数据类型(二)手机号采用varchar(20)进行存储(三)金额货币采用money或者number数据类型(四)科学计数采用numeric数据类型(五)自增长标识采用bigint数据类型(数据量一大,用int类型就装不下,那以后改造就麻烦了) (六)时间类型建议为datetime数据类型,对于日期类型的建议采用date数据类型(七)禁止使用text、ntext、image等老的数据类型(八)禁止使用xml数据类型、varchar(max)、nvarchar(max)第八条SQL查询设计规范:(一)禁止在数据库做复杂运算,例如XML解析,字符串相似性比较,字符串搜索等。
(二)禁止使用SELECT *(三)禁止在索引列上使用函数或计算(四)尽量避免使用游标(五)尽量避免使用触发器(六)禁止在查询里指定索引(七)变量/参数/关联字段类型原则上要求与字段类型一致(八)参数化查询(九)限制JOIN个数,单个SQL语句的表JOIN个数不能超过5个。
数据库设计指南

数据库设计指南1. 设计原则1.1. 关于范式如无性能上的必要原因,应该考虑遵循关系数据库理论,达到较高的范式匹配(3NF),避免数据冗余,明确数据间的关系。
如果对性能有较高要求,或者在特定场景达成业务目标的便利性收益高于数据管理影响,可以设计适当的突破范式要求。
1.2. 字符集和编码应当采用Unicode字符集和UTF8编码,此为PostgreSQL 数据库服务器默认设置,并且,如果在创建数据库(实例)时没有特别指定,也将是数据库(实例)的默认设置。
如果有强烈的中华多文字支持要求,如简体汉字、繁体汉字、少数民族文字、日文、韩文等,可以使用GB18030字符集和编码,不建议使用GB2312、GBK。
1.3. 数据库服务器和数据库一个操作系统中只部署 1 个数据库服务器软件。
一个数据库服务器中可以创建多个数据库。
1.4. 表空间对于PostgreSQL 来说,在同一个磁盘分区上建立多个表空间没有太多实际意义。
从合理利用磁盘性能和空间角度,可以分别建立不同的表空间,如:•在高IO 性能的磁盘分区上创建的表空间,可以用来存放经常访问的表和索引。
•在便宜和较低IO 性能的磁盘分区上创建的表空间,可以用来存放很少使用或性能要求不高的归档数据的表。
对于容器部署的数据库,容器内可以使用默认表空间pg_default(路径$PGDATA/base),并映射到容器外宿主机的特定路径下。
非容器部署的数据库,建议在指定的路径下创建表空间。
多个数据库可以共用同一个表空间。
注意: PostgreSQL 中的表空间与 Oracle 不一样,创建PostgreSQL 表空间只要指定名称与数据库文件的目录,而没有具体的大小。
PostgreSQL 表空间不适用“自动扩容”这个概念,存储不足时可以通过扩展表空间所在存储容量,或者在不同存储设备/分区中新建表空间并指定新表使用新表空间来达到扩容目的。
1.5. Schema建议为子系统、业务模块或用户分配对应的schema。
数据库设计规范_编码规范

数据库设计规范_编码规范数据库设计规范包括数据库表结构的设计原则和数据库编码规范。
数据库表结构的设计原则包括表的命名规范、字段的命名规范、主键和外键的设计、索引的使用、约束的定义等。
数据库编码规范包括SQL语句的书写规范、存储过程和函数的命名规范、变量和参数的命名规范、注释的使用等。
1.表的命名规范-表名使用有意义的英文单词或短语,避免使用拼音或缩写。
- 使用下划线(_)作为单词之间的分隔符,如:user_info。
- 表名使用单数形式,如:user、order。
2.字段的命名规范-字段名使用有意义的英文单词或短语,避免使用拼音或缩写。
- 字段名使用小写字母,使用下划线(_)作为单词之间的分隔符,如:user_name。
- 字段名要具有描述性,可以清楚地表示其含义,如:user_name、user_age。
3.主键和外键的设计-每张表应该有一个主键,用于唯一标识表中的记录。
- 主键字段的命名为表名加上“_id”,如:user_id。
- 外键字段的命名为关联的表名加上“_id”,如:user_info_id,指向user_info表的主键。
4.索引的使用-对于经常用于查询条件或连接条件的字段,可以创建索引,提高查询性能。
-索引的选择要权衡查询性能和写入性能之间的平衡。
-不宜为每个字段都创建索引,避免索引过多导致性能下降。
5.约束的定义-定义必要的约束,保证数据的完整性和一致性。
-主键约束用于保证唯一性和数据完整性。
-外键约束用于保证数据的一致性和关联完整性。
6.SQL语句的书写规范-SQL关键字使用大写字母,表名和字段名使用小写字母。
-SQL语句按照功能和逻辑进行分行和缩进,提高可读性。
-使用注释清晰地描述SQL语句的功能和用途。
7.存储过程和函数的命名规范-存储过程和函数的命名要具有描述性,可以清楚地表示其功能和用途。
-使用有意义的英文单词或短语,避免使用拼音或缩写。
- 使用下划线(_)作为单词之间的分隔符,如:get_user_info。
数据库设计规范_编码规范

数据库设计规范_编码规范1.命名规范:表名、字段名和约束名应该具有描述性,遵循一致的命名规则。
避免使用保留字作为名称,使用下划线或驼峰命名法。
2.数据类型选择:选择合适的数据类型来存储数据,避免过大或过小的数据类型。
这有助于减小数据库的存储空间,提高查询性能。
3.主键和外键:每个表都应该有一个主键来唯一标识每条记录。
外键用于建立表之间的关系,确保数据的一致性和完整性。
4.表的范式:根据具体需求,遵循规范化设计原则。
将数据分解为多个表,减少数据冗余和更新异常。
5.索引设计:根据查询需求和数据量,设计适当的索引。
避免过多或不必要的索引,以减小索引维护的开销。
6.分区设计:对大型表进行分区,将数据分散存储在不同的物理磁盘上,提高查询性能。
7.安全性设计:为数据库设置适当的权限和访问控制,限制不必要的用户访问和操作。
数据库编码规范:1.编码一致性:统一使用同一种编码方式,如UTF-8,避免不同编码之间的转换问题。
2.参数化查询:使用参数化查询语句,预编译SQL语句。
这样可以防止SQL注入攻击,提高查询性能。
3.事务管理:使用事务控制语句(如BEGIN、COMMIT和ROLLBACK)来管理数据库事务,确保数据的一致性和完整性。
4.错误处理:在代码中捕获和处理数据库错误和异常,提高系统的容错性。
5.SQL语句编写:编写简洁且优化的SQL语句,避免使用多个嵌套的子查询,使用JOIN操作符进行表之间的关联。
6.数据库连接管理:优化数据库连接,避免频繁地打开和关闭数据库连接。
7.缓存机制:对于频繁查询的数据,使用缓存机制来减少数据库的压力。
8.日志记录:记录数据库操作日志,包括增删改查的操作,以便后续的问题跟踪和审计。
综上所述,数据库设计规范和编码规范对于确保数据库系统的性能、安全性和可维护性至关重要。
遵循这些规范能够提高数据库系统的效率和可靠性,减少潜在的问题和风险。
因此,在进行数据库设计和编码时,应该遵循这些规范。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.数据库设计和编码规范————————————————————————————————作者:————————————————————————————————日期:数据库设计和编码规范Version 1.0目录1简介 (7)1.1读者对象 (7)1.2目的 (7)2数据库命名规范 (7)2.1规范总体要求 (7)2.2数据库对象命名规范 (8)2.3变量命名规范 (9)3数据库设计规范 (9)3.1选择有效的设计工具 (10)3.2表的设计 (10)3.2.1遵守范式要求103.2.2字段设计113.2.3适当的合理的冗余123.2.4注意大类型的字段设计133.3表关系和约束设计 (13)3.3.1主键设计143.3.2 外键设计 (15)3.3.3 检查约束 (15)3.4索引的设计 (16)3.4.1聚集索引和非聚集索引163.4.2索引的初始创建原则183.4.3索引的注意事项183.4.4索引的后期维护工作193.5物理存储设计 (20)3.5.1日志文件另外存放203.5.2存储空间的设计204T-SQL编码规范 (22)4.1书写基本规范 (22)4.2使用可搜索参数(WHERE使用原则) (23)4.3少用触发器和禁用游标 (24)4.4联合查询尽可能使用UNION ALL (25)4.5尽可能避免的地方 (25)4.6避免返回和使用多余的数据 (26)4.7操作符优化 (26)4.8数据库事务处理原则 (27)4.9最少次数的访问表 (28)4.10避免隐含的数据类型转换 (28)4.11表变量、临时表和公用表达式的用法 (30)4.12正确地判断记录是否存在 (32)4.13注意自定义标量函数的影响 (32)4.14避免编写复杂的TSQL语句 (33)4.15应用程序层防止执行大块的TSQL语句 (33)4.16对数据库大表的处理方案 (34)4.17SP_EXECUTESQL代替EXEC (35)4.18存储过程的一些建议 (36)5如何进行质量控制 (36)5.1规范的制定、认可和实施 (36)5.2讨论和检查工作 (36)5.3对制定的规范不断完善 (37)5.4讨论和制定公共模板 (37)5.4.1SELECT语句385.4.2JOIN语句385.4.3子查询395.4.4INSERT语句395.4.5UPDA TE语句395.4.6DELETE语句395.4.7CASE语句405.4.8IF语句405.4.9WHILE语句405.4.10EXISTS语句 405.4.11变量声明 415.4.12变量赋值 415.4.13创建表及约束索引 415.4.14存储过程 425.4.15带输出参数的存储过程 435.4.16视图 445.4.17物化视图 445.4.18自定义标量函数 455.4.19自定义表值函数(多语句) 455.4.20自定义表值函数(内联) 465.4.21索引整理 475.4.22数据库事务格式 471简介1.1 读者对象此文档说明书供开发部全体成员阅读。
1.2 目的一个合理的数据库结构设计是保证系统性能的基础。
一个好的规范让新手容易进入状态且少犯错,保持团队支持顺畅,系统长久使用后不至于紊乱,让管理者易于在众多对象中,获取所需或理清问题。
同时,定义标准程序也需要团队合作,讨论出大家愿意遵循的规范。
随着时间演进,还需要逐步校订与修改规范,让团队运行更为顺畅。
2数据库命名规范团队开发与管理信息系统讲究默契,而制定服务器、数据库对象、变量等命名规则是建立默契的基本。
命名规则是让所有的数据库用户,如数据库管理员、程序设计人员和程序开发人员,可以直观地辨识对象用途。
而命名规则大都约定俗成,可以依照公司文化、团队习惯修改并落实。
2.1 规范总体要求1.避免使用系统产品本身的惯例,让用户混淆自定义对象和系统对象或关键词。
例如,存储过程不要以sp_或xp_开头,因为SQL SERVER的系统存储过程以sp_开头,扩展存储过程以xp_开头。
2.不要使用空白符号、运算符号、中文字、关键词来命名对象。
3.名称不宜过于简略,要让对象的用途直观易懂,但也不宜过长,造成使用不方便。
4.不用为数据表内字段名称加上数据类型的缩写。
5.名称中最好不要包括中划线。
6.禁止使用[拼音]+[英语]的方式来命名数据库对象或变量。
2.2 数据库对象命名规范我们约定,数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。
对象名字由前缀和实际名字组成,长度不超过30。
避免中文和保留关键字,做到简洁又有意义。
前缀就是要求每种对象有固定的开头字符串,而开头字符串宜短且字数统一。
可以讨论一下对各种对象的命名规范,通过后严格按照要求实施。
例如:对象命名规范数据库数据库名:[项目英文名称]+DB数据文件:[数据库名称]+_Data.mdf日志文件:[数据库名称]+_Log.ldf表前缀T+[表名];单词首写字母为大写,其余全部小写。
示范:TCustomer表字段不需要前缀,直接用英文单词或缩写,单词首字母为大写,其余为小写。
例如:UserName,如果是两个单词的首写字母缩写,统一用大写,比如:UserID主键所在字段不要用ID。
一律用表名+ID (如果表名太长的话,采用缩写用各单词的首写字母组合)存储过程用P_前缀+[功能描述] (首单词大写,其余下写)例如:P_GetAllCorps视图用前缀V_+[视图名称]例如:V_Account自定义标量函数前缀F_+[功能描述] (首单词大写,其余下写)例如:F_GetEWSourceName自定义表值函数前缀TF_+[功能描述] (首单词大写,其余下写)主键PK_[表名]例如:PK_TExAccount外键用FK_[主表名] _字段表表示(考虑到名字会比较长,突出主表)例如:FK_TOrder_OrderID默认值约束用DF_[表名]_[字段名] 表示例如:DF_TOrder_Type检查约束用CK_[表名]_[字段名] 表示例如:CK_TCustomer_Mail唯一性约束用UQ_[表名]_[字段名] 表示例如:UQ_TCustomer_Code聚集索引用DX_[表名]_[字段名] 表示例如:DX_TCachet_ID其它索引用IX_[表名]_[字段名] 表示(字段名较多时,取前面两个即可)例如:IX_TCachet_CName_CorpID2.3 变量命名规范1.数据列参数命名格式为@+[列名称]。
示例:@EmployeeID @employee_id2.非数据列参数在参数无法跟列名称进行关联时,使用能够反映该参数功能的英文单词或单词组合,采用Pascal样式命名。
示例:@WorkType @work_type3数据库设计规范好的数据库架构设计对系统运行的性能起着很大的作用,所以要在开始时就要引起重视。
为了保证数据库设计的高效必须安排时间对设计结果进行评审,这一环节必不可少。
3.1 选择有效的设计工具数据库设计工具:Power Designer、ER Studio、Rose、Microsoft Visio。
项目开始前要确定使用哪种设计工具。
(另有开发插件:RedGate系列(SQL Prompt)) 选择的工具要便于讨论便入生成脚本导入数据库。
设计通过后要形成文档,并且这个结构设计文档要存档,签入VSS基线库中。
在进行数据库设计时,应随时进行数据字典的维护。
(字段要求写说明)3.2 表的设计表设计在数据库设计中占据有十分重要的地位。
表是实际存储数据的对象。
除了要注重表结构设计,字段的设计之外还要注意表之间关系的设计。
3.2.1遵守范式要求通常,合理的规范化会最小化数据异常和减少数据的冗余。
为了更新数据的正确与快速,在设计的初始阶段多采用三范式设计数据库表。
第一范式强调的是列的原子性,即列不能够再分成其他几列。
第二范式包含两层意思,一是表必须有一个主键;二是非主键列必须完全依赖于主键,且不能只依赖于主键的一部分。
(尽量少使用复合主键)第三范式需要确保数据表中的所有非主键列直接与主键列相关,而不能直接依赖于非主键列。
3.2.2字段设计1.尽量避免可为空的列。
虽然在个别情况下,允许空值可能是有用的,但是应尽量少用。
这是因为需要对它们进行特殊处理,从而会增加数据操作的复杂性和增加CPU额外的逻辑判断。
很多情况下可以考虑用默认值0或空字符串('')来代替NULL值。
所以字段应该有NOT NULL的限制。
2.Unicode的选择。
nvarchar和nchar相应比varchar和char要占用更多的存储空间。
设计的原则是:如果确保存储的内容只是纯英文和数字,用char/varchar。
如果含有中文字符或其它多国语言,用nchar/nvarchar。
3.字段长度要精确,遵守“必须、够用”的原则。
精确的长度设计既能完整的描述数据,又可以节省存储空间。
积小成大,当数据表中的数据有很多记录的时候,这种存储空间的优势就能体现得十分明显。
存储空间越紧凑,分配的页面就越少,在同样大小的内存空间中就可以存储更多的页面,这样操作数据的效率就会提高。
例如能用char(10)的就不要用char(20),提高存储的利用率和系统性能,但同时也要兼顾扩展性和可移植性。
字段类型存储空间补充说明bigint 8 字节-2^63 (-9,223,372,036,854,775,808) 到2^63-1(9,223,372,036,854,775,807)int 4 字节-2^31 (-2,147,483,648) 到2^31-1 (2,147,483,647) smallint 2 字节-2^15 (-32,768) 到2^15-1 (32,767)tinyint 1 字节0 到255decimal(9,2) 5 字节decimal(9,2) 前面的9为精度,后面为小数位。
当精度位于1~9之间时,占5字节。
当精度位于10~19之间时,占9 decimal(19,2) 9字节字节。
注意,numeric 在功能上等价于decimal。
money 8 字节-922,337,203,685,477.5808 到922,337,203,685,477.5807 smallmoney 4 字节-214,748.3648 到214,748.3647datetime 8字节精确到3.33 毫秒。
例如:2014-03-07 17:25:39.450存储范围:1753 年1 月1 日到9999 年12 月31 日smalldatetime 4字节精确到分钟,例如:2014-03-07 17:24:00存储范围是:1900 年 1 月1 日到2079 年6 月6 日uniqueidentifier 16字节uniqueidentifier 数据类型可存储16 字节的二进制值,其作用与全局唯一标识符(GUID) 一样。