这样设计系统是好还是坏

有这么一个系统,在设计时,每个表为一个类,系统有100多个表,就是100多个类,每个类为一个单元,每个字段就是类的属性,所有的SQL都写在类中,再把返回值给Form中的控件中。(涉及复杂的SQL,就麻烦大啦),一个城市的小表,我就写了两天,要是用dbgrid+adoquery,一个小时就搞定,请问大家伙,这样设计系统是不是画蛇添足????
[170 byte] By [Anmmy-老子] at [2008-4-24]
# 1
我就是这样设计的,所有的表都是一个类,不过,我的类是自动生成的,根据表结构自动生成类及相应的SQL,你可先写一个生成类的程序(不然100个类是要写晕了)
我的生成类的程序是用awk写的,我的开发过程为,先定义一表结构(文本形式),然后根据表结构生成相应的建表SQL,并生成相应的类,每个类基本结构大至如下:
//工作简历库
TGZJLK=object
GZJLBM:integer;
GRBM:integer;
DWMC:string[60];
QSRQ:string[10];
ZZRQ:string[10];
GZBM:string[20];
JCLB:string[4];
UpdateStat:boolean;
Function InsertIt:Boolean;
Function GetDataFromDataSet(const asql:TDataSet;const tran:boolean=true):Boolean;
Function SetDataToDataSet(const asql:TDataSet):Boolean;
Function saveIt(const st:TDataSet):Boolean;
Function UpdateIt(st:TDataSet):boolean;
end;
而函数的实现为:
Function TGZJLK.InsertIt:Boolean;
Begin
Result:=False;
try
CurDatabase.StartTransAction();
With CurDatabase.IBSql do
begin
Sql.Text:='Insert into GZJLK ( GZJLBM,GRBM,DWMC,QSRQ,ZZRQ,GZBM,JCLB) '
+Format('values ( ''%d'',%d,''%s'',''%s'',''%s'',''%s'',''%s'')'
,[GZJLBM,GRBM,DWMC,QSRQ,ZZRQ,GZBM,JCLB]);
ExecSql();
CurDatabase.Commit();
end;
ReSult:=True;
except
on E: Exception do
begin
CurDatabase.RollBack();
TUtils.ShowMess(e.Message);
end;
end;
end;
//其它函数略
上面的代码都是由以下文本生成,不需自己写任何代码
---------------------------------------------------
工作简历库
--------------------------------------------------
工作简历编码(内部码) I R K A
个人编码 I R
单位名称 C 60
起始日期 C 10
终止日期 C 10
工作部门 C 20
奖惩类别 C 4
---------------------------------------------------------
我们甚至可以由以上结构生成一个简单的输入界面
keiy at 2007-10-20 > top of Msdn China Tech,Delphi,语言基础/算法/系统设计...
# 2
我不是这样做的
yuehaiyang at 2007-10-20 > top of Msdn China Tech,Delphi,语言基础/算法/系统设计...
# 3
建议去了解一下Hibernate
它的做法就是为每一个表生成一个类

如果表比较多的话,应该要有一种根据表结构自动生成类的机制,
否则写起来很麻烦

sdzeng-大头鸟 at 2007-10-20 > top of Msdn China Tech,Delphi,语言基础/算法/系统设计...
# 4
路过,看看。
pilicat-Delphi迷 at 2007-10-20 > top of Msdn China Tech,Delphi,语言基础/算法/系统设计...
# 5
将相同和有关系的数据抽象起来,拾配不同的模式进行组合...这样可以减少代码量,而且结构清析...当然不能太乱......
# 6
维护会比较方便。前人栽树,后人乘凉
# 7
哪位XD有类似的demo不妨贴一个完整的出来,借鉴一下。

这个是不是所谓的“平台”开发
mofaser-鬼画符 at 2007-10-20 > top of Msdn China Tech,Delphi,语言基础/算法/系统设计...
# 8
我一般也是这样设计的

:)
# 9
貌似Hibernate,呵呵。
# 10
用这方法维护方便,我们的也是这样设计的。。