MySQL数据库设计——以学生成绩数据库为例

数据库是数据管理的有效技术,是计算机科学的重要分支,它能有效地帮助一个组织或者一个企业科学地管理各类信息资源.

目录

MySQL数据库设计以学生成绩数据库为例

目录

数据库设计步骤

基本概念

学生成绩数据库设计

数据库设计步骤

需求分析 2. 逻辑设计3. 物理设计 4. 维护优化

本文仅针对逻辑设计阶段设计一个学生成绩数据库,并阐述设计过程中基本的概念和方法.

基本概念

数据模型:

数据模型是对现实世界中数据特征的抽象爱,描述的是数据的共性.

在数据库系统中针对不同的使用对象和应用目的,通常采用逐步抽象的方法,在不同的层次采用不同的抽象模型,一般可分为概念层、逻辑层、物理层。其中概念层摆脱了计算机系统及DBMS具体技术问题,用于分析数据以及数据之间的联系,概念层的数据模型称为概念模型,常用的概念模型是实体-联系模型(E-R模型).逻辑层的模型称为逻辑模型,是基于计算机系统的观点对数据建模和表示,不同的DBMS支持不同的逻辑模型,如:网状数据模型、层次数据模型、面向对象数据模型、关系数据模型,本文所用的模型是关系数据模型.物理层是数据抽象的最底层,用来描述数据物理存储结构和方法,不但与DBMS有关,还与操作系统和硬件有关,一般设计者只设计索引、聚集等特殊结构.

概念模型:

基本概念

描述

实体(Entity)

现实世界客观存在的事物,可以是具体的也可以是抽象

属性(Attribute)

实体的特性

码或键(Key)

唯一标识每个实体的属性集

域(Domain)

属性的取值范围

实体型(Entity Type)

实体名与属性名集合抽象和刻画同类实体

联系(Relationship)

一对一、一对多、多对多

关系模型:

基本概念

描述

关系

一个关系对应一张二维表格

元组

表中的行,表中的元素称为分量

属性

属性型指属性名和取值域,属性值指具体取值

主键

标识元组的一个候选键,也称关键字,唯一的候选键就是主键

一组具有相同数据类型的集合

由行和列组成

表中的一条记录,表中的数据按行存储

表中的字段

外键

表中的列或一组列,包含另一张表的主键值,主要用来定义两个表之间的关系

关系模式

描述关系,包括模式名、属性名、值域以及主键,一般表示为“关系名(属性1、属性2、属性3...属性n)”

关系规范化

基本概念

描述

第一范式

每一列不可分,简称1NF

第二范式

不存在部分依赖,简称2NF

第三范式

不存在传递依赖,简称3NF

BCNF

关系中每个决定因素都是候选关键字

学生成绩数据库设计

根据需求分析绘制E-R图

E-R模型转换关系模型

类型

转换规则

实体

(1)每个实体转化为一个关系模式.(2)实体的属性作为关系模式的属性.(3)实体的码作为关系模式的主键

一元联系

类似于二元联系

二元联系

(1)1:1可以转换为独立的关系模式,也可以与任意一端对应的关系模式合并,一个关系模式的属性加入另一个关系模式的键和联系类型的属性.(2)1:N可以转换为独立的关系模式,也可以与N端对应的关系模式合并,在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性.(3)M:N各实体的码以及联系本身的属性转换为关系的属性,而关系的键为各实体的组合,即在各实体转换的关系模式中再增加一个关系模式,该关系模式由联系本身转换而来,关系模式的属性为联系的属性加上两端实体关系模式的键,键为两个实体类型关系模式键的组合.

多元联系

三个或三个以上的实体间的一个多元联系可以转换为一个关系模式,与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的键为各实体码的组合

参考链接:http://blog..net/u012501459/article/details/12945191

博主:allan-xia

3.设置外键

4.关系模型

5.SQL语句

-- ----------------------------

-- Table structure for course

-- ----------------------------

DROP TABLE IF EXISTS `course`;

