首页 > 数据库 >数据库设计三大范式

数据库设计三大范式

时间:2024-02-04 17:12:49浏览次数:29  
标签:范式 数据库 依赖于 id 课程 主键 三大 属性

第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列)
比如:姓名、年龄、电话,要分三个字段,不能放一个里面,方便查询。
第二范式(2NF):满足第一范式;且不存在部分依赖,即非主属性必须完全依赖于主属性。(主属性即主键;完全依赖是针对于联合主键的情况,非主键列不能只依赖于主键的一部分)
就是说你的数据不要造成主键重复。比如你把学生的姓名做主键,姓名是会重复的,要用学号做主键。
第三范式(3NF):满足第二范式;且不存在传递依赖,即非主属性不能与非主属性之间有依赖关系,非主属性必须直接依赖于主属性,不能间接依赖主属性。(A -> B, B ->C, A -> C)
比如一个表:学号、学生姓名、所选课程id、所选课程老师。学生姓名、所选课程id 依赖于 学号,所选课程老师 依赖于 所选课程id。
不过一般复杂的表为了避免连接查询都会有冗余字段,违反第三范式很正常。

标签:范式,数据库,依赖于,id,课程,主键,三大,属性
From: https://www.cnblogs.com/xsj1989/p/18006539

相关文章

  • 鱼和熊掌如何兼得?一文解析 RDS 数据库存储架构升级
    在2023年云栖大会上,阿里云数据库产品事业部负责人李飞飞在主题演讲中提到,瑶池数据库推出“DB+存储”一体化能力,结合人工智能、机器学习、存储等方法和创新能力,实现BufferPoolExtension能力和智能冷温热数据分层能力。在大会的《云数据库RDS年度发布与最佳实践》演讲中,阿里......
  • java代码实现自动生成数据库表er图
    最近有同事看到字节跳动产品设计文档里有数据库表er图。就想问问又没有现成的工具也给直接生成一个er图,经查找验证发现并没有。因为现在表关系都是用的逻辑外键而非物理外键约束的,所以像navicat等工具就算生成了也没有描述关系的连接线。那么为了满足需求,这边就略微出手写了个代码......
  • Oracle向数据库插入日期格式数据
    插入系统日期insertintostudent(sno,sname,birthdate)values(007,'omit',sysdate);插入Oracle数据库指定格式的日期insertintostudent(sno,sname,birthdate)values(008,'Ding','18/11月/2022');使用todate()插入其他格式的日期(最常用)insertintostudent(sno,sname,......
  • 解决缓存与数据库同步下的同步锁问题之分段锁
    契子  在实际业务会我们会使用第三方的缓存例如:Reids、Memcache等;但是,并且我们在查询使用缓存时都得尽可能的保证缓存的一致性,在读取时得保证尽可能的保证缓存拿到的是数据库的最新数据,那么在实现的逻辑上一般都为这样:1、请求线程先读取缓存实现2、如果缓存没有数据的话触发......
  • 最新中国数据库排行出炉:阿里自研PolarDB首次登顶!
    今天,数据库社区“墨天轮”发布了最新的一期中国数据库流行度排行榜,阿里云自研云原生数据库PolarDB首次登顶,并刷新了榜单总分纪录。该榜单根据搜索引擎数据、核心案例数、资质数量、专利数、论文数等标准,对目前主流的国产数据库进行综合评比,体现了数据库在互联网上的流行度。在2024......
  • 【数据库】SQL 错误 [42P10] ERROR SELECT DISTINCT ON expressions must match ini
    SQL错误[42P10],表示在使用SELECTDISTINCTON语句时,表达式必须与初始的ORDERBY表达式匹配。这个错误通常发生在你尝试对不同的列进行去重操作时,而这些列并没有在ORDERBY子句中明确指定。为什么会出现这个错误?当你使用SELECTDISTINCTON语句时,你需要提供一个或多个......
  • 第一章:初识数据库
    第一章:初识数据库本章主要讲解数据库安装和数据库基本介绍,考虑易用性及普及度,本课程采取mysql进行教学。1.1初识数据库数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。该数据集合称为数据库(Database,DB)。用来管理数据库的计算机系统称为数据库管......
  • 安卓开发五——创建数据库和增加数据
    packagecom.example.myapplication;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;publicclassDBHelperextendsSQLiteOpenHelper{privatestaticintDB_VERSION=1;......
  • 金蝶云星空BOS界面修改文本长度后,无法同时修改数据库
     业务背景文本长度默认255不够用,过长截断。 操作BOS签出元数据,修改长度为1000,保存   查询数据库发现长度没有跟随BOS配置 只能手工执行了数据库执行脚本,即可解决问题--sqlserver修改字段长度ALTERTABLET_STK_MISCELLANEOUSALTERCOLUMNFNOTEnvarch......
  • 金蝶云星空数据库根据仓库和仓位查询内码(SQL脚本)
    SELECTa.仓库ID,a.仓库名称,d.仓位ID,d.仓位名称,c.内码FROM(SELECTa.FSTOCKID'仓库ID',b.FNAME'仓库名称'FROMT_BD_STOCKaINN......