MySQL(二):数据库设计

数据库设计

在这里插入图片描述

一、三范式

在这里插入图片描述

第一范式(1NF):强调列的原子性,即列不能再分成其他列

在这里插入图片描述

  • 不遵循第一范式
    在这里插入图片描述

第二范式(2NF):首先是1NF,另外包含两个部分的内容,一是必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

主键标识数据的唯一性:作用是方便查询,提高查询速度。
在这里插入图片描述

  • 不遵循二范式
    OrderID是一个主键,但是并没有满足第二个条件。productID存在之后会导致discount的意思不明确,你的这个折扣指的是oderid这个订单是二折还是productid这个商品二折呢?一个订单下面难道就只存在一件商品吗?因此折扣这一列不知道依赖谁。
    在这里插入图片描述

第三范式(3NF):首先是2NF;另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在列A依赖于非主键列B,非主键列B依赖于主键的情况。

在这里插入图片描述

  • 不遵循三范式:
    会出现数据冗余,老王只会下一个订单吗,如果下多个订单,后面三列是是不是一直会重复的记录
    在这里插入图片描述
  • 最终存储形式
    在这里插入图片描述

二、E-R模型

在这里插入图片描述

  • 一对一:学校一个班级只有一个正班长,而一个班长只能在一个班中任职,班级与班长之间具有一对一关系。

在这里插入图片描述

  • 一对多:一个班级有多个学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多关系。

在这里插入图片描述

  • 多对多:一门课程同时拥有多个学生选修,一个学生可以同时选修多门课程,则课程与学生之间具有多对多联系。
    关系字段:新建一张表C,这个表只有两个字段,一个用于存储A的主键,一个用于存储B的主键。如果过不新建一张表,你将关系字段存储到A表,那么篮球有好多人选修,及所造成的后果就是篮球 郭靖,篮球 黄蓉…
    -

三、逻辑删除

  • 物理删除
    在这里插入图片描述
-- id=8这一条数据已经删除
delete from students where id =8;

但是不建议物理删除,因为他已经从你的磁盘中删除了,应该做逻辑删除

逻辑删除:通过一个字段标记数据是否被删除:
在这里插入图片描述
如何做:在原有的表结构上增加一个字段来标记数据是否被删除
当我们要增加字段的时候使用update 还是alter

alter与update

我们先来看一下这两个的用法:

alter用来修改基本表,是对表的结构进行操作,比如对字段增加,删除,修改类型
update用来修改表中的数据,修改某一行某一列的值

对于初学数据库的菜鸟来说,可能update和alter之间的区别不是很明白。我就是。刚才建立了一个简单的的数据表。
在这里插入图片描述
如图我们创建了一个slioders的表,现在我们想给张飞也发工资。改变张飞对应的行的salary字段的值。
愚蠢 的我居然想着用insert int…where name=‘张飞’;显然这样不行,因为对insert into而言我们是想表中插入表中不存在的行,但是张飞这一行已经存在所以不可以。我们只是要修改某个字段的值,这个时候利用update。
在这里插入图片描述
也就是说我们利用update来修改数据。
那么alter用来干嘛,我们可以利用**alter来修改数据表的结构,**比如说改变字段的类型,添加或者是删除某个字段
基本用法:

alter table <表名>
[add <新字段名><数据类型><约束条件>]添加新的字段
[drop <字段>]删除表中某个字段
[modify <字段><数据类型>]修改字段的类型

比如我们在表中袖增加一个字段sex
在这里插入图片描述

逻辑删除

  • 在原有表结构增加一个字段来标记数据是否被删除
-- 0表示没有被删除,1表示被删除
alter table students add is_delete bit default 0;

BIT数据类型用于存储bit值,能够存储比特长度范围为1~64。
采用 b’value’标记方式指定bit值,其中value是0或者1的序列,例如:b’111’代表7,b’10000000’代表128。
如果设置的0,1串的长度小于BIT(M)的M,那么在左面填充0,例如,将b’101’赋给BIT(6),那么会存储b’000101’。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值