目录

学生管理系统数据库设计

学生管理系统功能介绍

数据库设计步骤

第1步: 找对象

第2步:找属性

第3步: 找关系

建表原则

第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表

总结: 数据库设计遵循的原则[重点]

学生管理系统数据库设计

设计一套数据库首先要熟悉当前系统有哪些功能,具体的业务流程是什么

学生管理系统功能介绍

一套学校用的学生管理系统,最核心的功能如下

学生信息管理(增加学生,删除学生,修改学生,查询学生信息==简称:CURD)

老师信息管理(CURD)

课程信息管理系统(CURD)

成绩信息管理系统(CURD)

违纪信息管理(CURD)

活动信息管理(CURD)

物资/设备信息管理(CURD)

等....

要完成以上所有的功能,需要操作以上对象的相关信息. 以上对象的信息可以按照固定格式存储在数据库中!

数据库设计的第一步就是找出业务相关的的核心对象,一类物体/对象的信息固定存储在一张表中!

概念

对象: 生活中的一类物体,程序中叫对象

属性: 物体的名词和形容词的描述,就是对象的属性

数据库设计步骤

数据库设计三大核心的步骤:

1.找对象

2.找属性

3.找关系

第1步: 找对象

分析系统业务中的核心对象.

学生对象----> 学生表(student)

老师对象----> 老师表(teacher)

课程对象----> 课程表(course)

成绩对象----> 成绩表(score)

班级对象----> 班级表(前缀_class,因为user或class等英文单词是程序中的关键字.尽量不直接用)

等.....

注意: 一些隐含的对象可能因为对业务不熟练,可能找不到,.比如:学生请假条对象. 活动对象等..... 所以进行数据库设计之前,一定要把系统功能和业务流程整理清楚.当然遗漏的对象可以在需要时再补充.数据库设计没有一步到位的.

第2步:找属性

属性概念: 物体/对象的名词或形容词的描述.学名叫"属性",,每个属性对应表中的1个列!

学生对象(student): 唯一标识id,学号 姓名,性别,年龄,生日,电话,

老师对象(teacher): 唯一标识id,姓名,性别,年龄,电话

课程对象(course): 唯一标识id,课程名,开课时间,课时数量

班级对象(tbl_class) : 唯一标识id,班级编号,人数

成绩对象(score) : id,分数,课程名(可直接引用课程编号), 学生名(可直接引用学生编号)

对象中每个属性就对应表中的每个列

为了避免数据冗余(重复),用学生id和课程id代替名字!

电脑中存储数据是严格区分不同类型的! 年龄:整数int, 名字:字符串;char/varchar/string

第3步: 找关系

表和表之间的关系有: 1---N(1对多) 或 N---1(多对1) 或 1-1(1对1) 或 N--N (多对多)

1-N 或 1-1 或 N-1: 通过主键和外键表示

N-N : 一但出现多对多,必须借助一个中间表(关系表)实现

比如 商品和订单表就是 N--N

商品(id,商品编号,名字,数量,价格)

订单(id,订单号, 用户名(id), 总价, 总数量 )

独立一个中间表/关系表(保存另外两张表的主键引用)

id

pid(商品编号)

oid(订单编号)

1

P001

D001

2

P002

D001

3

P003

D001

4

P001

D002

5

P001

D003

6

P002

D002

#查 订单D001买的所有的商品!

select * from 表名 where oid='D001'

# 查 商品 P001被下单了多少次?

select * from 表名 where pid = 'P001'

# 看:D001 买了几个商品!

select sum(num) from guanxi_product_order

where oid='D001'

建表原则

对象分析出来后就可以建表了,一般建表时遵循的原则如下.

建表规则

1. 同一类的对象信息存储在1张表中!

2. 对象的每个属性对应表中的每个列!

3. 列有具体的数据类型

int: 整数

小数: float/doube

日期: date.datetime

字符串:char/varchar

4. 每个表中必须有主键列!

唯一区分一个行的列就交主键列(可以多个)

规则: 为了避免没有主键习惯于添加一个虚拟的主键id(自增)

5. 添加约束(限制条件)

主键: primary key --->特点: 唯一

自增: auto_increment----> 自动增长

默认值: default ----->性别默认为男!

非空: not null--------> 必须有数据

唯一: unique---->不能重复

外键(参考) foreign key:------>成绩表中存班级id,课程id,

第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表

比如:地区表 和 员工表

id(地区编号)

name

code

pcode父编号

1

北京

11

2

山东

37

3

济南

3701

37

4

青岛

3702

37

5

海淀

1101

11

6

房山

1102

11

-- 所有省

select * from area where pcode is null

-- 山东省所有的市

select code from area where name= '山东'

select * from area where pcode = 37

select * from area where pcode = (

select code from area where name= '山东'

)

总结: 数据库设计遵循的原则[重点]

前提: 熟悉项目的业务流程!

一类对象信息保存张表中

表中必须有主键列(为了防止没有主键习惯添加虚拟主键列id,id一般设置为自增)

