前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3. 数据库设计的相关知识

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

作者头像
卡伊德
发布2022-09-13 14:42:52
3800
发布2022-09-13 14:42:52
举报
文章被收录于专栏:caidblog

前言

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

商业知识和沟通技能

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

数据库设计辅助⼯具

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

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⼈的所有课程信息? 如何统计选修每⼀⻔课程的所有学⽣信息? 课程信息删除后,如何保证选择该课程的学⽣可以选修其他课程? 如何通过搜索关键字检索⾃⼰感兴趣的课程信息?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 商业知识和沟通技能
  • 数据库设计辅助⼯具
  • 定义问题域
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档