Java学习笔记2(数据库的三大范式)

news/2024/11/15 0:35:51/文章来源:https://www.cnblogs.com/yssgxxy/p/18373593

什么是范式?
范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。

最常用的三大范式
第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)

ps:举个例子,地址列山东省青岛市市北区,可以这样存储,但是实际上不满足第一范式,因为省市区是可以分割的。再例如phone+address列存储为一个contact列,更不满足第一范式

——————————————————————————————————————————————————————————————————————————————————

第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)

如下学生成绩表(score):

stu_id(学生id)、kc_id(课程id)、score(分数)、kc_name(课程名)

表中主键为stu_id和kc_id组成的联合主键。满足1NF;非主键列score完全依赖于主键,stu_id和kc_id两个值才能决定score的值;而kc_name只依赖于kc_id,与stu_id没有依赖关系,它不完全依赖于主键,只依赖于主键的一部分,不符合2NF。

———————————————————————————————————————————————————————————————————————————————————

第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)

 表中sex_desc依赖于sex_code,而sex_code依赖于id(主键),从而推出sex_desc依赖于id(主键);sex_desc不直接依赖于主键,而是通过依赖于非主键列而依赖于主键,属于传递依赖,不符合3NF。

修改后

 

什么样的表越容易符合3NF?
非主键列越少的表。(1NF强调列不可再分;2NF和3NF强调非主属性列和主属性列之间的关系)

如代码表(sexcode),非主键列只有一个sex_desc;

或者将学生表的主键设计为primary key(id,name,sex_code,phone),这样非主键列只有address,更容易符合3NF。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity跳过闪屏页

github上一段代码,跳过Unity Logo启动屏: github链接: https://github.com/psygames/UnitySkipSplash/blob/main/SkipSplash.cs Unity API文档,Unity暴露了SplashScreen.Stop() 停止启动屏的API只需要写个静态方法,使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeL…

VulNyx - Responder

靶机ip 192.168.200.9 先nmap 扫描全端口这个22端口不知道有没有开 被过滤了 我们 收集一下靶机的ipv6地址 nmap用ipv6地址扫他的端口就能绕过 他的端口过滤 ping6 ff02::1 收集ipv6地址可以看到其实他的22端口就是开的访问80端口没啥东西dirsearch扫描一下 啥东西都没扫出来 …

为什么用Vite框架?来看它的核心组件案例详解

这些核心组件功能共同构成了 Vite 的强大能力,使它成为一个高效、灵活且易于使用的前端构建工具,如果你还没用上 Vite,那就抓紧搞起来吧。Vite 是一个前端构建工具,它以其快速的开发服务器和生产优化的打包器而闻名前端界,今天的内容,必须得唠唠 Vite 的关键能力,以下是…

抖音集团 FlinkSQL 性能优化探索及实践

在降本增效的大背景下,为满足业务对更高性能的需求,流式计算团队对 FlinkSQL 进行了深度优化。本文将聚焦这一实践,详解主要优化思路。本文作者:李精卫更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 背景 随着抖音集团内部对流式…

多线程和多线程同步

多线程和多线程同步多线程编程是现代软件开发中的一项关键技术,在多线程编程中,开发者可以将复杂的任务分解为多个独立的线程,使其并行执行,从而充分利用多核处理器的优势。然而,多线程编程也带来了挑战,例如线程同步、死锁和竞态条件等问题。本篇文章将深入探讨多线程编…

织梦dedeCMS怎么使用arclist标签调用自定义字段

{dede:arclist row=10 titlelen=24 orderby=pubdate idlist= col=2} [field:textlink/]([field:pubdate function=MyDate(m-d,@me)/])<br/> {/dede:arclist} row=‘10’ 返回文档列表总数typeid=‘’ 栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用&q…

[NOI2017] 游戏

先来讲一下到底什么叫K-SAT 先来看看2-SAT的准确定义那么对于k-SAT,不是说每个集合就有\(k\)个元素了(每个集合仍然只有两个元素,因为布尔变量的取值只有\(0\)和\(1\)),而是说给出的限制条件涉及\(k\)个元素,比如3-SAT那么对于这道题目,如果不考虑\(\text{x}\)的话,就是…

【待做】【整理】【域渗透系列】跨森林:Extra SID攻击

本文选自《内网安全攻防:红队之路》 由于微软将森林信任设计为安全边界,在默认情况下,即使我们完全控制了当前森林,也可能无法入侵其他受信任的森林(trusted forest)。 下面介绍在非默认条件下(但也比较常见),如何入侵一个受信任的森林。 在《内网安全攻防:渗透测试实…

织梦dedecms主页在哪个文件

DedeCMS的首页模板文件位置:/templets/default/index.html。其中default文件夹是默认的,如果你用的是其他模版,在后台可以查看的,进入后台>系统>系统基本参数>模板默认风格,后面的default就是当前使用的模板,首页文件就在这里面。 织梦内容管理系统(DedeCms) 以…

织梦DedeCMS关键词怎么替换

//高亮专用, 替换多次是可能不能达到最多次 function _highlight($string, $words, $result, $pre) {global $cfg_replace_num;$string = str_replace(", ", $string);uasort($words,create_function($a, $b,return strlen($a)>strlen($b);));扫码添加技术【解决问…

结构开发笔记(五):solidworks软件(四):绘制36x36方块摄像头基座

前言绘制36x36方块摄像头模型中的方块摄像头。  本篇描述详细绘制方法。 摄像头结构 绘制摄像头结构分析结构零件分为三块区域,线绘制固定底座,对应区域2   绘制方块摄像头步骤一:新建零件打开软件  创建零件:  步骤二:绘制固定底座的底座拉伸凸台,选择上视基准面…

RSS 教程完结

完结撒花🎉🎉🎉完结撒花🎉🎉🎉 都到了 4202 年了,居然还有人在用 RSS,甚至还有人在写 RSS 教程,真是不可思议🤔 就先写到这了,当然如果有新学到什么技巧,或看到一些好用的 RSS 阅读器,也还是会更新的。 参考了无数的文章/教程,才有了本系列教程,非常感谢…