呜呜呜 上次提交滴作业忘记进行函数关系分析,作业被打回来重做,这个是完整版哈
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模型转换成各个关系模式,并根据需要修改或添加列(如主键、外键等),为每个属性选择合适的数据类型,参考格式如下图所示;
(根据实验内容要求,给出每一步的相应文档,包括需求分析、ER模型、逻辑模型。)
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
);
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
);
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
原创不易 转载请标明出处
帮你解决了作业难题
给个赞不过分吧