发现数据对象--数据库开发的关键

原创 2004年03月29日 10:25:00
    不管你是开发简单的数据库系统,还是复杂的系统甚至是作数据仓库,选用Sybase或oracle,乃至简单的用Access或Foxpro,只要是关系型数据库都难免为了设计那一张张表颇费心思。起初写代码的时候并不用考虑这些事情,因为前期的设计工作已经有人做了,看起来也就那么回事,不就是第二范式或第三范式吗。后来才发现,整理出那几张表确实不容易,弄的不好的话数据结构一变动,所有的代码都得变,这恐怕是我们做过数据库系统的人都经历过的。经过几次经验教训,摸索出自己的一套发现数据的方法,拿出来和大家切磋切磋。(以图书馆为例,烂的不能再烂的例子了)。
    第一步,找物。数据库管理的就是公司或部门运作需要的数据,和业务相关,必然也和物相关,唯物论嘛。你说人事系统中没有物,其实人事系统中的档案就是数据的原始形态,没有计算机前还不是档案在起作用,是管理的对象。在图书管理系统中的物就是图书了。相应的也就有图书号、作者、出版社、出版年月、库存量,库存位置等数据项了。这些数据往往是数据一致性和完整性考虑的重点所在。
    第二步,找人。以人为本嘛,围绕相应的物必然存在和它们有关系的人。在图书管理系统中,自然就有图书管理员和读者了。数据库管理系统本身是为了方便人管理数据的,可它往往也喜欢把管理数据的人的情况记录下来,防止出现职责不明,也是数据管理中的一条主线。习惯把图书管理员称为员工,读者称为客户,相应的有ID号,姓名,性别,照片,住址,身份等等。
    第三步,找单据。在具体的业务中往往存在大量的单据,如入库单,借书单,还书单等等需要和客户或相应业务部门作信用记录或记账用的单据,往往和人和物都有关系,这时你就发现前面已经找好的人和物在这里就用上了。如果分析作的好的话,这里需要的数据项前面基本上都有了,只要引用就可以了。因为这些单据是经常使用的,所以主要索引的建立往往也在此就可以确定了。
    第四步,找汇报和总结。统计和报表是每个数据库系统不可缺少的功能,它的来源往往是实际业务工作的需要,有的有现成的报表参考还好,没有的话,你就要想到,不能便于使用人员向上级部门作业绩汇报和对下级进行总结的系统,是得不到使用人员尤其的管理人员的认可的,你就等着返工吧。这时候,充分的沟通就会进一步完善前三步设计的数据项。在图书管理系统中,我们不仅设计了常用的馆藏统计、借阅统计、更新统计等和日常业务相关的报表,还作了各类图书利用率统计、破损(遗失)统计、借阅量统计等等便于决策的报表,这些设计是从管理人员的例行报告中偶尔看到的,极大满足了系统的实际使用效果,也是很多书上没有提到过的。
    至此,应该是发现了大多数的数据项了。另外的数据项就是常规的业务流程分析了,从物到物或从物到帐,找出新的业务关系数据,这些数据也将是快速模型法变化较多的地方。没办法,管理方法的更新必然带来业务流程的微微变化,但基本上述四项数据是没有多大变化的。
    然后就可以考虑用第Z范式来整理得到的数据对象,确定保障数据完整性、一致性和并发性策略和机制。根据业务流程和具体开发使用的数据库系统来设计一套的权限控制策略,制作精美的人机交互界面。

JAVAWEB开发之多表设计、外键约束、内外连接以及子查询

多表设计—外键约束 作用:保证数据的完整性 定义外键约束: (1)可以直接在create语句中定义外键      foreign key  当前表名(字段名) references 目标表名(...
  • u013087513
  • u013087513
  • 2017年02月13日 17:53
  • 1467

微信公众平台开发之MySql数据库+关键词回复-php语言(三)

前面两篇详细讲解了微信收发消息的“万能代码”,今天开点小荤,用MySql数据表实现关键字回复。 老规矩,声明背景: 1.我使用的是BAE3.0扩展服务中的MySql数据库,连接数据库代码在下面。 参考...
  • afanxingzhou
  • afanxingzhou
  • 2015年02月23日 17:51
  • 5146

C# 实体模型EF关联数据库

当我们用在C#程序里面使用代码去关联数据库的时候,有几个关键点做记录 首先 我们要有对应的数据库 实体对象 也就是类对象 //实体对象类 public class product {...
  • shixin0510
  • shixin0510
  • 2016年05月31日 10:20
  • 1346

VISUAL C++ 数据库开发-高级篇

在Visual C++中用ADO进行数据库编程 1. 生成应用程序框架并初始化OLE/COM库环境    创建一个标准的MFC AppWizard(exe)应用程序,然后在使用ADO数据库的Ini...
  • u010258235
  • u010258235
  • 2013年10月22日 09:04
  • 635

VISUAL C++ 数据库开发-初级篇

几种VC++数据库开发技术的比较 从功能简单的数据库(如Jet Engine)到复杂的大型数据库系统(如oracle),VC++6.0都提供了一些编程接口。本文主要介绍以下五种:   1.ODBC...
  • u010258235
  • u010258235
  • 2013年10月22日 09:04
  • 1000

Delphi数据库开发关键技术与实例应用

  • 2009年03月06日 09:01
  • 4.36MB
  • 下载

PowerBuilder数据库开发关键技术与应用实例 源码

  • 2012年03月13日 10:26
  • 1.49MB
  • 下载

Visual Basic 数据库开发关键技术与实例应用.rar

  • 2012年11月10日 13:15
  • 13.11MB
  • 下载

数据集和数据库的同步-DataAdapter的使用--vs2003

  • 2009年01月14日 11:13
  • 9.93MB
  • 下载

面向对象的数据库开发--再论ORM

实际上这是我第一次就ORM相关的话题发表自己的看法,但是由于此类文章早已有之,所以算上我这次应该是再论了。之所以写这篇博文,其原因是我自己实现了一个ORM框架,并且融入了很多自己的想法。所以本文想从面...
  • BinaryTreeEx
  • BinaryTreeEx
  • 2012年08月15日 07:01
  • 4204
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:发现数据对象--数据库开发的关键
举报原因:
原因补充:

(最多只允许输入30个字)