数据库系统原理 实验3 数据库设计 2.0

呜呜呜 上次提交滴作业忘记进行函数关系分析,作业被打回来重做,这个是完整版哈

数据库系统原理 实验3 数据库设计

一. 实验目的

1、理解概念模型的意义,掌握根据给定业务需求描述建立相应概念模型的方法,并采用适当的图形化建模方法(如陈氏表示法的ER图或Martin表示法的IE鸦脚模型ER图等)和建模工具(如Power designer、Visio、RationalRose或ERWin等);
2、掌握将ER模型转换为关系数据模型的基本方法;
3、掌握运用关系规范化理论对模型进行优化处理的基本方法。
4、结合关系规范化理论对模型进行优化处理,使得每个关系模式至少达到3NF。

二. 实验要求

1)系统需求根据所选题目的相应内容描述进行整合,并对其中未说明的内容(如系统功能,实体的属性)根据个人理解补充完善,或添加必要的假设(如业务规则),作为后续模型设计的起点和模型验证的依据;
2)其他不做强制要求的内容:强、弱实体之分;父、子实体;标识、非标识联系之分;联系的最小基数。

三. 实验内容

从用户需求(详见所给材料)出发,按照数据库设计步骤,分别完成如下内容:
1、整理用户需求,并对材料中未明确说明的内容按自己的理解做出完善和假设,形成系统需求说明(系统功能分解不作要求。重点在于数据需求!);
2、概念设计:ER模型
a) 根据业务需求(包括自己假设的规则)提取必要的实体、属性和联系(包括联系的类型);
b) 给出最终的全局ER图(模型力求精简,消除不必要的冗余),并给出必要的说明。
3、逻辑设计:关系模型
a) 把ER模型转换成各个关系模式,并根据需要修改或添加列(如主键、外键等),为每个属性选择合适的数据类型,参考格式如下图所示;
数据库系统原理 实验3 数据库设计 2.0_第1张图片

四. 实验过程及结果

(根据实验内容要求,给出每一步的相应文档,包括需求分析、ER模型、逻辑模型。)

需求分析

  1. 查询所有分校校长的名字和电话号码
    要有学校实体 包含学校类别(分校或总校) 校长的名字和电话号码
  2. 按城市、分校名称和教练性别,查询教练的基本信息;
    要有教练实体 包含所属学校,教练性别 通过外键与学校实体建立联系 增添学校属性城市、分校名称
  3. 按城市汇总查询每个分校的员工人数;
    学校实体增添属性员工人数
  4. 按年龄查询超过该年龄并且担任教练的员工信息;
    教练实体增添属性年龄
  5. 按年、月查询通过汽车驾驶测试的驾校学员名单及通过时间
    要有学员实体 包含学员ID 学员姓名 学员状态(是否通过考试)以及通过使时间

    数据库系统原理 实验3 数据库设计 2.0_第2张图片
    数据库系统原理 实验3 数据库设计 2.0_第3张图片
    数据库系统原理 实验3 数据库设计 2.0_第4张图片

ER模型

数据库系统原理 实验3 数据库设计 2.0_第5张图片

逻辑模型

school表

数据库系统原理 实验3 数据库设计 2.0_第6张图片

CREATE TABLE `school`  (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `category` int(11) NOT NULL COMMENT '类别 0表示分校 1 表示总校',
  `Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '学校名称',
  `Address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '学校地址',
  `PrincipalName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '校长姓名',
  `PrincipalTelephoneNumber` int(15) NOT NULL COMMENT '校长电话号码',
  `TotalNumberOfEmployees` int(11) NOT NULL COMMENT '员工总数',
  PRIMARY KEY (`ID`) USING BTREE
);

coach表


 CREATE TABLE `coach`  (
  `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '教练ID',
  `Grade` int(2) NOT NULL COMMENT '等级 0表示普通教练 1表示高级教练',
  `Gender` int(2) NOT NULL COMMENT '性别',
  `SchoolID` int(10) NOT NULL COMMENT '所属学校ID',
  `Age` int(3) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`ID`) USING BTREE,
  INDEX `SchoolID`(`SchoolID`) USING BTREE,
  CONSTRAINT `SchoolID` FOREIGN KEY (`SchoolID`) REFERENCES `school` (`ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
);

student表


   CREATE TABLE `student`  (
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL COMMENT '学员姓名',
  `state` int(5) NOT NULL COMMENT '学员考试状态 0 尚未通过 1 已通过',
  `time` datetime NOT NULL COMMENT '通过时间',
  `CoachId` int(10) NOT NULL COMMENT '教练ID',
  PRIMARY KEY (`ID`) USING BTREE,
  INDEX `CoachId`(`CoachId`) USING BTREE,
  CONSTRAINT `CoachId` FOREIGN KEY (`CoachId`) REFERENCES `coach` (`ID`) ON DELETE RESTRICT ON UPDATE RESTRICT
);

函数关系分析

要求 确保至少都是第三范式

1NF(第一范式)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。很显然,上述实体都属于第一范式。
2NF(第二范式)是指每个表必须有主关键字(Primary key),其他数据元素与主关键字一一对应。通常称这种关系为函数依赖(Functional dependence)关系,即表中其他数据元素都依赖于主关键字,或称该数据元素惟一地被主关键字所标识。上述三表都依赖于学校ID 教练ID 学生ID,因此,上述实体都属于第二范式。
3NF(第三范式)就是指表中的所有数据元素不但要能唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其他的函数关系。也就是说,对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。上述三表都只依赖于学校ID 教练ID 学生ID, 而不依赖于其他非关键字数据元素的现象。因此满足第三范式。

五. 实验中的问题及心得

问题

需求分析及ER图绘制未遇到问题
设计外键时对MySQL外键设置中的Cascade、NO ACTION、Restrict、SET NULL属性不是很清楚
cascade方式
在父表上update/delete记录时,同步update/delete掉子表的匹配记录
. set null方式
在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null
. No action方式
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
. Restrict方式
同no action, 都是立即检查外键约束
. Set default方式
父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

心得

多上手实践 才能发现问题 解决问题
实验中的问题解决方案转自MySQL外键设置中的的 Cascade、NO ACTION、Restrict、SET NULL
原创不易 转载请标明出处
帮你解决了作业难题
给个赞不过分吧
数据库系统原理 实验3 数据库设计 2.0_第7张图片

你可能感兴趣的:(数据库实验,数据库架构,数据库开发)