中国开发网: 论坛: 程序员情感CBD: 贴子 92920
有狐
技术贴之一:系统设计之迷茫(理论探索少,技术研究浅,洞察力缺乏,请多多指教)
一个大系统(其实我也不知道到底算不算大)

涉及以下这些东西:

用户,人员(雇员/客户/其他外部人员),组织(内部组织/外部组织等),地域
产品,资料,新闻/公告,论坛,事件等

这些东西之间都会有关系,比如:

各类人员/组织都会成为产品,资料,新闻/公告之类的参与者(提交者,源作者,管理者等等)
资料可以是产品的资料,事件的资料等等

按照我以前粗浅的想法,在涉及系统的数据库时,都是各自设计对应表
比如有人员表,组织表,产品表,资料表,新闻/公告表,论坛表,事件表等等
以及各类事物之间的关系表,包括人员-地域(地址),组织-地域(地址),产品-资料等等

以前我理论方面的素养比较少,基本上没有涉及过比较大型系统的设计,
也没有怎么用过ERWin,PD之类的设计工具,以上的设计方法对我来讲是很自然的

后来拿到了NCR的设计,发现不是这样的
它是分主题域的,比如:
参与者主题域:包括人员,组织,家庭,企业等
产品主题域:包括产品本身的一些东西
内容主题域:包括资料,新闻/公告,事件等东西
地理地址主题域:包括地理区域,各类地址(街道地址,邮政地址,电子地址等等)

给我的感觉就像按照面向对象的方式设计的,在上一个设计的基础上提炼出超实体表
比如有参与者表,记录ID,名称,描述
然后分个体和组织两表
个体又派生出雇员、外部人员,
组织又派生出内部组织,外部组织(可能又会根据需要派生企业,机构,家庭等)

内容一个表
派生出资料表,新闻/公告表,事件表等

任何“参与者”类型的东西在参与者表里都会有条记录,每类参与者特有的属性记录在
对应的特有表中
任何“内容”类型的东西在内容表中都有对应记录,每类内容特有的属性记录在对应的特有表中

参与者表就像基类,人员表是子类,雇员表又是人员表的子类,外部人员表也是人员表的子类
内容也是类似

另外还有各种参与者之间的关系,比如人员与组织的关系,只需要一个参与者与参与者关系表就行了
内容之间的关系也是如此,就一个内容与内容关系表(比如资料之间的引用,参考关系,事件与资料的关系等等)

这种设计看起来也是很合乎逻辑的,在一些关系的处理上也可以充分利用数据库的外键机制
所有与“参与者”发生的关系只需要和“参与者”表发生关系就行了

可我总觉得象参与者表,内容表等表中的记录会很多,
当系统运行起来以后,参与者会很多,因为除了要记录内部用户外,(其实内部用户已经不少了)
还需要记录N多客户以及客户组织
内容就更多了,资料绝对会到千万级别,再加上新闻/公告,事件等,
那么多内容记录,在内容表中都得有一条对应的记录

而在参与者关系表和内容关系表中的记录就更多了,都不止是成倍的关系了
这性能肯定是个大问题了吧?(不过倒是可以按照一定规则(比如每月)拆分数据量)

我主要是想和大伙研究研究类似系统的设计方法
我感觉我目前的项目似乎综合了ERP,CRM,MIS等概念的一些东西
但我又从来没有仔细去研究过ERP,CRM,MIS等东西的重点,特点,区别之处

我虽然工作好几年了,可还没做过真正那么大的系统(大主要是指数据量,虽然模块也不少)
经验有限,心中惴惴不安,特地请教各位前辈高人,请多多指教。
有兴趣的兄弟也请一起讨论讨论。

希望有经验的大虾能多指教指教,有兴趣的兄弟一起讨论讨论,大家一起进步进步
做了大半年了,如果我的一些微薄经验也能帮到一些兄弟,我也很乐意拿出来和大家分享

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录