为创建“教务管理”数据库,首先要创建数据模型。请完成以下任务。

(1)分析报表和做出必要的调研,创建数据模型。

  1. 列出可能的实体。
    学校、学院、专业、班级、学生、教师、课程。

  2. 列出实体的联系、联系的类型和多重性的值。
    实体的联系

联系的类型

一个学校至少有一个学院,一个学院至多被一个学校选择。学校—>学院,1:多
一个院系至少选择一个专业,一个专业至多被一个院系选择。院系—>专业,1:多
一个班级至多选择一个专业,一个专业至少被一个班级选择。班级—>专业,1:多
一个学生至多选择一个班级,一个班级对应多个学生。学生—>班级,1:多
一个专业可以设置多个不相同课程,课程可以被多个不同专业选择。
专业<—>课程,多:多。分析:根据番职校的需求,专业与课程关系是一对多。
一个学生除了修读本专业规定的课程之外,还应该修读其它的(选修)课程,一个学生可以选择多个不相同课程,同一课程可以不选择或选择不同需求的学生。
学生<—>课程,多:多。
一个老师至少任一门课程,一门课程对应多个不同的任课老师。
老师<—>课程,多:多。
提示:在标识实体类之间关系时,另一种方法是在用户的需求说明中找动词或动词短语。

具有多重属性值的字段

课程类型(一体化、纯理论、纯实践)、核心课程(重要True或不重要False)、课程性质(必修课、选修课)、考核方式(考试、考查)、课程归属(基本素质与能力课、职业能力课)

  1. 列出实体的主要属性和属性域,确定每个实体的关键字,其余属性可在后期增加。
Create DataBase 教务管理
go
use 教务管理
goCreate Table 学校
(学校编号 int identity(1,1) constraint column_学校编号_pk Primary key not null,
学校名称 varchar(30) not null,
)Create Table 学院
(系部编号 int identity(1,1) constraint column_系部编号_pk Primary key not null,
系部名 varchar(20)  not null,
学校编号 int not null)Create Table 专业
(专业编号 int identity(1,1) constraint column_专业编号_pk Primary key not null,
专业名称 varchar(20) not null,
系部编号 int not null)Create Table 班级
(班级编号 int identity(1,1) constraint column_班级编号_pk Primary key not null,
班级名称 varchar(20) not null,
专业编号 int not null
)Create Table 学生
(学号 char(9) constraint column_学号_pk Primary key not null,
姓名 char(8) null,
班级编号 int not null)Create Table 教师
(教师编号 int identity(1,1) constraint column_教师编号_pk Primary key not null,
姓名 char(8) not null,
手机号码 char(20) null)Create Table 课程
(课程编号 int identity(1,1) constraint column_课程编号_pk Primary key not null,
课程名称 varchar (20) not null,
学分 tinyint constraint ck_学分 check(学分>0 and 学分<100),
开课学年 datetime null,
开课学期 tinyint constraint ck_开课学期 check(开课学期>0 and 开课学期<100) null,
理论学时 tinyint constraint ck_理论学时 check(理论学时>0 and 理论学时<100) null,
实践学时 tinyint constraint ck_实践学时 check(实践学时>0 and 实践学时<100) null,
备注 nvarchar(Max) null,
课程类型编号 int not null,
核心课程编号 int not null,
课程性质编号 int not null,
考核方式编号 int not null,
课程归属编号 int not null,
开课学院编号 int not null
)/*中间表*/Create Table 课程_教师
(教师编号 int not null,
课程编号 int not null,
课程名 varchar (20)
constraint column_教师编号_课程编号_pk Primary Key(教师编号, 课程编号)
)Create Table 学生_课程
(学生编号 char(9) not null,
课程编号 int not null,
成绩 tinyint constraint ck_成绩 check(成绩>=0 and 成绩<100)
constraint DF_学生_课程_成绩 default(0)
Constraint column_学生编号_课程编号_pk Primary Key(学生编号,课程编号)
)Create Table 专业_课程
(专业编号 int not null,
课程编号 int not null,
Constraint column_专业_课程_pk Primary Key(专业编号,课程编号)
)/*********************多值属性****************************/
--课程类型={一体化、纯理论、纯实践}
Create Table 课程_课程类型
(课程类别编号 int identity(1,1) constraint column_课程_课程类型_pk Primary key  not null,
课程类型 char(9) not null,
)--核心课程={重要、不重要}
Create Table 课程_核心课程
(核心课程编号 int identity(1,1) constraint column_课程_核心课程_pk Primary key not null,
核心课程 bit  constraint DF_课程_核心课程  default('0'),
)--课程性质={必修课、选修课}
Create Table 课程_课程性质
(课程性质编号 int identity(1,1) constraint column_课程_课程性质_pk Primary key not null,
课程性质 char(9) null,
)--考核方式={考试、考查}
Create Table 课程_考核方式
(考核方式编号 int identity(1,1) constraint column_课程_考核方式_pk Primary key not null,
考核方式 char(9) not null,
)--课程归属={基本素质与能力课、职业能力课}
Create Table 课程_课程归属
(课程归属编号 int identity(1,1) constraint column_课程_课程归属_pk Primary key  not null,
课程归属 char(20) not null,
)--Other SQK practice tests
select [name],[definition],[is_system_named]
from [sys].[default_constraints]
select * from sys.key_constraints
select * from sys.foreign_keys
alter table [班级] drop constraint [column_班级(班级编号)_pk]
alter table 班级
alter column 班级编号 identity(1,1) null
alter table 班级
alter column 班级名称 varchar(21) null 
  1. 绘出E-R图。

