`
cjc
  • 浏览: 656796 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CZTZ-JavaEE Web开发基础平台系列培训(一)-数据库设计规范

阅读更多

CZTZ-JavaEE Web开发基础平台系列培训()

数据库设计规范

题外话:一个优秀的程序员和架构师,不应该只是一个学习机器,同样要有创造性思维和开阔的技术视野,独到的技术视角和哲学性思维。

一、前言

CZTZ-JavaEE Web开发平台包括基础开发平台、产品线开发平台、行业基础平台三部分组成。目前正在进行基础平台的开发工作,并在筹建产品线开发平台项目组。

CZTZ-JavaEE Web开发平台的运作方式是基础平台由核心平台项目组研发,可以在此平台上集成第三方应用软件供应商的产品,在营销环节可作为统一的品牌进行市场推广,利润分配本着互惠互利,共同发展的原则,共同拓展庞大的中国应用软件市场。

CZTZ-JavaEE基础平台主要实现后台增删改查类应用的快速开发,并整合了Acegi安全框架、CAS单点登录和其他单点登录机制,权限管理功能强大,另外还包括信息发布及页面静态化、站内全文检索(包括信息检索、文件检索,可定制的数据库全文检索功能)

CZTZ-JavaEE的产品线开发平台实际是企业级开发平台,包括搜索引擎、工作流、OA,ERP,电子商务、Portal、博客、动态报表、知识管理、BI分析工具等内容。本项目组在全国各地诚征有自主知识产权的软件供应商或优秀的原创应用软件开发者共同研发,共同推广。有意者请发Email及产品简介、Demo或个人技术专长succ100@163.com王先生收。

历史上曾经有句名言:让全世界无产者联合起来!在国内,有很多正在创业的中小软件公司、程序员及正在苦寻职业道路的大学毕业生,在这个群体里,每个个体的资源是极为有限的(这里的资源包括技术资源、产品资源、市场资源),但如果我们能将这些技术资源、产品资源和市场资源有机整合起来,成功一定也会向我们招手。在此我也呼吁:让全国的IT创业者们联合起来!

在这里我简单地谈一下我的个人感受。我曾经抱有这样一个想法:在大公司里勤奋工作,过几年总可以上升到一个比较高级的职位,拿更高的薪水,但现实打破了我的梦想,因为大公司的高层管理人员都是直接从外面聘任的,他们的教育背景都非常好,我们长年作为一线的开发人员和开发经理,虽然在产品研发上积累了相当多的经验,但我们的技术实力,在一个有着类似国企的管理体制下是很难得到重视的,虽然我们的技术实力每年度都在飞速提高,但公司不会经常为你的技术能力进行客观地评估,并根据你的技术能力和工作成绩调整你的个人薪资。我曾经实施了一个项目,在项目研发的一年期间,基本每周都是工作六天(没有加班费),在客户现场开发,晚上至少是九点半以后回去休息,以这样的工作态度和热情,居然项目组里没有一人成为季度的优秀员工。我曾经调侃地对大家说:这说明公司评选的是优秀的员工,而不是更优秀的员工,因为我们是更优秀的,所以没有被评上。实际上,我们根本没有参与投票评比,优秀员工名单是上面早就拟订好的。媒体上曾经评价IT人员跳槽率高,实际上这绝对不是我们的错,因为,在大多数公司,没有年度调整薪资的机制,只有跳槽才能加薪。也许这是因为企业领导者骨子里认为反正人才多的是(表面上仍然要说尊重人才,留住人才),少了谁公司都能运转。在事实上,他们更在乎的是营销人员的流失,而不是技术人员的流失,所以技术人员在与公司谈加薪时并没有多少筹码,尤其是做项目的公司,在项目管理中,代码,文档,设计资料都被很规范地管理起来,所以一个人的去留,不会对项目造成冲击,至少我所管理的项目是这样的。我作为研发经理,虽然项目的整体架构都是我来设计的,但我将设计思想灌输到了每个开发人员的脑子里,所以我离开项目组时,并没有太多要交接的内容,这是作为开发经理的职责。

作为从事IT技术工作的程序员、设计师和架构师,我们崇尚技术,追求财富。因为崇尚技术,忽略了人际关系的培养,所以在与上司、同事、下属相处不快时,便心生去意,跳槽的想法就在心里油然而生,因为我们不善于处理人际关系、漠视政治(不是说国家大事),漠视人事斗争,因而我们在一定的程度上说,我们不具有斗争性,我们是弱势群体。在这个时代,崇尚的个性的张扬,而不是桃李不言,酒香不怕巷子深,所以我们要呐喊-在我们自己的技术领域,我们要引导技术的潮流,在市场营销领域,我们再也不能说:这不是我们的长项,我们必须不能再一味地闷头研究技术,至少我们要抽出30%的精力来拓展销售渠道,相对来说,技术人员做面对客户的直销虽然很难,但做渠道销售一点都不难,既然我们已经预期了我们有很好的应用平台,我们就有了热情,有了向周围朋友宣传平台的兴致,我们可以把我们周围开软件公司的朋友,做销售的朋友列一个名单,然后了解平台的应用价值和运作模式后,然后开始向他们宣传吧,将他们拉入我们的销售队伍中!我想你的朋友一定会支持你的。我甚至都想到了向我推荐做安利的朋友,把他们也拉进来,毕竟,我们所营销的是高技术的产品和服务,不会有人用异样的质疑的眼光来看你,一句话,拓展一切可能拓展的销售渠道!

我们的群体是崇尚技术革命的群体,同样也是注重市场、注重客户需求的群体。在基础平台从07年度11月份开始设计时,应用的都是Java开源社区最新release版本的框架,包括Spring,Hibernate,Struts,Acegi,Webwork,FckEdit,Jfreechart,Lucene,Cas,Jforum, dhtmlxTree…,

平台研发组的技术负责人在IT行业的工作经验有的多达十年以上。即使大家对CZTZ的商业运作不感兴趣,也欢迎大家就中国的Java应用开发平台应该具备什么特色的角度,为CZTZ平台提出一些看法吧。国外在开源领域开发了那么多优秀的基础框架,国内在这方面很难超越他们,但是中国有那么多的大中小型企业,我们至少在Java应用开发平台方面可以超越他们(应用平台,就是架设在基础框架下的快速开发和快速客户化的企业应用套件。)

由于CZTZ-JavaEE平台的开发成员是来自全国各地的,培训和交流多有不便,所以本人在CSDN博客上不定期地编写文档为项目组成员进行技术培训,欢迎大家经常到http://blog.csdn.net/baozhengw上面浏览本人的最新文章,并发表评论。

二、CZTZ-JavaEE Web应用平台数据库设计规范

2.1适用范围:本规范适用于新开发模块,对于第三方集成应用不受此限制。

2.2 各子系统使用的表前缀:

eas:基础平台,例eas_meta_table

cms:内容管理,例cms_info

pur:采购管理

inv:库存管理

sal:销售管理

mrp:生产管理和MRP

hr:人力资源

wf:工作流平台

oa:办公自动化

km:知识管理

blog:博客

sso:单点登录

其他未定义的模块在设计前确定。

2.3:表命名规范

数据库表的命名为子系统名_为前缀,表名中下划线不能超过两个。表名的长度不应超过20位字符串长度。

2.4字段定义规范

字段名中出现下划线不能超过2个,字段名长度不能超过30字符串长度,字段中单词尽量用缩写,例如:

dt表示日期时间,flg表示flag

表设计的原则为除多对多关系表外,一般采用唯一主键的原则进行设计,由于我们采用Hibernate进行开发,所以单一主键在平台开发中非常便利,单一主键的序列号一般由随机数生成器生成(通过StringUtil.getUUID()生成32位唯一ID)

唯一主键一般命名为obj_id

以下是一些通用的表字段:

sort_no int NULL,排序号,用于指定记录排序顺序

row_id varchar(40) 行唯一ID,这个是非空的字段,记录创建赋值一次以后不再变更。

create_dt varchar(23) 记录创建时间,字符串型日期时分秒毫秒

create_uid varchar(40) 创建者登录帐号

update_dt varchar(23) 最后修改时间

update_uid varchar(40) 最后修改者登录帐号

对于树型关系表,如组织结构树的设计,一般采用001001001这种级次码维护树型关系,一般这样设计树型结构的表:

obj_id varchar(40)

tree_code varchar(30) 树节点编码,001002,当节点关系改变时,tree_code会发生变化,但obj_id是不变的。

is_leaf varchar(16),表示是否为叶子节点,可为空,取值为true/false

2.5 存储过程的使用原则

在产品基础平台上一定不要使用存储过程、触发器进行开发,只有当产品销售给客户后才可以根据客户选择的数据库,有针对性地从性能角度考虑,将部分实现类替换为存储过程实现。

2.6 程序中使用SQL的注意事项

由于不可避免地要在某些地方使用SQL语句,在使用SQL语句时需要遵循的原则,只允许使用标准SQL,象字符串列相加,有的RDBMS采用+进行字符串连接,有的采用||,左连接和右连接在不同的RDBMSleft outer join, (+)=,*=,等表达形式,还有数据库函数等,这些SQL一定不能硬编码到程序中,如果一定要引用特定数据库相关的SQL语句,请在配置文件中定义SQL字符串,然后在程序中通过读取配置文件的SQL字符串来形成SQL语句,这样一旦数据库替换为其他RDBMS,可以通过在配置文件中重新配置SQL来实现,这样可以避免重新编译程序。

在数据库设计中,日期字段一般用字符串日期来表示,不要将数据库字段设置为日期型,以减少数据库移植带来的开发成本。一般只设计字符串型和数字型字段,特殊情况下有大文本字段。

2.7数据库表外键命名规则

由于每个表在设计时都给定了编号,如00100020,表编号大的表,其外键肯定指向表编号小的表,外键命名可按FK_0020_0010,0010表的主键为0020表的外键。

2.8 由表反向生成Hibernate映射文件

由表反向生成Hibernate映射文件可网上参考MyEclipse相关的开发,有多种工具可以实现工数据库反向生成Hibernate映射文件,在平台开发中,反向生成映射文件由专人负责完成。

三、规范的说明

本规范在以后的开发中会逐渐完善。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics