0

0

设计数据库的一般步骤及例子

小云云

小云云

发布时间:2017-11-16 17:44:10

|

10694人浏览过

|

来源于php中文网

原创

在现在的程序开发中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语句 实现对数据查询、修改、删除等操作。(可以先思考需要怎么操纵数据库,后面再实现)

编写存储过程、触发器等,并调试通过。(比如创建一个触发器当学生表中某学号的学生被删除时,自动将选课表中的该选课记录删除)

数据库运行维护:

DESTOON B2B网站管理系统
DESTOON B2B网站管理系统

DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。

下载

主要包括以下内容

数据库的备份与恢复

数据库的安全性与完整性控制

数据库的性能监督、分析和改进

访问数据库,可以通过以下语句操纵数据。

对学生表的性别、年龄字段添加约束。

添加一个属性列“入学时间”。

修改“专业”的数据类型。

增加课程名必须取唯一值的约束。

在选课表的列“学号”、“课程号”上建立索引。

在选课表的“工号”、“课程号”上建立索引。

假设学生选课系统中有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张表,

比赛详情,包括成绩、积分、名次

以上就是设计数据库的一般步骤及例子全部内容,相信大家已经对如何设计数据库已经有一个大概的思路了吧。

相关教程:

如何优化数据库

还原数据库,数据库提示正在还原中的处理方法

一个关于数据库的联合查询的实例

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

1

2026.01.29

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

420

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

137

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

244

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

8

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

13

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

10

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

24

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

124

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

Excel 教程
Excel 教程

共162课时 | 14.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号