【摘要】:要解决上面的实际问题,在实际项目开发前必须要进行数据库设计。表1.1学员信息表表1.2课程表表1.3学员成绩表从表1.1、表1.2、表1.3中可以看出,每个学员的姓名和每门课程的名称在整个数据库中只有一个副本,从而消除了数据冗余和数据的不一致。如图1.1所示为学员信息数据库的结构。图1.1学员信息数据库结构看了上面的例子也许会洋洋得意起来——原来数据库设计这么简单。
在大型的实际项目中,要存储的数据的种类非常多,数据量也非常大。如果项目超过了
100张数据表,面对的问题有:
➢ 怎么保证有用数据不被遗漏?
➢ 怎么存储更节约存储空间?
➢ 用多少张表来存储数据比较合适(应该包含哪些表)?
➢ 每张表存储什么数据比较合适(表应该包含哪些字段)?
➢ 众多表之间的关系是怎样的?
➢ 怎么保证数据库的效率(增、删、改、查的速度)?
➢ 怎么防止数据的不一致性?
➢ 怎么保证数据的准确性?
➢ 如果要进一步扩展项目,怎样方便扩展(扩展时对现有的数据影响很小或不影响现有的数据)?
➢ 数据库怎样设计,可以让程序更容易实现?
……
要解决上面的实际问题,在实际项目开发前必须要进行数据库设计。那么什么是数据库设计呢?(www.chuimin.cn)
数据库设计(Database Design)就是规划和结构化数据库中的数据对象(如数据表)以及这些数据对象之间关系的过程。通俗地讲,数据库设计就是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。
下面通过一个简单的示例来说明数据库设计的好处。把学员信息数据库经过简单设计后得到3张表,见表1.1、表1.2、表1.3。
表1.1 学员信息表(StuInfo)
表1.2 课程表(Course)
表1.3 学员成绩表(StuScore)
从表1.1、表1.2、表1.3中可以看出,每个学员的姓名和每门课程的名称在整个数据库中只有一个副本,从而消除了数据冗余和数据的不一致。这样,再把“周星星”改成“周醒醒”时,只需修改学员信息表(StuInfo)中一条记录,从而提高了修改的效率。为了让软件开发相关人员快速了解整个数据库的结构,使用直观的图形来描述每张表及表与表之间的关系。如图1.1所示为学员信息数据库的结构。
图1.1 学员信息数据库结构
看了上面的例子也许会洋洋得意起来——原来数据库设计这么简单。其实不然,上面的例子是一个非常简单且是大家都很熟悉的业务,设计这个数据库时凭经验就可以轻松完成。现在去做一个“电信增值业务平台”项目,还能轻而易举地把这个项目的数据库设计出来吗?答案恐怕是否定的。原因主要有二:其一,这个项目相关的业务并不熟悉;其二,这个项目本身比较复杂。要想把这个项目的数据库设计完成,必须借用前人的经验和一些现存的数据库设计规范,再把这些经验和规范在项目中不断实践。
相关推荐