团队:浩杰说的都队
成员:胡喆媛、许殷祯、姑丽加娜提、张雯凯、胡香铭、王浩杰
一、简介
我们的项目是个人独立博客系统,个人独立博客与QQ空间、朋友圈和微博之流的本质区别在于——前者服务自己,后者娱乐他人。同时,个人博客所拥有的专业编辑能力,诸如代码块、引用、贴图等等功能,都是传统社交工具所不具备的。
在本系统中,数据库的设计采用PowerDesigner进行,并且采用面向对象的设计方法,首先进行对象实体的设计,最后将对象持久化到数据库中,所有的表和表之间的关联(ER图)都采用标准的PowerDesigner设计工具进行,这样能够将整个系统的设计和数据库设计有机的结合起来。
二、CDM设计
数据库设计的第一步应该就是CDM设计了,我认为这也是相当关键的一步。我们首先从需求文档出发,结合原型图所展现的功能和流程抽象出所需要的数据,经过讨论修改,共确定了18个数据库表,又经过老师的指导,完善了数据库表的备份字段和预留空白字段。然后,我们便开始用PowerDesigner创建实体,分析实体之间的联系,实现CDM设计:
三、PDM设计
当我们完成CDM设计之后,使用PowerDesigner可以直接生成PDM。但是生成PDM之后我们发现,有些实体中出现了原本没有的多余字段,这是因为,在CDM设计的过程中,我们创建实体时不需要设置外键,而在创建了实体和实体之间的关系之后,实体之间的外键会自动生成,如果我们在CDM中设置了本应该是外键的字段,那么在生成PDM之后就会产生多余的字段。例如在blog_imag实体中:
生成PDM之后会多出一个外键字段blo_blog_id,而它与blog_id表示的含义相同。
此外,在PDM中若要一个字段既担任主键又担任外键,需要手动设置。
生成PDM之后,还可以利用PDM导出数据字典和SQL文件,SQL文件可用来数据库建表。
四、总结
从现实项目中抽象出所需数据是一个很关键的过程,我感觉这对于有经验的专业开发人员来说应该是轻车熟路,但对于我们这些缺乏经验的小白来说就有点困难,我们一开始感觉无从下手,然后又经历了遗漏数据的情况,最后到数据库表的时候,又出现了数据冗余等问题,从中我们体会到数据库第一、二、三范式以及各种约束的必要性。通过边做边学,我们最终一步步完成了数据库的设计,加深了对数据库设计相关知识的理解。
作者:王浩杰