浅谈数据库设计技巧(上)

  说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法。面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出抽象模板,以这个抽象模板设计类,再在其中逐步添加处理其数据的函数(即算法),最后,再给类中的数据成员和函数划分访问权限,从而实现封装。

  数据库的最初雏形据说源自美国一个奶牛场的记账薄(纸质的,由此可见,数据库并不一定是存储在电脑里的数据^_^),里面记录的是该奶牛场的收支账目,程序员在将其整理、录入到电脑中时从中受到启发。当按照规定好的数据结构所采集到的数据量大到一定程度后,出于程序执行效率的考虑,程序员将其中的检索、更新维护等功能分离出来,做成单独调用的模块,这个模块后来就慢慢发展、演变成现在我们所接触到的数据库管理系统(DBMS)——程序开发中的一个重要分支。

  下面进入正题,首先按我个人所接触过的程序给数据库设计人员的功底分一下类:
  1、没有系统学习过数据结构的程序员。这类程序员的作品往往只是他们的即兴玩具,他们往往习惯只设计有限的几个表,实现某类功能的数据全部塞在一个表中,各表之间几乎毫无关联。网上不少的免费管理软件都是这样的东西,当程序功能有限,数据量不多的时候,其程序运行起来没有什么问题,但是如果用其管理比较重要的数据,风险性非常大。
  2、系统学习过数据结构,但是还没有开发过对程序效率要求比较高的管理软件的程序员。这类人多半刚从学校毕业不久,他们在设计数据库表结构时,严格按照教科书上的规定,死扣E-R图和3NF(别灰心,所有的数据库设计高手都是从这一步开始的)。他们的作品,对于一般的access型轻量级的管理软件,已经够用。但是一旦该系统需要添加新功能,原有的数据库表差不多得进行大换血。
  3、第二类程序员,在经历过数次程序效率的提升,以及功能升级的折腾后,终于升级成为数据库设计的老鸟,第一类程序员眼中的高人。这类程序员可以胜任二十个表以上的中型商业数据管理系统的开发工作。他们知道该在什么样的情况下保留一定的冗余数据来提高程序效率,而且其设计的数据库可拓展性较好,当用户需要添加新功能时,原有数据库表只需做少量修改即可。
  4、在经历过上十个类似数据库管理软件的重复设计后,第三类程序员中坚持下来没有转行,而是希望从中找出“偷懒”窍门的有心人会慢慢觉悟,从而完成量变到质变的转换。他们所设计的数据库表结构有一定的远见,能够预测到未来功能升级所需要的数据,从而预先留下伏笔。这类程序员目前大多晋级成数据挖掘方面的高级软件开发人员。
  5、第三类程序员或第四类程序员,在对现有的各家数据库管理系统的原理和开发都有一定的钻研后,要么在其基础上进行二次开发,要么自行开发一套有自主版权的通用数据库管理系统。

  我个人正处于第三类的末期,所以下面所列出的一些设计技巧只适合第二类和部分第三类数据库设计人员。同时,由于我很少碰到有兴趣在这方面深钻下去的同行,所以文中难免出现错误和遗漏,在此先行声明,欢迎大家指正,不要藏私哦8)

  一、树型关系的数据表
  不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况。当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
内含38个独立的可以编辑的课程设计文档,包括 (推荐你本用户上传的资源里面搜索下载文件,没有需要请不要下载此文件) 数据库课程设计_大作业_超市管理系统设计与开发超市管理系统设计与开发_docx_ 数据库课程设计_大作业_学生选课管理系统_-2_docx 数据库课程设计_大作业_学生选课管理系统_docx_ 数据库课程设计_大作业_人事管理信息系统_作业二_docx 数据库课程设计_大作业_人事管理信息系统_docx_ 数据库课程设计_大作业_人事管理信息系统设计与开发_作品二_docx 数据库课程设计_大作业_某出版社的图书发行信息管理系统设计与开发_docx_ 数据库课程设计_大作业_人事管理信息系统设计与开发_docx_ 数据库课程设计_大作业_工厂管理系统设计与开发_作品二_docx 数据库课程设计_大作业_体育项目比赛管理系统设计与开发_docx_ 数据库课程设计_大作业_某出版社的图书发行信息管理系统设计与开发_作品二_docx 数据库课程设计_大作业_某物资供应公司的物资库存管理系统设计与开发_docx_ 数据库课程设计_大作业_销售管理系统设计与开发_docx_ 数据库课程设计_大作业_公司的物资库存管理系统设计与开发_docx_ 数据库课程设计_大作业_电脑销售信息管理系统_docx_ 数据库课程设计_大作业_医院的病房管理系统设计与开发_docx_ 数据库课程设计_大作业_学生管理系统设计与开发_作品二_docx 数据库课程设计_大作业_工厂管理系统设计与开发_docx_ 数据库课程设计_大作业_图书借阅管理系统设计与开发_docx_ 数据库课程设计_大作业_图书借阅管理系统设计与开发_-2_docx 数据库课程设计_大作业_银行储蓄业务管理系统_docx_ 数据库课程设计_大作业_银行储蓄业务管理系统_作品二_docx 数据库课程设计_大作业仓库管理系统设计与开发_docx__ 数据库课程设计_大作业_设某商业集团的商品供应管理系统设计与开发_docx_ 数据库课程设计_大作业_图书借阅管理系统_docx_ 数据库课程设计_大作业_超市管理系统_docx_ 数据库课程设计_大作业_学生管理系统设计与开发_docx_ 数据库课程设计_大作业仓库管理系统设计与开发_作品二_docx_ 数据库课程设计_大作业_证券业务管理系统设计与开发_docx_

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值