数据库建表语句的使用及简单实战教程_SQL数据库建立一个表

数据库建表语句的使用及简单实战教程_SQL数据库建立一个表目录介绍需求思路思路1:一张表来表示所有数据(如下图)思路2:两张表,学生表和班级表(如下图)代码扩展1.数据库设计三范式1.数据库表中不能出现重复记录,每个字段是原子性的不能再分(不可重复,不可再分)2.第二范式是建立在第一范式基础上的,另外要求所有非主键字段完全依赖主键,不能产生部分依赖3.建立在第二范式基础上的,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)2.经典的数据库设计框架–er图介绍本文将用一个简单的tip来简单介绍建表语句,可以作为建表语句的模板使用需求采集一个学校中学生

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

介绍

本文将用一个简单的tip来简单介绍建表语句,可以作为建表语句的模板使用

需求

采集一个学校中学生的信息,学生具有班级姓名学号等属性

思路

思路1:一张表来表示所有数据(如下图)

在这里插入图片描述
缺点:产生大量的数据冗余

思路2:两张表,学生表和班级表(如下图)

在这里插入图片描述
优点:优化空间,数据具有条理性

思路2将班级编号cno作为外键,且加上非空,这样子的话一个学生一定对应了一个班级。这个时候,学生表叫做子表,班级表叫做父表。

外键:外键的内容一定要是父表对应字段中存在的内容,如果没有该内容,则会添加数据失败,报错。

代码

drop table if exists t_classes;
create table t_classes(
	classes_id	int (3),
	classes_name	varchar(30)	not null,
	constraint	pk_classes_id	primary key(classes_id) 
)

drop table if exists t_student;
create table t_student(
	student_id	int(10),
	student_name 	varchar(50) not null,
	sex		char(2) not null,
	birthday	date not null,
	email		varchar(30) unique,
	classes_id	int (3) not null,
	primary key(student_id),
	foreign key(classes_id) references t_classes(classes_id) 
)

扩展

1.数据库设计三范式

1.数据库表中不能出现重复记录,每个字段是原子性的不能再分(不可重复,不可再分)

在这里插入图片描述
其中联系方式可以再分,不是原子性

2.第二范式是建立在第一范式基础上的,另外要求所有非主键字段完全依赖主键,不能产生部分依赖

在这里插入图片描述
以上虽然确定了主键,但此表会出现大量的冗余,主要涉及到的冗余字段为“学生姓名”和“教师姓名”,出现冗余的原因在于,学生姓名部分依赖了主键的一个字段学生编号,而没有依赖教师编号,而教师姓名部门依赖了主键的一个字段教师编号,这就是第二范式部分依赖。

解决方法:绘制两张表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果一个表是单一主键,那么它就复合第二范式,部分依赖和主键有关系

以上是一种典型的“多对多”的设计

3.建立在第二范式基础上的,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)

在这里插入图片描述
从上表可以看出,班级名称字段存在冗余,因为班级名称字段没有直接依赖于主键,班级名称字段依赖于班级编号,班级编号依赖于学生编号,那么这就是传递依赖,解决的办法是将冗余字段单独拿出来建立表,如下:

在这里插入图片描述
在这里插入图片描述
以上设计是一种典型的一对多的设计,一存储在一张表中,多存储在一张表中,在多的那张表中添加外键指向一的一方的主键。(外键指向主键)

2.经典的数据库设计框架–er图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。

它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;

用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型

用来表现数据对象与数据对象之间的联系,例如学生的实体和成绩表的实体之间有一定的联系,每个学生都有自己的成绩表,这就是一种关系,关系用菱形来表示。(如下图)
在这里插入图片描述

最后,推荐一个优质的mysql课程,我听过的几个课中可以说是讲的最好的老师了。相关链接

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195955.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • kali密码爆破工具_目录对比工具

    kali密码爆破工具_目录对比工具一、下载与安装百度云下载链接:https://pan.baidu.com/s/1Df4wJy2jZ3kRx_aROWy1PQ(提取码:vfcn) 下载之后解压然后使用工具将解压后的目录移动到Linux中(此处我们选择Kali)进入dirsearch-maser目录之后,其中的“dirsearch.py”就是我们可以使用的dirsearch工具,但是我们没有权限执行该文件,所以需…

  • Java封装详解,很简单

    Java封装详解,很简单大家好,今天来给大家分享一下Java封装面向对象有三大特征:1.封装2.继承3.多态我们来讲Java封装,它也是Java面向对象的三大特征之一封装,大白话的解释就是,把一个东西,装到箱子了,只留小小的口,用于外界访问画一个图就是该露的露,该藏的藏我们在程序设计的过程中要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己来完成,不允许外部干涉,低耦合:就是,仅暴露少量的方法给外部使用封装(数据的隐藏)通常,应禁止直接访问一个对象中数据的实际表示,而是应该通过操作接口来访问

  • c语言中switch是什么语句_switch结构c语言

    c语言中switch是什么语句_switch结构c语言c语言中switch的用法是:功能:switch语句是多分支选择语句.用来实现多分支选择结构.if语句只有两个分支可供选择,而实际问题中常常要用到多分支的选择.例如,学生成绩分类(90为”…

  • 香港免备案服务器是合法的吗?「建议收藏」

    香港免备案服务器是合法的吗?不管是否使用过香港服务器的用户,应该都听说过香港服务器可以不用备案,虽然大多数用户不太清楚香港服务器为什么不用备案,但知道香港服务器免备案是合法的就足够了,我在这里将说明关于香港服务器免备案的一切疑问。所谓的网站备案是指的根据国家互联网的规定,网站所有者必须向国家工信部申请网站内容审核和实名备案,有的网站还需要向当地的公安部进行监管备案,所有放在国内服务器上的网站只能通过备案才能访问上线。1、香港服务器为什么不用备案?  这主…

  • onpropertychange替代方案[通俗易懂]

    onpropertychange替代方案1.onpropertychange的介绍onpropertychange事件就是property(属性)change(改变)的时候,触发事件。这是IE专有的!如果想兼容其它浏览器,有个类似的事件,oninput!可能大家会想到另外一个事件:onchange。但是,onchange有两个弊端。一、就是它在触发对象失去焦点时,才触发onchange事件。二、如果得用javascript改变触发对象的属性时,并不能触发onchange事件,oninput也

  • Spring中bean的scope

    Spring中bean的scope

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号