当前位置:网站首页>数据库中的范式:第一范式,第二范式,第三范式
数据库中的范式:第一范式,第二范式,第三范式
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 身份证 身份证→姓名→性别、年龄 但是 性别、年龄→姓名→身份证
边栏推荐
- 【黑马早报】罗永浩回应调侃东方甄选;董卿丈夫密春雷被执行超7亿;吉利正式收购魅族;华为发布问界M7;豆瓣为周杰伦专辑提前开分道歉...
- 微信小程序触底加载与下拉刷新的实现
- Advanced opencv:bgr pixel intensity map
- Should the dependency given by the official website be Flink SQL connector MySQL CDC, with dependency added
- Constrained layout flow
- 面试:List 如何根据对象的属性去重?
- 面试:Bitmap像素内存分配在堆内存还是在native中
- Excerpt from "sword comes" (VII)
- 5G NR系统架构
- Error: module not found: error: can't resolve 'xxx' in 'XXXX‘
猜你喜欢
@Serializedname annotation use
驱动制造业产业升级新思路的领域知识网络,什么来头?
Learning Note 6 - satellite positioning technology (Part 1)
Learning note 4 -- Key Technologies of high-precision map (Part 2)
Universal double button or single button pop-up
[observation] with the rise of the "independent station" model of cross-border e-commerce, how to seize the next dividend explosion era?
SAP UI5 ObjectPageLayout 控件使用方法分享
AtCoder Beginner Contest 254「E bfs」「F st表维护差分数组gcd」
字节跳动面试官:一张图片占据的内存大小是如何计算
AtCoder Beginner Contest 258「ABCDEFG」
随机推荐
Qt实现json解析
Interview: how does the list duplicate according to the attributes of the object?
Window下线程与线程同步总结
TSQL–标示列、GUID 、序列
字节跳动面试官:一张图片占据的内存大小是如何计算
Uni app running to wechat development tool cannot Preview
橫向滾動的RecycleView一屏顯示五個半,低於五個平均分布
一个程序员的职业生涯到底该怎么规划?
LiveData 面试题库、解答---LiveData 面试 7 连问~
Have you learned to make money in Dingding, enterprise micro and Feishu?
横向滚动的RecycleView一屏显示五个半,低于五个平均分布
微信小程序触底加载与下拉刷新的实现
Applet image height adaptation and setting text line height
[可能没有默认的字体]Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename……
《天天数学》连载58:二月二十七日
Go项目实战—参数绑定,类型转换
微信小程序中,从一个页面跳转到另一个页面后,在返回后发现页面同步滚动了
Write double click event
Who is the "conscience" domestic brand?
Dedecms website building tutorial