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

数据库设计三大范式

时间:2022-10-12 15:06:32浏览次数:53  
标签:范式 数据库 地址 表中 设计 主键 三大


为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

                 

在实际开发中最为常见的设计范式有三个:

1.第一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地址等多个部分进行存储,这样在对地址中某一部分操作的时候将非常方便。这样设计才算满足了数据库的第一范式.

                

2.第二范式(确保表中的每列都和主键相关)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

 

                 

3.第三范式(确保每列都和主键列直接相关,而不是间接相关)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。

标签:范式,数据库,地址,表中,设计,主键,三大
From: https://blog.51cto.com/u_15826214/5750752

相关文章

  • Django数据库迁移遇到的问题
    报错raiseMigrationSchemaMissing("Unabletocreatethedjango_migrationstable(%s)"%exc) Django 执行迁移生成表:pythonmanage.pymigrate报错:raiseMigrati......
  • 01数据库作用
    问题引出概念解决之道数据库简单原理图cmd连接数据库确保MYSQL服务在运行中(netstartmysql)mysql三层结构图数据在数据库中存储的方式(表)SQL语句分类......
  • 怎么减轻单次大查询数据库压力
    分多次查询,减少数据库压力varpageList=newDictionary<int,int>();//分批次查询varpageSize=10000;//每次返回1w条floattotal=总条数;vararr=(total/......
  • 数据库优化学习笔记_冷热分离
    冷热分离当数据库表数据体量大,即使是做了很多SQL层面的优化(索引、执行计划、优化语句、表结构设计)读写依然很慢可以考虑从冷热数据分离去提高速度热数据:对用户而言,是需......
  • 1.1.NIO-三大组件
    1、NIO基础non-blockingio非阻塞io1.1、三大组件1.1.1、Channel&Bufferchannel类似于stream,它就是读写数据的双向通道,可以从channel将数据读入buffer,也可以将buffer......
  • 收藏!想要拿到高薪Offer,数据库程序员要知道的几件事儿!
    "IT有得聊”是机械工业出版社旗下IT专业资讯和服务平台,致力于帮助读者在广义的IT领域里,掌握更专业、实用的知识与技能,快速提升职场竞争力。 导语:想找到一份程序员的工作,一......
  • 数据库访问通用类
       usingSystem;usingSystem.Configuration;usingSystem.Data;usingSystem.Data.SqlClient;namespaceDBHelper{publicclasssqlServerDBHelper......
  • 数据库的备份和还原
    1.命令行: *语法: *备份:mysqldump-u用户名-p密码数据库名称>保存的路径 *还原: 1.登录数据库 2.创建数据库 ......
  • SQL分类和DDL_操作数据库_创建&查询
    SQL分类:(1)DDL(DataDefinitionLanguage)数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等(2)DML(DataManipulationLanguage)数据操作语言......
  • 华为再出新品:GaussDB(for Influx)数据库的魅力了解一下
    华为再出新品:GaussDB(forInflux)数据库的魅力了解一下​华为自用的GaussDB(forInflux)数据库逐渐深入大众视野,到底值不值得期待?​时序数据库想必大家都有所耳闻,现在在很......