SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。 在现在的程序开发中MySQL是必定会用到的,MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。这篇文章我们就来说说设计数据库的一般步骤及例子。一、数据库设计的一般流程 1.概述 包括课程设计选题、项目背景、课程设计报告编写目的、课程设计报告的组织等内容。 2.课程设计任务的需求分析 2.1设计任务 2.2设计要求 2.3需求描述的规范文档 3.概念结构设计 3.1概念结构设计工具(E-R模型) 3.2XXX子系统(局部) 3.2.1子系统描述 3.2.2分E-R图 3.2.3说明 3.3YYY子系统 3.3.1子系统描述 3.3.2 分E-R图 3.3.3 说明 …… 3.X 总体E-R图 3.X.1 E-R图的集成 3.X.2 总体E-R图 4.逻辑结构设计 4.1关系数据模式 4.2视图的设计 4.3优化 5.数据库物理设计与实施 5.1数据库应用的硬件、软件环境介绍 5.2物理结构设计 5.3 索引的设计 5.4建立数据库 5.5 加载数据库测试数据 6.数据操作要求及实现 6.1数据查询操作 6.2数据更新操作 6.3数据维护操作 6.4其他 7.数据库应用系统的实现 8.设计心得体会 9.参考文献 二、例子:学生选课管理系统 在高校教学管理系统中,学生选课管理是很重要的功能模块。 需求分析: 该系统应该能管理学校的教师信息、学生信息、专业信息、学校开设的所有课程信息、学生选修课程的信息等。选课系统主要满足三类用户的要求,这三类用户分别是教务处的系统管理员、教师和学生。他们所具有的操作权限以及操作内容是不同的。具体的需求分析如下: 系统管理员 维护学生的个人基本信息,实现对学生个人信息的增、删、改等。 学生信息包括… 维护教师的个人基本信息,实现对教师个人信息的增、删、改等。 教师信息包括… 维护课程的个人基本信息,实现对课程个人信息的增、删、改等。 课程信息包括… 学生用户 查询和修改个人信息。 进行选课操作 学生可以查看自己所选课程信息及以前所选课程的成绩信息。 教师用户 查询和修改个人信息 课程结束后,登记成绩 教师可查看自己的教学安排。 数据库概念结构设计: 概念结构设计的常用工具是ER图。分下面几步完成。 数据抽象(抽象出实体)。画出各实体属性图。 设计分ER图。找出实体及其联系,并画出分ER图。 合并分ER图,生成初步ER图。 全局ER图。将各个实体的属性加入初步ER图,消除各局部可能存在的冲突(包括属性冲突、命名冲突和结构冲突),形成全局ER图。 数据库逻辑结构设计: 首先,将概念模型ER图中实体和联系转换为数据模型,在RDBMS中,就是转换为关系模式,并确定关系模式的属性和主码。 ER图向关系数据模型转换的基本规则如下: 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。 若实体间的联系是1:1的,则联系不单独转换为关系模式,需在两个实体对应的关系模式中的任意一个中加入另一个关系模式的键和联系的属性。 若实体间的联系是1:n的,则联系不单独转换为关系模式,需在n端实体对应的关系模式中加入1端实体对应的关系模式的键和联系的属性。 若实体间的联系是m:n的,则将联系也转换成关系模式,其属性为两端实体类型的码加上和联系的属性,而联系的键为两端实体码的组合。 其次,对具有相同主码的关系模式进行必要的合并。 关系优化 以规范化理论为指导,对关系数据模型进行优化。规范化到第三范式。 数据库物理设计与实施: 主要包括以下工作: 创建数据库 创建基本表,设置约束条件,管理基本表。 创建和管理索引。(DBMS会为主键自动建立索引。建立索引来提高查询效率。) 创建和管理视图。 向数据库中输入数据。 用SQL语句 实现对数据查询、修改、删除等操作。(可以先思考需要怎么操纵数据库,后面再实现) 编写存储过程、触发器等,并调试通过。(比如创建一个触发器当学生表中某学号的学生被删除时,自动将选课表中的该选课记录删除) 数据库运行维护: 主要包括以下内容 数据库的备份与恢复 数据库的安全性与完整性控制 数据库的性能监督、分析和改进 访问数据库,可以通过以下语句操纵数据。 对学生表的性别、年龄字段添加约束。 添加一个属性列“入学时间”。 修改“专业”的数据类型。 增加课程名必须取唯一值的约束。 在选课表的列“学号”、“课程号”上建立索引。 在选课表的“工号”、“课程号”上建立索引。 假设学生选课系统中有4个院系,为方便各个院系的教学管理人员查看本院系学生信息,每个院系分别建立一个学生视图。 建立一个反映学生选课情况的视图。 学生通过学号或姓名查询自己的选课信息。 学生通过学号或姓名查询自己的基本信息。 列出某个教师所授某门课程的成绩单,并按成绩升或降序显示。 列出某个教师所教授的所有课程信息。 查询某个学生已经获得的学分信息。 统计某个教师某门课的平均分、最高分、最低分。 添加一门新的课程。 修改某门课的学分。 创建删除触发器,当学生表中的某“学号”的学生被删除时,自动将选课表中的该学生的选课记录删除,即为学生表建立删除触发器,实现学生表和选课表的级联删除。 创建删除触发器,当课程表中的某“课程编号”的课程被删除时,自动将选课表中的选修该课程的记录都删除,即为课程表建立删除触发器,实现学生表和选课表的级联删除。 创建插入触发器,当往选课表中插入记录时,查询学生表中是否有该学号的学生,课程表中是否有该课程编号的课程,如果都有则可以插入,否则拒绝插入。 备份“学生选课系统”数据库到本地磁盘E盘下的BACKUPDB文件夹下面。 sp_addumpdevice 'disk','学生选课系统_bak','E:\BACKUPDB\学生选课系统_bak' BACKUP DATABASE 学生选课系统TO DISK='学生选课系统_bak' 图书借阅管理系统 需求分析: 系统应实现以下功能:图书管理员可以维护图书信息,包括增加新书、修改图书信息、办理图书借阅登记、归还登记、过期图书处理、丢失图书处理以及读者借阅证件信息的维护等。而读者可以实现借书、还书、查询图书信息、借书信息等。具体要求如下: 图书信息管理:录入各图书信息、维护图书信息等。 读者信息管理:维护读者信息并根据实际情况需要修改、更新、删除读者 借阅管理:包括借书、还书、过期图书归还处理等。 图书借阅管理系统主要有2种用户。 管理员:维护图书基本数据,包括图书种类、更新图书信息,进行读者的图书借阅和归还处理等。 读者用户:可以查询图书信息、借阅图书。 语义:图书馆的图书情况和管理规定,每种类型图书有很多不同的图书,同样的书可以习多本;每本图书可以被多次借阅,每位读者可以借阅多本图书。每本图书的借阅期限是一个月。 数据库概念结构设计: 分3步完成:1)抽象出实体2)抽象出联系实际)确定实体的属性和键 图书类型,包括:图书分类号、图书分类名称、描述信息。 图书,包括:图书编号、图书名称、作者、出版社、价格。 读者,包括:证件号、姓名、性别、所在系、班级、证件状态(包括有效和失效)、联系方式等。 读者与图书之间是m:n,图书类型与图书之间是1:n,读者与图书类型之间无联系。 数据库逻辑结构设计: 将E-R图转换成关系模型。 对关系模型进行优化 规范化到第三范式 数据库物理设计与实施: 主要包括以下工作: 创建数据库 创建基本表,设置约束条件,管理基本表。 创建和管理索引。(DBMS会为主键自动建立索引。建立索引来提高查询效率。) 创建和管理视图。 向数据库中输入数据。 用SQL语句 实现对数据查询、修改、删除等操作。(可以先思考需要怎么操纵数据库,后面再实现) 编写存储过程、触发器等,并调试通过。 操纵数据库中的数据 为了方便管理员分类管理,现在需要为多种图书类类型的图书建立视图。 建立读者借阅情况表。 为借阅表中的证件号和借阅日期建立组合次索引。 为图书表中的图书分类号、书名、出版社字段分别建立索引。 为借阅表建立一个插入触发器,以保证向借阅表插入的“证件号”在读者表中存在,如果不存在,就不会向借阅表中插入借阅信息记录。 在借阅表建立一个更新触发器,监视借阅表的“借阅日期”列,使其不能手工修改。 在读者表建立删除触发器,实现读者表和借阅表的级联删除。 运动会管理系统 需求分析: 引入计算机管理运动会,运动员可以在运动会管理系统中查询自己的比赛项目及比赛结果,裁判员或工作人员可以通过系统记录运动员各个比赛项目的成绩、进行成绩统计等。运动会管理系统保存运动员、比赛项目以及不同类型比赛的参赛数据。 运动会管理系统主要管理对象有代表队、运动员、比赛项目等。 本系统中,基本规定如下:一个代表队包含多个运动员,一个运动员只能属于一个代表队;一个运动员可以参加多个比赛项目,一个比赛项目可以被多个运动员参加;假设各个比赛项目结束后,按照成绩由高到低排出名次,并对前3名的运动员给予相应的积分,如第1、2、3名分别积分为3、2、1分,而获得其他名次的运动员积分为零分,将代表队中所有成员的积分累加,得到各代表队总积分,将总积分由高到低排序,得到各个代表队的排名情况。 为简化系统需求,本运动会管理系统只考虑田径运动会的管理,仅考虑代表队、、比赛项目的关系,不考虑裁判评分、比赛时间、地点等到的安排。 数据库概念结构设计: 代表队:代表队员、队名称、领队、总积分、总名次 运动员:运动员号,姓名、性别、年龄 比赛项目:项目号、项目类别、项目名称、成绩单位。 数据库逻辑结构设计: 4张表, 比赛详情,包括成绩、积分、名次 以上就是设计数据库的一般步骤及例子全部内容,相信大家已经对如何设计数据库已经有一个大概的思路了吧。 相关教程: 如何优化数据库 还原数据库,数据库提示正在还原中的处理方法 一个关于数据库的联合查询的实例 以上就是设计数据库的一般步骤及例子的详细内容,更多请关注php中文网其它相关文章!
学习教程快速掌握从入门到精通的SQL知识。
|