(2)需要询问教务处以进行核实的部分。

有待探讨的属性有课程归属,需要向教务处咨询需求。
对复合属性的处理:
F(班级编号)= 学生人数,简单属性学生人数依赖于学号和班级编号,通过count函数可以统计出学院、专业和班级的人数;
复合属性总学时=理论+实践;
F(成绩) = 绩点,绩点函数依赖于属于成绩,通过成绩可以知道学生该门课程成绩的绩点;
F(必修学分或选修学分) = 课程的学分,属性必修学分或选修学分决定课程的学分属性值;
F(系部编号和课程编号) = 开课学院;
总分数 = 学生(学号)对应课程(选课)表的所有课程成绩之和;
平均分 = 总分数除以学生(学号)对应课程(选课)表的所有选修课程的数量;
F(必修课或选修课)= 课程性质。

写于2013-04-09 22:14

任务5独立实践SQL数据模型分析相关推荐

  1. SQL性能分析工具SOAR介绍及实践

    1.什么是soar? SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具. 由小米人工智能与云平台的数据库团队开发与维护. 2.它有哪些功能 ...

  2. 高通量测序技术的原理及各平台优势和实践应用的分析

    高通量测序技术的原理及各平台优势和实践应用的分析 2020.9.01 2060 随着人类基因组计划(human genome project )在2003年顺利完成,基因组测序技术取得了长足的进步,这 ...

  3. 【MyBatis框架】订单商品数据模型-分析思路

    我们接下来要对即将用来实验的订单商品数据模型进行分析. 首先在MySql中创建mybatis数据库,在其中创建以下表: [sql] view plaincopy CREATE TABLE `items ...

  4. 优化器-SQL语句分析与优化

    一.连接-配置优化 1.1 连接数过多问题 有时会碰到Mysql:error 1040:Too many connection的错误.原因:超过了服务端设置的最大并发连接数. 1.2 从两个方面解决问 ...

  5. 读《大数据之路-阿里巴巴大数据实践》数据模型篇笔记

    读<大数据之路-阿里巴巴大数据实践>数据模型篇 七 建模综述 OLTP 面向数据 随机读写 3NF OLAP 批量读写 不关注一致性更关心数据整合 ER模型–衍生出dataVault 维度 ...

  6. MSSQL · 最佳实践 · SQL Server备份策略

    摘要 在上一期月报中我们分享了SQL Server三种常见的备份技术及工作方式,本期月报将分享如何充分利用三者的优点来制定SQL Server数据库的备份和还原策略以达到数据库快速灾难恢复能力. 上期 ...

  7. 网络安全框架:OWASP概述、优势、实践和局限性分析

    原文:OWASP概述.优势.实践和局限性分析 "OWASP框架是一个开源的应用程序安全开发生命周期框架,其目的是提供一个可重复使用的方法,以确保应用程序在设计.开发.测试和部署阶段都是安全的 ...

  8. Mybatis解析动态sql原理分析

    前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...

  9. 第 28 小时项目管理过程实践和案例分析

    第 28 小时项目管理过程实践和案例分析 根据考试大纲,这部分作为下午 考试的内容,共有 3 道大题,每题 25 分,共 75 分,45 分及格.考题形式为"计算+项目管理有关知识" ...

最新文章

  1. 从零开始制作自己的podspec
  2. java api 1.6 下载_Java JDK API
  3. Guitar Por如何演奏刮弦
  4. 花了一周整理的,这是价值10W的32个Python项目!
  5. 字符串首字母置为大写
  6. AC9刷梅林安装entware usb挂载 u盘分区使用swap脚本
  7. 易用宝项目记录day6-login和权限管理
  8. CDISC SDTM CE domain学习笔记
  9. kvaser在linux下的二次开发
  10. 高中数学三角函数公式大全及其易错题型总结
  11. ipad可以安装python的编辑器_ipad配置python步骤
  12. 李沐动手学深度学习V2-注意力评分函数
  13. 《拆掉思维里的墙》简评和部分摘录
  14. drhf赫夫生医的产品质量怎么样?
  15. 使用C++设计贪食蛇小游戏
  16. 滴滴实时计算发展之路及平台架构实践
  17. 暗黑地牢dlc文件夹或mods文件夹中某个mod在初始界面开新档不显示/不加载的解决办法
  18. python使用fpdf创建pdf:写入hello world、嵌入图片
  19. ReactNative常用插件使用
  20. 玩客云家庭媒体共享中心使用说明

热门文章

  1. 一位在微软公司的粉丝,写给我的信
  2. java8对list的操作两个List集合取交集、并集、差集
  3. win2d CanvasCommandList 使用方法
  4. MySQL--基础知识点--64--等值连接/自连接/自然连接/外连接
  5. 虚拟机安装mysql数据库
  6. NT_iOS笔记—判断iPhone6
  7. CSDN cdsn显示发布频繁 请稍后重试 和保存草稿不成功 的解决办法
  8. IDEA设置自动生成注释模板
  9. python 如何同时遍历两个列表
  10. 二叉搜索树BST的学习