几年前学的编程,但几年都没做编程,现在重新学习,困难很不少,希望能在csdn学习、进步。如有高手不吝指点则万分感谢!!
在这里csdn发博客,而不用平时新浪qq博客,也是希望在这里能得到前辈、高手的指点。
用struts2+spring+hibernate。
我参考了一些bbs论坛程序的数据库设计,希望简单的弄一个出来,做一个bbs程序,目的就是为了熟悉ssh框架,熟悉各种编码。所以功能不多。回想建数据库的过程走了不少弯路,其中程序做到一半的时候竟然发现数据库有些字段多余,而有些数据表缺乏外键,有些缺乏属性。所以中途还修改了数据库结构,等到至今项目做完,更发现数据库设计得太差,希望下一个项目中能进步就好。
先建cdm概念模型,因为建好概念模型后,可以方便的转化成pdm物理模型,powerdesigner会自动为cdm中建好的表、关联建设好pdm模型中的主键、外键等。cdm模型如下:
在tools工具下,生成pdm模型,最终的pdm如下:(我中途修改了pdm,添加了一些外键,便于查询)
在pdm中,对于需要设置自增的字段,如id等,设置如下:
建好pdm后,自己检查下,则可以在database菜单下直接生成sql文件,在powerdesigner里可以直接配置好数据库(我用mysql5)并建立连接,直接马上创建数据库(不必另外到mysql里专门运行sql),创建好数据库后,为了便于将来程序的测试,我们需要加入一些测试数据,powerdesigner方便的实现了这个功能。在database菜单下,有个“生成测试数据”,点如图:
在上图中选择direct generation 可以直接把数据插入到数据库中。number of rows选项下可以设置每个表生成的数据量,如果不设置,默认好像每个是20条记录。
点击确定即自动在创建的数据库插入自己设置的数据数量。插入的数据,都是powerdesigner根据你对每个字段的属性类型设置,自动生成一些字母组合。这样数据库中内容不少了,在以后编码中可以专心编程,而不必时不时为了验证某个方法函数action还得去数据库中插入删除数据等。
自动生成的数据并插入数据库,如下图:
至此我的数据库建立完成了。
事后总结:
1、自己对数据库很多知识已经生疏了,此数据库建立非但没有考虑到范式,更没想过创建视图索引之类,归根在于知识疏漏,得买本书好好学习数据库建设。
2、没有设想程序中的sql语句,到时到编程时发现某个查询十分麻烦,要join操作,但如果预先设计字段索引外键等,其实可以很快的解决。
3、数据库的设计比编程关键的多,数据库设计合理给以后的编程带来特别大的方便,如设计不合理,则时不时修改数据库,做程序做到这样,是绝对的悲剧。
4、在后续的编程过程中发现,当发帖后,topic表中的postnum应该增加1,类型的情况很多。当然这个过程可以在程序中实现,但在网上查询,似乎应该在数据中创建触发器更高效。此点还有疑问,有待进一步学习研究。
5、本人初学,不足之处很多,希望各位高手不吝批评指教。不胜感谢!!!
明日下一篇:完成登录登出action
陆续待完成的总结:登录action以及拦截器,解决中文传值乱码的3种方法,表单数据验证,分页遇到的问题(程序莫名卡死失去响应的问题)......