首页 > 数据库 >数据库的归约,三大范式(规范数据库设计)

数据库的归约,三大范式(规范数据库设计)

时间:2024-08-01 14:19:34浏览次数:9  
标签:范式 数据库 归约 user 设计 三大

数据库的归约,三大范式(规范数据库设计)

为什么要设计

糟糕的数据库设计:

  • 数据冗余,浪费空间
  • 数据库插入和删除都会麻烦、异常【屏蔽使用物理外键】
  • 程序性能差

良好的数据库设计:

  • 节省内存空间
  • 保证数据库的完整性
  • 方便我们开发

软件开发中,关于数据库的设计

  • 分析需求:分析业务和需要处理的数据库的需求
  • 概要设计:设计关系图E-R图

设计数据库的步骤:(个人博客)

  • 收集信息,分析需求
    • 用户表(用户登录注销、用户的个人信息,写博客,创建分类)
    • 分类表(文章分类,谁创建的)
    • 文章表(文章的信息)
    • 友链表(友链信息)
    • 评论表
    • 自定义表(系统信息、某个关键的字、一些主字段) key:value
  • 标识实体(把需求落实到每个字段)
  • 标识实体 之间的关系
    • 写博客:user --> blog
    • 创建分类:user --> category
    • 关注:user --> user

三大范式

为什么需要数据规范化

  • 信息重复
  • 更新异常
  • 插入异常
    • 无法正常显示信息
  • 删除异常
    • 丢失有效信息

三大范式(规范数据库的设计)

第一范式(1NF)

原子性:保证每一列不可再分

第二范式(2NF)

前提:满足第一范式

每张表只描述一件事情

第三范式(3NF)

前提:满足第二范式

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

规范性 和 性能 的问题

关联查询的表不得超过三张表

  • 考虑商业化的需求和目标,(成本、用户体验)数据库的性能更重要
  • 在规范和性能的问题上,适当考虑一下 规范性
  • 故意给某些表增加一些冗余字段(多表查询变为单表查询)
  • 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)

标签:范式,数据库,归约,user,设计,三大
From: https://www.cnblogs.com/shisi2001/p/18336572

相关文章

  • 腾讯云数据库认证官方的考试费是多少钱?
    腾讯云的认证项目很多,包括云计算、大数据、人工智能等多个技术领域方向的认证路径,每个方向包括工程师(Associate)、高级工程师(Professional)、专家(Expert)三个不同的等级。 对于数据库方面,腾讯云的这三个级别的考试费用分别是:TCCA工程师:1200元TCCP高级工程师:1800元TCCE专......
  • nodejs 使用 sequelize 实现 mysql数据库的批量插入
    直接上代码:/***设置mysql连接,返回连接实例。连接格式:账户:密码@数据库地址/具体数据库名称***/constsetConnect=()=>{constsequelize=newSequelize(`mysql://${你的mysql地址}`,{logging:(...msg)=>Logger.INSTANCE.inf......
  • 6.三大认证等
    【一】三大认证#认证self.perform_authentication(request)#权限self.check_permissions(request)#频率self.check_throttles(request)【二】认证1)使用新建一个py文件(authentication.py)写一个类继承BaseAuthentication重写authenticate函数fromrest_framew......
  • WebApi连接数据库报错:尝试加载Oracle客户端时引发BadImageFormatException
    出现的问题  今天在公司用C#搭建一个WebApi服务,接受请求并连接数据库进行查询,但连接数据库时报错:尝试加载Oracle客户端时引发BadImageFormatException。如果安装32位客户端组件的情况下以64位模式运行,将出现此问题。问题点  我之后了解点,确定了OracleClient客户端确实安装......
  • DevExpress WPF中文教程:如何将GridControl的更改发布到数据库?
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • 使用 python 将 JSON 数据空值导入数据库。收到此错误 - 数据需要字符串或类似字节的
    我正在尝试使用python将JSON数据集导入到我的PostgreSQL数据库,但在尝试导入null值时会抛出错误。表的名称是Loan_info。我在python中尝试过此操作:-forfieldinloan_info:ifloan_info[field]in['Null','null',None]:......
  • 在 pyqt6 QTextEdit 中显示数据库查询
    我想实现以下非常小的项目,即用户应该输入产品名称,Python应该在数据库中搜索并在pyqt6桌面应用程序中显示查询结果,为此我已经实现了以下基本GUI形式:这里用户输入产品,然后单击按钮,结果将显示在空白处,即:QTextEdit(),最有趣的部分是这个功能:defreturn_product_......
  • 基于Java+SSM+jsp的医药管理系统的设计与实现(源码+数据库+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SSM框架前端框架JSP可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于ASP.NET的医院病历管理系统设计与实现(源码+数据库+部署)
    文章目录前言详细视频演示项目运行截图技术框架后端采用.NET框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 达梦数据库的DM 数据守护(DM Data Watch)启动和关闭顺序
    达梦数据库的DM数据守护(DMDataWatch)启动和关闭顺序一数据守护关闭1退出监视器2关闭备机的守护进程[dmdba@test2arch]$DmWatcherServiceDMSVR02stopStoppingDmWatcherServiceDMSVR02:[OK]3关闭主机的守护进程[dmdba@test1~......