wordpress开发视频网站,dede批量建站,网站视频播放代码,什么网站有女人跟狗做的1.范式 数据库的范式是⼀组规则。在设计关系数据库时#xff0c;遵从不同的规范要求#xff0c;设计出合理的关系型数 据库#xff0c;这些不同的规范要求被称为不同的范式。 关系数据库有六种范式#xff1a;第⼀范式#xff08;1NF#xff09;、第⼆范式#xff08;…1.范式 数据库的范式是⼀组规则。在设计关系数据库时遵从不同的规范要求设计出合理的关系型数 据库这些不同的规范要求被称为不同的范式。 关系数据库有六种范式第⼀范式1NF、第⼆范式2NF、第三范式3NF、巴斯-科德 范式BCNF、第四范式4NF和第五范式5NF⼜称完美范式越⾼的范式数据库冗余越 ⼩。然⽽普遍认为范式越⾼虽然对数据关系有更好的约束性但也可能导致数据库IO更繁忙因此 在实际应⽤中数据库设计通常只需满⾜第三范式即可。 1.1第一范式
1.1.1定义 • 数据库表的每⼀列都是不可分割的原⼦数据项⽽不能是集合数组对象等⾮原⼦数据。 • 在关系型数据库的设计中满⾜第⼀范式是对关系模式的基本要求。不满⾜第⼀范式的数据库就不能被称为关系数据库 1.1.2示例 • 定义⼀个学⽣表需要记录学⽣信息和学校信息 1.1.2.1反例 • 学校是⼀个对象可以继续进⾏拆分所以不满⾜第⼀范式 1.1.2.2正例 • 学校信息包含在⼀⾏中每⼀列都不能再进⾏拆分此时已满⾜第⼀范式 在关系型数据库中每⼀列都可以⽤基本数据类型表⽰就天然满⾜第⼀范式 1.2第二范式
1.2.1定义 在满⾜第⼀范式的基础上不存在⾮关键字段对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况下。 候选键可以唯⼀标识⼀⾏数据的列或列的组合可以从候选键中选⼀个或多个当做表的主键 1.2.2示例 需求学⽣可以选修课程课程有对应的学分学⽣考试后每⻔课程会产⽣相应的成绩 1.2.2.1反例
用一张表记录所有信息 • 这张表中使⽤学号课程名定义复合主键来唯⼀标识⼀个学⽣某⻔课程的成绩这也是这张表的主要作⽤ • 学⽣是通过学号来确定的学⽣的姓名、年龄和性别和课程没有关系即学⽣的信息只依赖学号不依赖课程名学分是通过课程来确定的课程的学分与学⽣没有关系即学分只依赖课程名不依赖学⽣ • 对于使⽤复合主键的表如果⼀⾏数据中的有些列只与复合主键中的⼀个或其中⼏个列有关系那么就说他存在部分函数依赖也就不满⾜第⼆范式 1.2.2.2不满足第二范式时可能出现的问题 1. 数据冗余 学⽣的姓名、年龄、性别和课程的学分在每⾏记录中重复出现造成了⼤量的数据冗余。 2. 更新异常 如果要调整MySQL的学分那么就需要更新表中所有关于MySQL的记录⼀旦执⾏中断导致某些 记录更新成功某些数据更新失败就会造成表中同⼀⻔课程出现不同学分的情况出现数据不⼀致问题。 3. 插⼊异常 ⽬前这样的设计成绩与每⼀⻔课和学⽣都有对应关系也就是说只有学⽣参加选修课程考试取 得了成绩才能⽣成⼀条记录。当有⼀⻔新课还没有学⽣参加考试取得成绩之前那么这⻔新课在数据库中是不存在的因为成绩为空时记录没有意义。 4. 删除异常 把毕业学⽣的考试数据全都删除此时课程和学分的信息也会被删除掉有可能导致⼀段时间 内数据库⾥没有某⻔课程和学分的信息。 1.2.2.3正例 • 设计表针对需求应该设计三张表即学⽣表、课程表和成绩表 第⼆范式强调的是部分函数依赖当⼀张表中的主键只有⼀列时天然满⾜第⼆范式 1.3第三范式
1.3.1定义 在满⾜第⼆范式的基础上不存在⾮关键字段对任⼀候选键的传递依赖 1.3.2示例 要求学⽣表中记录学⽣所属的学院在满⾜第⼆范式的基础上对学⽣表做出修改 1.3.2.1反例 • 因为是要描述学⽣信息并且在表中定义了Id为主键Id可以明确的标识每条学⽣信息 • 在这个表结构中可以看出学⽣的学号、姓名、年龄、性别与主键Id强相关学院电话、学院地址与学院强相关在⼀个表中出现了两个强相关的关系⽽且这两个强相关关系⼜存在传递现象即通过学⽣Id可以找到学⽣记录学⽣记录中包含学院名每个学院⼜有⾃⼰的电话和地址 • 这种传递现象称为传递依赖所以当前的表不满⾜第三范式 1.3.2.2正例 • 把学院信息拆分出来定义学院表学⽣表与学院表做关联 此时所有表设计满⾜第三范式 2.设计过程 1. 从现实业务中抽象得到概念类 概念类是从现实世界中抽象出来的在需求分析阶段就需要确定下来 ◦ 类对应了数据库设计中的实体实体对应了数据库中的表 ◦ 类中的属性对应实体中的属性实体的属性对应了表中的列 2. 确定实体与实体之间的关系并画出E-R画⽅便项⽬参与⼈员理解与沟通 3. 根据E-R图完成SQL语句的编号并创建数据库 3.实体-关系图 实体-关系图Entity-Relationship Diagram简称E-R图也称作实体联系模型、实体关系模型是 ⼀种⽤于描述数据模型的概念图主要⽤于数据库设计阶段。 3.1 E-R图的基本组成
E-R图包含了以下三种基本成分 • 实体即数据对象⽤矩形框表⽰⽐如⽤⼾、学⽣、班级等。 • 属性实体的特性⽤椭圆形或圆⻆矩形表⽰如学⽣的姓名、年龄等。 • 关系实体之间的联系⽤菱形框表⽰并标明关系的类型并⽤直线将相关实体与关系连接起来。 3.2关系的类型
3.2.1 一对一关系11 • ⼀个⽤⼾实体包含的属性有⽤⼾昵称真实姓名⼿机号邮箱地址性别学校 • ⼀个账⼾实体包含的属性有登录⽤⼾名密码 • ⽤⼾实体与账⼾实体是⼀对⼀的关系⽤E-R图表⽰如下 3.2.2一对多关系1N 3.2.3多对多关系M:N) • ⼀个学⽣实体包含的属性有真实姓名学号年龄性别⼊学时间 • ⼀个课程实体包含的属性有课程名 • ⼀个学⽣可以选修改多⻔课程⼀⻔课程也可以被多名学⽣选修改所以学⽣与课程之间是多对多关系⽤E-R图表⽰如下 • 对于多对多关系可以使⽤中间表进⾏记录⽐如⼀个学⽣参加了某⼀⻔课程的考试得到了相应的成绩⽤E-R图表⽰如下 4.练习设计表 根据以上E-R图完成表的创建并添加主键列 4.1用户与账号的一对一关系 实体间⼀对⼀关系只需要在其中⼀个实体中添加对另⼀个实体的关联字段即可 # 在⽤⼾实体中添加对账⼾实体的关联
drop table if exists users;
create table users (id bigint primary key auto_increment,name varchar(20) not null, nickname varchar(20),phone_num varchar(11), email varchar(50),gender tinyint(1),account_id bigint
);drop table if exists account;create table account (id bigint primary key auto_increment,username varchar(20) not null,password varchar(32) not null
);# 在账⼾实体中添加对⽤⼾实体的关联
drop table if exists users;create table users (id bigint primary key auto_increment,name varchar(20) not null, nickname varchar(20),phone_num varchar(11), email varchar(50),gender tinyint(1)
);drop table if exists account;create table account (id bigint primary key auto_increment,username varchar(20) not null,password varchar(32) not null,users_id bigint
); 4.2学生与班级的一对多关系 分别创建学⽣表和班级表在学⽣表中添加⼀列与班级表建⽴关联关系 # 班级表
drop table if exists class;
create table class (id bigint primary key auto_increment,name varchar(20)
);# 学⽣表
drop table if exists student;
create table student (id bigint primary key auto_increment,name varchar(20) not null, sno varchar(10) not null,age int default 18,gender tinyint(1), enroll_date date,class_id bigint
); 4.3学生、课程与成绩的多对多关系 学⽣可以选修多⻔课程每⻔课程考试后会产⽣⼀个成绩两个表之间没有办法直接建⽴关系所以要⽤到⼀个记录成绩的中间表 # 学⽣表
drop table if exists student;
create table student (id bigint primary key auto_increment,name varchar(20) not null, sno varchar(10) not null,age int default 18,gender tinyint(1), enroll_date date,class_id bigint,foreign key (class_id) references class(id)
);# 课程表
drop table if exists course;create table course (id bigint primary key auto_increment,name varchar(20));# 分数表drop table if exists score;create table score (id bigint primary key auto_increment,score float,student_id bigint,course_id bigint,foreign key (student_id) references student(id),foreign key (course_id) references course(id));
文章转载自: http://www.morning.dpppx.cn.gov.cn.dpppx.cn http://www.morning.fjscr.cn.gov.cn.fjscr.cn http://www.morning.wtsr.cn.gov.cn.wtsr.cn http://www.morning.smkxm.cn.gov.cn.smkxm.cn http://www.morning.npfkw.cn.gov.cn.npfkw.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn http://www.morning.mjmtm.cn.gov.cn.mjmtm.cn http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn http://www.morning.qsswb.cn.gov.cn.qsswb.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn http://www.morning.benqc.com.gov.cn.benqc.com http://www.morning.pgzgy.cn.gov.cn.pgzgy.cn http://www.morning.qsy38.cn.gov.cn.qsy38.cn http://www.morning.ypbp.cn.gov.cn.ypbp.cn http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn http://www.morning.kongpie.com.gov.cn.kongpie.com http://www.morning.nlysd.cn.gov.cn.nlysd.cn http://www.morning.qghjc.cn.gov.cn.qghjc.cn http://www.morning.kpxky.cn.gov.cn.kpxky.cn http://www.morning.nbfkk.cn.gov.cn.nbfkk.cn http://www.morning.rkkh.cn.gov.cn.rkkh.cn http://www.morning.rqnhf.cn.gov.cn.rqnhf.cn http://www.morning.dmwbs.cn.gov.cn.dmwbs.cn http://www.morning.sjmxh.cn.gov.cn.sjmxh.cn http://www.morning.qwwhs.cn.gov.cn.qwwhs.cn http://www.morning.sbdqy.cn.gov.cn.sbdqy.cn http://www.morning.redhoma.com.gov.cn.redhoma.com http://www.morning.kqxng.cn.gov.cn.kqxng.cn http://www.morning.cnqff.cn.gov.cn.cnqff.cn http://www.morning.bpcf.cn.gov.cn.bpcf.cn http://www.morning.srnhk.cn.gov.cn.srnhk.cn http://www.morning.jxrpn.cn.gov.cn.jxrpn.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.jnptt.cn.gov.cn.jnptt.cn http://www.morning.fcrw.cn.gov.cn.fcrw.cn http://www.morning.wmmqf.cn.gov.cn.wmmqf.cn http://www.morning.jcwhk.cn.gov.cn.jcwhk.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.rpjr.cn.gov.cn.rpjr.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.qptbn.cn.gov.cn.qptbn.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.phgz.cn.gov.cn.phgz.cn http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn http://www.morning.fksrg.cn.gov.cn.fksrg.cn http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn http://www.morning.cbchz.cn.gov.cn.cbchz.cn http://www.morning.lhwlp.cn.gov.cn.lhwlp.cn http://www.morning.zqdzg.cn.gov.cn.zqdzg.cn http://www.morning.cgtfl.cn.gov.cn.cgtfl.cn http://www.morning.clbsd.cn.gov.cn.clbsd.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.lmqfq.cn.gov.cn.lmqfq.cn http://www.morning.guangda11.cn.gov.cn.guangda11.cn http://www.morning.ltfnl.cn.gov.cn.ltfnl.cn http://www.morning.fbbpj.cn.gov.cn.fbbpj.cn http://www.morning.pthmn.cn.gov.cn.pthmn.cn http://www.morning.gbfuy28.cn.gov.cn.gbfuy28.cn http://www.morning.yfphk.cn.gov.cn.yfphk.cn http://www.morning.xnqjs.cn.gov.cn.xnqjs.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.xdjwh.cn.gov.cn.xdjwh.cn http://www.morning.ryxgk.cn.gov.cn.ryxgk.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.fqhbt.cn.gov.cn.fqhbt.cn http://www.morning.rymd.cn.gov.cn.rymd.cn http://www.morning.plflq.cn.gov.cn.plflq.cn http://www.morning.mqwnz.cn.gov.cn.mqwnz.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.dqbpf.cn.gov.cn.dqbpf.cn http://www.morning.pjrgb.cn.gov.cn.pjrgb.cn http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn http://www.morning.ghssm.cn.gov.cn.ghssm.cn http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn http://www.morning.fbxdp.cn.gov.cn.fbxdp.cn http://www.morning.mrfnj.cn.gov.cn.mrfnj.cn