当前位置:网站首页>数据库中的范式:第一范式,第二范式,第三范式
数据库中的范式:第一范式,第二范式,第三范式
2022-07-05 10:17:00 【小的时候可菜了】
元组:表中的一行
码:表中的一列
候选码:可唯一标识,如通过(身份证号码)或者 (学校,班级,学号)可唯一标识一个人;主属性:候选码中出现过的属性
主码 : 也叫主键,从候选码中选出一个老大
外码也叫外键。如果一个关系中的一个属性
是另外一个关系中的主码
则这个属性为外码
第一范式,第二范式,第三范式的超简单介绍
第一范式: 不可再分
如一个表中有两个属性:
公司、商品(名称、数量)
,但商品可由名称、数量表示,不符合,而公司、名称、数量
符合
第二范式:建立在第一范式基础上,消除部分依赖
订单号 | 产品号 | 产品数量 | 产品折扣 | 产品价格 | 订单金额 | 订单时间 |
---|---|---|---|---|---|---|
10001 | 25 | 100 | 0.9 | 9 | 5000 | 2022-07-22 |
10001 | 26 | 200 | 0.8 | 9 | 7000 | 2022-07-23 |
订 单 号 、 产 品 号 → 产 品 数 量 、 产 品 折 扣 、 产 品 价 格 订 单 号 → 订 单 金 额 、 订 单 时 间 订单号、产品号\to产品数量、产品折扣、产品价格 \\ 订单号\to 订单金额、订单时间 订单号、产品号→产品数量、产品折扣、产品价格订单号→订单金额、订单时间
‘订单号’ 和 ‘产品号’ 是表的主键(主码),这两个字段一起决定了 ‘产品数量‘ ’产品折扣‘ ’产品价格‘ ,
而‘订单金额’和‘订单时间’仅由‘订单号’决定,不是由 主键(‘订单号’ 和 ‘产品号’)共同决定,所以‘订单金额’和‘订单时间’是部分依赖于主键
正确版本
订单号 | 产品号 | 产品数量 | 产品折扣 | 产品价格 |
---|---|---|---|---|
10001 | 25 | 100 | 0.9 | 9 |
10001 | 26 | 200 | 0.8 | 9 |
订单号 | 订单金额 | 订单时间 |
---|---|---|
10001 | 5000 | 2022-07-22 |
10001 | 7000 | 2022-07-23 |
第三范式:建立在第二范式基础上,消除传递依赖
身份证号 | 姓名 | 性别 | 年龄 |
---|---|---|---|
34666666666 | 张三 | 男 | 22 |
身 份 证 → 姓 名 → 性 别 、 年 龄 身份证 \to 姓名 \to 性别、年龄 身份证→姓名→性别、年龄
“性别”和“年龄”虽然间接依赖‘身份证号’,但直接依赖的是“姓名”,正确版本
身份证号 | 姓名 |
---|---|
34666666666 | 张三 |
姓名 | 性别 | 年龄 |
---|---|---|
张三 | 男 | 22 |
传递函数依赖: 身 份 证 → 姓 名 → 性 别 、 年 龄 但 是 性 别 、 年 龄 ↛ 姓 名 ↛ 身 份 证 身份证 \to 姓名 \to 性别、年龄 ~~~~~~但是~~~~~~ 性别、年龄 \not\to 姓名 \not\to 身份证 身份证→姓名→性别、年龄 但是 性别、年龄→姓名→身份证
边栏推荐
猜你喜欢
Universal double button or single button pop-up
WorkManager学习一
AtCoder Beginner Contest 258「ABCDEFG」
ByteDance Interviewer: how to calculate the memory size occupied by a picture
Ad20 make logo
How do programmers live as they like?
Constraintlayout officially provides rounded imagefilterview
> Could not create task ‘:app:MyTest.main()‘. > SourceSet with name ‘main‘ not found.问题修复
Events and bubbles in the applet of "wechat applet - Basics"
Learning Note 6 - satellite positioning technology (Part 1)
随机推荐
QT implements JSON parsing
Implementation of wechat applet bottom loading and pull-down refresh
学习笔记5--高精地图解决方案
面试:List 如何根据对象的属性去重?
Click the picture in the mobile browser and the picture will not pop up
Singleton mode encapsulates activity management class
Swift saves an array of class objects with userdefaults and nssecurecoding
"Everyday Mathematics" serial 58: February 27
Using directive in angualr2 to realize that the picture size changes with the window size
How can PostgreSQL CDC set a separate incremental mode, debezium snapshot. mo
【SWT组件】内容滚动组件 ScrolledComposite
小程序中自定义行内左滑按钮,类似于qq和wx消息界面那种
Blockbuster: the domestic IDE is released, developed by Alibaba, and is completely open source!
Workmanager Learning one
【观察】跨境电商“独立站”模式崛起,如何抓住下一个红利爆发时代?
StaticLayout的使用详解
Universal double button or single button pop-up
DDOS攻击原理,被ddos攻击的现象
爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架
What is the origin of the domain knowledge network that drives the new idea of manufacturing industry upgrading?