当前位置: 首页 > news >正文

[置顶] 数据库开发常识

数据库开发常识



 

1       命名规范

不同的数据库产品对对象的命名有不同的要求,因此,数据库中的各种对象的命名、后台程序的代码编写应采用大小写敏感的形式,所有的命名受到oracle命名长度18个字符的约束限制,这样便于应用系统适应不同的数据库。

2        游标

游标提供了对特定集合中逐行扫描的手段,一般使用游标逐行遍历数据,根据取出的数据不同条件进行不同的操作。尤其对多表和大表定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等特甚至死机。

在有些场合,有时也非得使用游标,此时也可考虑将符合条件的数据行转入临时表中,再对临时表定义游标进行操作,可时性能得到明显提高。

3        索引使用

创建索引一般有以下两个目的:维护被索引列的唯一性和提供快速访问表中数据的策略。大型数据库有两种索引即簇索引和非簇索引,一个没有簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部,而建立了簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引,因此,根据B树结构,可以理解添加任何一种索引均能提高按索引列查询的速度,但会降低插入、更新、删除操作的性能,尤其是当填充因子(Fill Factor)较大时。所以对索引较多的表进行频繁的插入、更新、删除操作,建表和索引时因设置较小的填充因子,以便在各数据页中留下较多的自由空间,减少页分割及重新组织的工作。

4        数据的一致性与完整性

为了保证数据库的一致性和完整性,设计人员往往会设计过多的表间关联(Relation),尽可能的降低数据的冗余。表间关联是一种强制性措施,建立后,对父表(Parent Table)和子表(Child Table)的插入、更新、删除操作均要占用系统的开销,另外,最好不要用Identify 属性字段作为主键与子表关联。如果数据冗余低,数据的完整性容易得到保证,但增加了表间连接查询的操作,为了提高系统的响应时间,合理的数据冗余也是必要的。使用规则(Rule)和约束(Check)来防止系统操作人员误输入造成数据的错误是设计人员的另一种常用手段,但是,不必要的规则和约束也会占用系统的不必要开销,需要注意的是,约束对数据的有效性验证要比规则快。

5        数据库性能

在计算机硬件配置和网络设计确定的情况下,影响到应用系统性能的因素不外乎为数据库性能和客户端程序设计。而大多数数据库设计员采用两步法进行数据库设计:首先进行逻辑设计,而后进行物理设计。数据库逻辑设计去除了所有冗余数据,提高了数据吞吐速度,保证了数据的完整性,清楚地表达数据元素之间的关系。而对于多表之间的关联查询(尤其是大数据表)时,其性能将会降低,同时也提高了客户端程序的编程难度,因此,物理设计需折衷考虑,根据业务规则,确定对关联表的数据量大小、数据项的访问频度,对此类数据表频繁的关联查询应适当提高数据冗余设计。

6        数据类型选择

Identify字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。

Text 和Image字段属指针型数据,主要用来存放二进制大型对象(BLOB)。这类数据的操作相比其它数据类型较慢,因此要避开使用。

日期型字段的优点是有众多的日期函数支持,因此,在日期的大小比较、加减操作上非常简单。但是,在按照日期作为条件的查询操作也要用函数,相比其它数据类型速度上就慢许多,因为用函数作为查询的条件时,服务器无法用先进的性能策略来优化查询而只能进行表扫描遍历每行。


 

转载于:https://www.cnblogs.com/james1207/p/3306270.html

相关文章:

  • 数据结构中三表合一的实现
  • 雷电
  • CSLA - 介绍以及学习资料
  • 软粒子
  • gamma空间
  • python中库引用与import
  • 一道有趣的面试题
  • msg to msg
  • sql sever 触发器的概念和使用
  • unity——OnRenderImage深度解读
  • LOD and Reflections Adding Details
  • C-Lodop提示Access violation at address ...in module 'CLodopPrint32.exe' write of address
  • jQuery get post 碎片(远程html)加载
  • 天空盒的绘制
  • webbrowser登录-无id
  • Babel配置的不完全指南
  • CSS相对定位
  • DOM的那些事
  • Intervention/image 图片处理扩展包的安装和使用
  • Java反射-动态类加载和重新加载
  • LeetCode算法系列_0891_子序列宽度之和
  • PHP 的 SAPI 是个什么东西
  • Shadow DOM 内部构造及如何构建独立组件
  • Web设计流程优化:网页效果图设计新思路
  • 仿天猫超市收藏抛物线动画工具库
  • 给Prometheus造假数据的方法
  • 马上搞懂 GeoJSON
  • 字符串匹配基础上
  • 白色的风信子
  • 《天龙八部3D》Unity技术方案揭秘
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # 计算机视觉入门
  • #etcd#安装时出错
  • #单片机(TB6600驱动42步进电机)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (2.2w字)前端单元测试之Jest详解篇
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (推荐)叮当——中文语音对话机器人
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)人的集合论——移山之道
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项
  • [ERROR]-Error: failure: repodata/filelists.xml.gz from addons: [Errno 256] No more mirrors to try.
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [ffmpeg] aac 音频编码
  • [Flutter]打包IPA