CREATE TABLE `course` (

`course_num` int(11) NOT NULL COMMENT '课程号',

`course_name` varchar(100) CHARACTER SET utf8 NOT NULL COMMENT '课程名',

`course_hour` int(2) NOT NULL COMMENT '课程学时',

`course_score` varchar(10) CHARACTER SET utf8 NOT NULL COMMENT '课程学分',

PRIMARY KEY (`course_num`),

KEY `course_num` (`course_num`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='课程信息表';

-- ----------------------------

-- Records of course

-- ----------------------------

INSERT INTO `course` VALUES ('1', '概率论', '5', '2');

INSERT INTO `course` VALUES ('2', 'MySQL', '5', '2');

INSERT INTO `course` VALUES ('3', '英语', '5', '3');

INSERT INTO `course` VALUES ('4', '毛概', '2', '5');

-- ----------------------------

-- Table structure for score

-- ----------------------------

DROP TABLE IF EXISTS `score`;

CREATE TABLE `score` (

`score_id` int(11) NOT NULL,

`course_num` int(11) NOT NULL,

`student_num` int(11) NOT NULL,

`score` int(3) NOT NULL COMMENT '分数',

PRIMARY KEY (`score_id`),

KEY `course_num` (`course_num`),

KEY `student_num` (`student_num`),

CONSTRAINT `score_ibfk_1` FOREIGN KEY (`course_num`) REFERENCES `course` (`course_num`) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT `score_ibfk_2` FOREIGN KEY (`student_num`) REFERENCES `student` (`student_num`) ON DELETE CASCADE ON UPDATE CASCADE

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='学生成绩表';

-- ----------------------------

-- Records of score

-- ----------------------------

INSERT INTO `score` VALUES ('1', '1', '15001', '89');

INSERT INTO `score` VALUES ('2', '1', '15002', '78');

INSERT INTO `score` VALUES ('3', '1', '15003', '80');

INSERT INTO `score` VALUES ('4', '1', '16004', '78');

INSERT INTO `score` VALUES ('5', '2', '15001', '85');

INSERT INTO `score` VALUES ('6', '2', '15002', '78');

INSERT INTO `score` VALUES ('7', '2', '15003', '75');

INSERT INTO `score` VALUES ('8', '2', '16004', '89');

INSERT INTO `score` VALUES ('9', '3', '15001', '87');

INSERT INTO `score` VALUES ('10', '3', '15002', '77');

INSERT INTO `score` VALUES ('11', '3', '15003', '88');

INSERT INTO `score` VALUES ('12', '3', '16004', '90');

INSERT INTO `score` VALUES ('13', '4', '15001', '90');

INSERT INTO `score` VALUES ('14', '4', '15002', '98');

INSERT INTO `score` VALUES ('15', '4', '15003', '89');

INSERT INTO `score` VALUES ('16', '4', '16004', '88');

-- ----------------------------

-- Table structure for student

-- ----------------------------

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

`student_num` int(11) NOT NULL COMMENT '学生学号',

`student_name` varchar(5) CHARACTER SET utf8 NOT NULL COMMENT '学生姓名',

`student_sex` varchar(1) CHARACTER SET utf8 NOT NULL DEFAULT '男' COMMENT '学生性别',

`student_birthday` varchar(20) CHARACTER SET utf8 NOT NULL COMMENT '学生生日',

PRIMARY KEY (`student_num`),

KEY `student_num` (`student_num`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='学生基本信息表';

-- ----------------------------

-- Records of student

-- ----------------------------

INSERT INTO `student` VALUES ('15001', 'Mark', '男', '1997-02-19');

INSERT INTO `student` VALUES ('15002', 'Wen', '男', '1997-09-16');

INSERT INTO `student` VALUES ('15003', 'Lee', '女', '1997-03-12');

INSERT INTO `student` VALUES ('16004', 'Mary', '女', '1996-07-12');

mysql成绩统计数据库设计_MySQL数据库设计——以学生成绩数据库为例相关推荐

  1. c语言可视化学生管理系统,课程的设计C语言可视化程序学生成绩管理系统.doc

    课程的设计C语言可视化程序学生成绩管理系统 C语言可视化程序 设计报告 行政班级 机械0805 姓名 魏永涛 学号 0806080524 指导老师 夏建芳 课题名称 学生成绩管理系统 C可视化程序设计 ...

  2. c语言利用指针函数等完成学生成绩管理系统,课程设计C语言可视化程序学生成绩管理系统...

    <课程设计C语言可视化程序学生成绩管理系统>由会员分享,可在线阅读,更多相关<课程设计C语言可视化程序学生成绩管理系统(37页珍藏版)>请在人人文库网上搜索. 1.C语言可视化 ...

  3. java和数据库成绩管理系统,基于java与sql数据库技术的学生成绩管理系统 (4).doc...

    基于java与sql数据库技术的学生成绩管理系统 (4).doc 还剩 34页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! ...

  4. 成绩分析系统c语言实验报告,学生成绩管理系统实验报告

    <学生成绩管理系统实验报告>由会员分享,可在线阅读,更多相关<学生成绩管理系统实验报告(13页珍藏版)>请在人人文库网上搜索. 1.学生成绩管理系统实验报告实验名称:学生成绩管 ...

  5. 【例16 Java从键盘读入学生成绩,找出最高分,并输出学生成绩等级】

    例16:从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为'A' 成绩>=最高分-20 等级为'B' 成绩>=最高分-30 等级为'C' 其余 等级为 ...

  6. python作业:有一个学生成绩表,包括学号、姓名、高数、英语,计算机。 录入若干个学生学号、姓名、高数、英语,计算机5项数据。 将学生成绩表数据写入文件,文件名为“学生成绩表.txt

    1.有一个学生成绩表,包括学号.姓名.高数.英语,计算机. 录入若干个学生学号.姓名.高数.英语,计算机5项数据. 将学生成绩表数据写入文件,文件名为"学生成绩表.txt import cs ...

  7. 学生成绩管理系统mysql课程设计_数据库课程设计(极其简单的学生成绩管理系统)...

    这个是我大三上学期的时候刚开始学习数据库课程的时候做的一个很稀烂的课程设计的源代码,当时刚刚开始学习Java和Oracle,而且当时就花了今年元旦3天假,做的这个C/S程序中没有加入触发器和存储过程等 ...

  8. mysql栏目表设计_MySQL表设计

    文章摘自: https://mp.weixin.qq.com/s?__biz=MzI2NDU3OTg5Nw==&mid=2247483799&idx=1&sn=4d1f45ab ...

  9. 数据库课程设计(上)(学生成绩管理系统)

    文章目录 SQL Server数据库设计 AddC AddS AddSC DelC DelS DelSC UpdateC UpdateS UpdateSC SelC SelS SelSC SQL Se ...

  10. Java课程设计 基于c/s端学生成绩管理系统

    java课设选择了学生成绩管理系统,在此记录一下自己做课设的一些想法和问题. 文件源码放在: https://gitee.com/feeling-cool/java-information-syste ...

最新文章

  1. 某游戏在华为鸿蒙,部分安卓游戏在华为鸿蒙 OS 上运行,被识别成使用 PC 端模拟器...
  2. 大战即将来临,柯洁将于5月与AlphaGo正式对决
  3. eclipse java8报错_eclipse4.3安装支持Java8插件,之后就报错无法打开eclipse,求解?
  4. seaborn绘图后得到分布参数
  5. 分布式精华问答:分布式环境下如何保持数据一致性的?| 技术头条
  6. Bezier(贝塞尔)曲线(三阶)的轨迹规划在自动驾驶中的应用(四)
  7. java文件快速扫描仪_有没有办法从Java中的方法提供自动扫描仪输入?
  8. libevent源码深度剖析四
  9. 报错xmlbase 不兼容 expecting up to 23, got 24
  10. linux 修改文件夹权限_Linux文件权限 - Understanding Linux File Permissions
  11. ofo 深圳 java_[Android进阶]OFO首页实现小窥
  12. POS58票据热敏打印机,怎么用ESC/POS命令控制打印文字大小?
  13. 中国氨基酸表面活性剂市场前景展望与发展建议分析报告2022-2028年
  14. Redux Reducer
  15. html给页面加背景特效怎么加,给网页加上js特效
  16. [渝粤教育] 西南科技大学 电子测量与仪表 在线考试复习资料(1)
  17. AutoESL与Xilinx那些人和事
  18. 对待二手车过户要理性
  19. 建立一个植物毒性分类器:数据准备和清理
  20. Win10系统程序图标上的盾牌怎么去除?

热门文章

  1. Wingdings特殊字符及符号对照表
  2. 想成为优秀的技术人员你必须做到的几件事情【转载】
  3. Linux在日志中搜索关键词
  4. 图像中有关位图、色位图、以及所占字节数
  5. matlab-自控原理 已知x~=Ax+Bu中的AB矩阵和X0,求单位输入下的时间响应
  6. mysql 出现ERROR 2002 (HY000): ....错误通用解决方法
  7. python 2个dict如何合并
  8. 【树莓派】在树莓派上制作开机自启动程序及服务2
  9. ORACLE RAC 手动建库
  10. Nand Flash驱动程序分析