添加约束保证数据完整性

主键

唯一

自增

非空

外键(实现1-N)

默认值

多对对必须独立一个关系表

注意: 等级明显并且无敏感信息的数据可以通过自关联实现!

遵守: 数据库设计三大范式(三大原则)

MySQL数据库--学生管理系统数据库设计

标签:curd   老师   没有   table   找对象   严格   避免   rem   类型

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/bignote/p/11610070.html

学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计相关推荐

  1. mysql workbench 闪电_MySQL Workbench下载|可视化数据库设计建模(MySQL Workbench) 8.0 最新版-闪电下载吧...

    MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL Workbench设计和创建新的数据库图示,建 ...

  2. 命令行mysql数据库备份_MySQL命令行备份数据库

    For instance : 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:psd 数据库名称:samego samego_2 samego数据库下的两张表 managers_1 ...

  3. mysql网页后台_MySQL(PHP网站后台数据库)

    MySQL是一款非常受欢迎的开源SQL数据库管理系统,它由MySQL AB开发.发布和支持,MySQL 的执行性能非常高,运行速度非常快,并非常容易使用.是一个非常捧的数据库,PHP 和MYSQL完美 ...

  4. mysql join 去重_MySQL Update inner join数据库去重,以及根据一张表的值更新另一张表...

    1 问题来源 这几天在项目中遇到一个问题:由于前期设计不合理,导致后期用户录入数据时,基础数据表中有重复多余数据.如下: 出现两个 2G网络测试手机 这样类似的基础数据,直接后果就是用户在使用这个基础 ...

  5. mysql 系统默认_mysql之系统默认数据库

    相关内容: 系统默认数据库information_schema,performance_schema,mysql,test  的意义 首发时间:2018-02-23 17:10 安装mysql完成后, ...

  6. mysql备份教程_Mysql教程-自动备份数据库

    批处理命令: set"Ymd=%date:~,4%%date:~5,2%%date:~8,2%" set"hMs=%time:~,2%%time:~3,2%%time:~ ...

  7. mysql 数据迁移_mysql实验--不同字符集数据库迁移步骤演示

    概述 今天主要介绍下mysqldump怎么迁移编码不同的数据库,这里用一个实验来演示一下. 1.创建测试数据库 create database t1 default character set gbk ...

  8. mysql触发器 多数据_mysql的触发器同数据库多表的数据操作_MySQL

    CREATE TRIGGER BEFORE ON FOR EACH ROW //语句可以是任何合法的语句,包括复合语句,但是这里的语句受的限制和函数的一样 2.触发器的创建 不能给同一张表的同一个事件 ...

  9. mysql 授予数据库权限_MySQL:授予**对数据库的所有**权限

    我创建了数据库,例如'mydb'. CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'myuser'@'%' ...

  10. 查看mysql用户权限_mysql 如何查看该数据库用户具有哪些权限?

    展开全部 背景 在了解动态权限之前,我们先回顾下 MySQL 的权限列表. 权限列表大体分为服务级别和表级别,列级别以32313133353236313431303231363533e59b9ee7a ...

最新文章

  1. Spring的环绕通知
  2. Linux中的硬链接和软链接
  3. Xamarin XAML语言教程基本视图ContentViewg构架范围框架
  4. python交叉编译的配置 脚本怎么写_如何写一个简单的脚本并配置
  5. 【Win32 API学习】模拟键盘输入和鼠标输入
  6. php serialize和json_encode哪个更快_学习PHP的10个技巧
  7. JavaScript 继承
  8. JVM与计算机之间的关系
  9. 7.软件架构设计:大型网站技术架构与业务架构融合之道 --- 框架、软件与中间件
  10. 将excel数据导入到SQL server数据库
  11. im即时通讯源码+软件+app附详细封装视频搭建教程
  12. 最短路—Johnson算法(解决负权边,判断负权环)
  13. 3dmax坐标轴全解
  14. 常见问题之Golang——verifying github.com/go-playground/assert/v2@v2.0.1/go.mod: checksum mismatch错误...
  15. drawCircle方法:绘制圆形
  16. php实现支付宝扫码付
  17. 疫情当前,「在家远程办公」可能是最佳选择
  18. EKS自动扩容-方式一:ASG负载检测自动扩容功能
  19. vue音频播放器组件
  20. 自动生成接口文档之JApiDocs教程

热门文章

  1. what is MacPorts?
  2. 计算机大一萌新,要补充哪些计算机基本知识
  3. no diagrams overlap selections问题解决
  4. MIT诺奖大牛2万字雄文:记忆的本质
  5. react-sortablejs 实现自定义表单设计
  6. 螺旋无限延伸_八卦中的双螺旋结构,无限大∞符号隐含的秘密
  7. 如何安装和配置Mantis
  8. linux 个人云存储_您的私人云管家 联想个人云存储上手体验
  9. 《通用数据保护条例》(GDPR)系列解读二:个人七大数据权利,企业违反或面临2000万罚款
  10. 3套精品像素字体打包下载