3. 数据库设计的相关知识

caid

分类: DataBase、学习笔记 28 0

前言

数据库设计是⼀个“系统⼯程”,要求数据库开发⼈员:
熟悉“商业领域”的商业知识,甚⾄是该商业领域的专家。
利⽤“管理学"的知识与其他开发⼈员进⾏有效沟通。
掌握⼀些数据库设计辅助⼯具。

商业知识和沟通技能

数据库中存储的数据是“商业领域”的信息,使⽤数据库技术可以解决“商业领
域”的“商业问题”。对于数据库开发⼈员⽽⾔,商业知识和沟通技巧永远是避不开
的话题。数据库开发⼈员必须熟悉某种商业领域的商业知识,甚⾄是该商业领域的
专家,才能使⽤数据库技术解决商业问题。
设计数据库时,数据库开发⼈员经常与其他开发⼈员(包括最终⽤户)⼀起⼯作,
并且需要使⽤“管理学”的知识与其他开发⼈员进⾏有效沟通,获取所需商业信息,
从⽽解决商业问题。因此,对于数据库开发⼈员⽽⾔,沟通的技巧也不能⼩觑。
熟悉⼀种“商业领域”的商业知识需要花费⼤量的时间,很多数据库开发⼈员⽤毕⽣
精⼒研究某个特定⾏业,从⽽成为该“商业领域”的专家,继⽽可以成功地设计
该“商业领域”的数据库。同样对于同学⽽⾔,必须了解某⼀“商业领域”的商业知
识,才能将数据库技术应⽤到该“商业领域”,解决该“商业领域”的“商业问题”,进
⽽才能更有效地学习数据库的相关知识。

数据库设计辅助⼯具

数据库开发是软件开发过程中⼀个⾮常重要的环节,甚⾄是⼀个核⼼环节。软件开
发过程中,软件开发⼈员经常使⽤⼀些辅助⼯具提⾼软件开发的速度与质量,典型
的辅助⼯具包括模型、⼯具和技术。

1.模型

软件开发时经常使⽤到⼀些模型,模型是现实世界中事物特征与事物⾏为的抽象。
模型包括数学模型(例如数学公式)、描述模型(例如报表、列表、备忘录等)和
图形模型(例如E-R图、数据流程图DFD、类图等)。对事物的特征进⾏抽象的过程
称为数据建模。软件开发过程中通过数据建模,可以得到软件系统的E-R图或者类
图等数据模型。对事物的⾏为进⾏抽象的过程称为业务建模。软件开发过程中通过
业务建模,可以得到软件系统的程序流程图、数据流程图DFD、时序图、状态图等
业务模型。
⼀般⽽⾔,数据库设计更侧重于数据建模,程序设计更侧重于业务建模。然⽽在真
实的软件开发环境中,数据建模与业务建模两者相辅相成,不可或缺。E-R图是关
系数据库数据建模过程中经常使⽤的数据模型。

2.⼯具

软件开发时经常使⽤到⼀些⼯具,这些⼯具为创建模型或其他组件提供了软件⽀
持。例如在系统规划阶段[1],需求分析⼈员经常使⽤软件项⽬管理⼯具为任务分配
资源、跟踪进度以及管理预算,常⽤的软件项⽬管理⼯具是美国微软公司的
Project。在系统分析与设计阶段,需求分 析⼈员经常使⽤计算机辅助系统⼯程⼯具
(Computer Aided Software Engineering,CASE)进⾏数据建模以及业务建模,
常⽤的CASE⼯具有ERwin、PowerDesigner、Rational Rose以及Visio等。在系统实
施阶段,编程⼈员经常使⽤集成开发环境(Integrated Development
Environment, 简称IDE⼯具)进⾏软件编码、编译、调试等⼯作,常⽤的IDE⼯具
有VC++6.0、Visual Studio、Eclipse以及NetBeans等。在测试阶段,测试 ⼈员经
常使⽤测试⼯具进⾏单元测试、功能测试以及性能测试,常⽤测试⼯具有 Junit单元
测试⼯具、QuickTest Professional功能测试⼯具以及LoadRunner性能测试⼯具
等。
在关系数据库数据建模时,数据库开发⼈员经常使⽤ERwin、PowerDesigner、
Visio等CASE⼯具创建E-R图,甚⾄使⽤ERwin、PowerDesigner、Visio等⼯具直接
创建数据库(例如MySQL数据库)或者直接⽣成SQL脚本⽂件(例如MySQL的SQL
脚本⽂件)。

