首页 > 数据库 >设计数据库

设计数据库

时间:2023-03-06 11:35:34浏览次数:40  
标签:范式 -- 数据库 查询 user 设计

1、规范数据库设计

1.1、为什么需要要设计数据库

当数据库比较复杂的时候,我们就需要设计了

糟糕的数据库设计:

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

良好的数据库设计:

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

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

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

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

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

1.2、三大范式

为什么需要数据规范化

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

三大范式(了解)

第一范式(1NF)

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

第二范式(2NF)

前提:满足第一范式

每张表只描述一件事情

第三范式(3NF)

前提:满足第一范式和第二范式

(规范数据库的设计)

规范性 和 性能的问题

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

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

标签:范式,--,数据库,查询,user,设计
From: https://www.cnblogs.com/studydreamlife/p/17183129.html

相关文章

  • C/C++课程设计题目[2023-03-06]
    C/C++课程设计题目[2023-03-06]课题1:公司考勤管理系统(一)、课程设计题目:某公司的考勤管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2......
  • 前端设计模式——工厂模式
    前端中的工厂模式是一种创建对象的设计模式,它可以让我们封装创建对象的细节,我们使用工厂方法而不是直接调用new关键字来创建对象,使得代码更加清晰、简洁和易于维护。在前......
  • DockQuery x 达梦 国产数据库生态“加速跑”
    「数字化」是当今社会最先进和最具穿透力的生产力,近十年里开展着气势磅礴的发展。而信创产业则是保障中国经济数字化转型平稳健康发展的基础。随着信创产业规模不断扩大,国......
  • mongodb 数据库
      一、简介MongoDB是一款流行的开源文档型数据库,从它的命名来看,确实是有一定野心的。 MongoDB的原名一开始来自于英文单词"Humongous",中文含义是指"庞大",即命......
  • SQL Server数据库的高性能优化经验总结二
    本文主要向大家介绍的是正确优化SQLServer数据库的经验总结,其中包括在对其进行优化的实际操作中值得大家注意的地方描述,以及对SQL语句进行优化的最基本原则,以下就是文章的......
  • SQL Server数据库优化大总结一
    SQL优化大总结:1.对查询进行优化,要尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。2.应尽量避免在where子句中对字段进行null值判断,否则将导致引......
  • Maven链接数据库(3.6)
     报错应该是Usermapper中查询语句错误 链接数据库之后的数据库语句放在mapper文件夹下的UserMapper中 右键com.baidu.pojo→new→package→命名com.baidu.util(前缀......
  • Winfrom/CSharp中获取当前时间戳字符串、存储Sqlite数据库、时间戳转换与比较大小
    场景Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/129322345在上面Winform中操作Sql......
  • navicat登录Postgres数据库
    navicat登录Postgres数据库1、登录数据库[[email protected]]#su-postgresLastlogin:FriMar313:47:40CST2023onpts/1su:warning:cannotch......
  • 计算机基础_设计模式
    熟练使用前端常用的设计模式编写代码如单例模式、装饰器模式、代理模式等 发布订阅模式和观察者模式的异同以及实际应用一、定性区别首先,观察者是经典软件设计模式中......