3.技术

软件开发时使⽤的技术是⼀组⽅法,常⽤的技术包括:⾯向对象分析和设计技术、
结构化分析和设计技术、软件测试技术和关系数据库设计技术等。其中,关系数据
库设计技术决定了关系数据库设计的质量,这也是本章着重讲解的内容。关系数据
库设计技术包含E-R图绘制以及关系数据库设计两⽅⾯的内容。

例⼦“选课系统”
业务流程如下:
游客⽤户只能浏览已经审核的课程信息,不能享受“选课系统”提供的其他服
务。游客⽤户注册成为学⽣或者教师,成功登录“选课系统”后,才能享受“选课
系统”提供的其他服务。
教师成功登录“选课系统”后,可以申报选修课程,要求选修课程⾯向全校学
⽣。
为保证教学质量,每⼀位教师只能申报⼀⻔选修课程。由于很多课程需要在教
室内完成教学,因此课程的⼈数上限受到教室座位数量的限制(共有60座位、
150座位和230座位3种教室)。教师申报选修课程时需提供课程的详细信息,
其中包括课程名、⼯号、教师姓名、⼈数上限、教师联系⽅式以及课程详细描
述等。
教师申报课程信息后,经管理员审核通过才能供学⽣选修。
学⽣成功登录“选课系统”后,才可以进⾏选课。学⽣选课时,每位学⽣可以浏
览所有已审核的课程信息,并进⾏选修。为保证学习效果,限制每位学⽣最多
选修两⻔课程。学⽣选课时需提供学号、姓名、班级名、所属院系名和联系⽅
式等信息,由系统⾃动记录选择课程的时间。
选课结束前,学⽣可以退课、调课。
选课结束后,当某⼀⻔课程的选修⼈数少于30⼈时,为避免教师、教室资源浪
费,管理员有权删除该课程信息。某⼀⻔的课程信息删除后,选择该课程的学
⽣需要重新选修其他课程。
管理员负责审核课程,添加班级信息(且班级名不能重复),以及维护⽤户信
息。
教师可以查看本⼈申报课程的学⽣信息列表,管理员可以查看所有申报课程的
学⽣信息列表。

定义问题域

定义问题域是数据库设计过程中重要的活动,它的⽬标是准确定义要解决的商业问
题。本例⼦中定义“选课系统”存在的诸多“商业”问题,其中包括以下内容。

如何存储以及维护课程、学⽣、教师以及班级的详细信息?
不同教师申报的课程名能否相同?如果允许课程名相同,如何区分课程?
如何控制每位教师只能申报⼀⻔选修课程?
如何控制每⻔课程的⼈数上限在(60、150、230)中取值?
如何控制每⼀⻔课程的选课学⽣总⼈数不超过该课程的⼈数上限?
如何实现学⽣选课功能、退选功能以及调课功能?
如何控制每位学⽣最多可以选修两⻔课程,且两⻔课程不能相同?
系统如何⾃动记录学⽣的选课时间?
如何统计每⼀⻔课程还可以供多少学⽣选修?
如何统计⼈数已经报满的课程?
如何统计某⼀个教师已经申报了哪些课程?
如何统计某⼀个学⽣已经选修了多少⻔课程,是哪些课程?
如何统计选修⼈数少于30⼈的所有课程信息?
如何统计选修每⼀⻔课程的所有学⽣信息?
课程信息删除后,如何保证选择该课程的学⽣可以选修其他课程?
如何通过搜索关键字检索⾃⼰感兴趣的课程信息?

  • 0人 Love
  • 0人 Haha
  • 0人 Wow
  • 0人 Sad
  • 0人 Angry
Mysql、数据库

作者简介: caid

共 0 条评论关于 “3. 数据库设计的相关知识”

Loading...