数据库设计原则

news2024/11/18 5:29:01

一、前言

在平时的web系统开发中,数据库是必不可少的一部分,没有了数据库,程序处理的数据就不知如何更好安放。然而数据库没有很好的设计,使用起来也是很不好用的。本节就介绍一下数据库得到基础知识和设计原则。

二、为什么需要进行数据库设计

修建茅屋需要设计吗?

 

修建大厦需要设计吗?

结论:当数据库比较复杂时我们需要设计数据库

在大型的实际项目中,要存储的数据的种类非常多,数据量也非常大。我们面对的问题有:
    1、怎么保证有用数据不被遗漏?
    2、怎么存储更节约存储空间?
    3、用多少张表来存储数据比较合适(应该包含哪些表)?
    4、每张表存储什么数据比较合适(表应该包含哪些字段)?
    5、从多表之间的关系是怎样的?
    6、怎样保证数据的效率?
    7、怎么防止数据的不一致性?
    8、如果要进一步扩展项目,怎么样方便扩展?
    9、数据库怎样设计,可以让程序更容易实现? 

良好的数据库设计
节省数据的存储空间
能够保证数据的完整性
方便进行数据库应用系统的开发


糟糕的数据库设计
数据冗余、存储空间浪费
内存空间浪费
数据更新和插入的异常
 

三、数据库基础知识

实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。它也可以是虚拟的,比如说“老师与学校的关系”。

属性:实体所具有的某一特性,也称为字段或数据项,属性包括属性名、属性值和属性值类型三部分内容。比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。

元组:表中的一行就是一个元组,也称为记录。
分量:元组的某个属性值。在一个关系数据库中,它是一 个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码,也称为外键。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。

实体与实体之间的关系

实体间的关系是错综复杂的,但就两个实体的关系来说,
主要有以下3种情况:
一对一的关系(1:1):对于实体集A中的每一个实体,实体集B中至多有一个实体与之关联;记为1:1。
例如:一个中华人民共和国合法公民只有一张身份证,而一张身份证只属
于一个公民,所以是一对一的关系。

一对多(1:N)或多对一(N:1)的关系:对于实体集A中的每一个实体,实体集B中有N个实体与之关联;返过来,对实体集B中的每一个实体,实体集A中至多有一个实体与多联系。
例如:一个班内有多名学员,一个学员只能属性一个班;即班级与学员之
间具有一对多的关系;返过来说,学员与班级之间具有多对一的关系。

多对多(M:N)的关系:
例如:学员在选课时,一个学员可以选多门课程,一门课程也可以被多个
学生选取,则学员与课程之间具有多对多的关系。
 

四、数据库设计原则

仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构

规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:
第一范式(1st NF -First  Normal Fromate)
第二范式(2nd NF-Second  Normal Fromate)
第三范式(3rd NF- Third  Normal Fromate)

第一范式的目标是:确保每列的原子性,属性不可分

如果每列(或者每个属性值)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

第二范式其目标是:确保表中每列都和主键相关(要求每个表只描述一件事情); 例如:该表主要用来描述订单,所以将订单编号设为主键,定购日期和订单编号主键列相关,但产品编号列和主键列没有直接的关联,应将该列删除,放入产品表中。

 

第三范式其目标是:确保每列都和主键列直接相关,而不是间接相关; 例如:“顾客姓名”和“顾客编号”相关,“顾客编号”和“订单编”号又相关,最后结果:“顾客姓名”也和“订单编号”相关。为满足3NF,应去掉“顾客姓名”列,将此列放入客户表中

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NEFU离散数学实验3-递推方程

相关概念 递推方程是指一种递归定义,它将问题拆分成更小的子问题,并使用这些子问题的解来计算原问题的解。离散数学中,递推方程通常用于描述数列、组合问题等。 以下是一些递推方程相关的概念和公式: 1. 递推公式:递推…

【嵌入式开发 Linux 常用命令系列 9 -- linux系统终端命令提示符设置(PS1)】

文章目录 Linux PS1 介绍PS1 纯文本和特殊的转义序列PS1 颜色设置 Linux PS1 介绍 在Linux中,PS1(Prompt String 1)是一个环境变量,用来定义shell命令提示符的显示内容和格式。当你在终端中输入命令时,PS1定义的就是那…

共享WiFi贴推广项目怎么操作?

共享WiFi贴推广项目是一种热门的商业共享服务项目,旨在为用户提供便捷的网络连接,并为代理商带来可观的收益。在本文中,我们将探讨该项目的操作方法,帮助你在推广共享WiFi贴时取得成功。 首先,你需要选择适宜的商户或商…

Ansys Zemax | 解像力仿真设计

附件下载 联系工作人员获取附件 实现 本节介绍了一个模拟解像力图表的例子。 作为一个例子,我们将使用一个等倍率的光学系统,如下图所示: 首先,检查该光学系统的MTF。 分辨率图是用黑白的二进制图像创建的。 MTF设置如下图所…

【JAVA学习笔记】46 - (43)第十一章作业

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter11/src/com/yinhai/homework11 1.枚举类 1.创建一个Color枚举类 2.有RED,BLUE,BL ACK,YELLOW,GREEN这个五个枚举值/对象: 3. Color有三 个属性redValue, greenValue, blueValue, 4.创建构…

uniapp 运行项目在 Android 模拟器中

在开发App时,无论是使用 Flutter 还是 React native,还是使用uni-app 开发跨端App时,总是需要运行调试。一般调试分为两种。 第一:真机调试 第二:模拟器调试 真机调试的好处是可以看到更好的效果,缺点就是…

LibreOffice编辑excel文档如何在单元格中输入手动换行符

用WPS编辑excel文档的时候,要在单元格中输入手动换行符,可以先按住Alt键,然后回车。 而用LibreOffice编辑excel文档,要在单元格中输入手动换行符,可以先按住Ctrl键,然后回车。例如:

业务设计——分库分表下多种登录方式实现【用户名、邮箱、手机号】

业务需求: 实现多种方式的登录流程,要求对用户数据采用分库分表来实现水平扩展 难点分析 难点一 用户登录方式需智能匹配,确保根据其输入的数据类型来确定登录方式,查询数据库指定字段,避免无用查询导致资源浪费 难…

CVPR2023 即插即用 SCConv (附代码)

论文地址:SSCONV 代码地址:https://github.com/cheng-haha/ScConv 1.是什么? SCConv是一种高效的卷积模块,用于压缩卷积神经网络中的冗余特征,以减少计算负荷并提高模型性能。它由空间重构单元(SRU)和信道重构单元(…

如何保障单病种上报的填报效率、质量监控及数据安全

在国家平台对单病种病例进行手工直报,是大多数医院最初获知《关于进一步加强单病种质量管理与控制工作的通知》后的首选方式。随着医院对上报流程与内容的逐步熟练,质控管理的需求开始凸显并占据主要地位,同时为了能更好地适应国家平台的频繁…

基于STM32设计的万能红外遥控器(学习型)

一、项目设计 基于STM32设计的万能红外遥控器(学习型) 随着智能家居和物联网技术的发展,红外遥控器作为传统的智能设备控制方式逐渐被淘汰,但在某些场景下,红外遥控器仍然是一种快速、简单的操作方式,当前介绍了一种基于STM32微控制器设计的红外遥控器,支持接收解码功能和…

谁在成为产业供应链的“新发动机”?

京东供应链金融路径不仅是金融的助力和加持,也更是京东供应链金融科技在产业侧的更有价值表达,推动当下产业数字互联从点到线,再到网的更大程度协同。 作者|皮爷 出品|产业家 2022年,一款名为“海油e融”的融资产品出现在市面…

CSS色域、色彩空间、CSS Color 4新标准 | 京东云技术团队

引言 近期,三大主流浏览器引擎均发布最新版本,支持W3C的CSS Color 4标准,包含新的取色方法color()和相应语法,可展示更多的色域及色彩空间,这意味着web端能展示更丰富更高清的色彩。虽然目前只有最新版本的现代浏览器…

非对称加密算法RSA的深度解析,在CTF中RSA题目

一、背景 现代密码体系中,主要分为两类,对称加密和非对称加密两大类。在安全性方面上,非对称加密以安全可靠,在互联网中特别广泛的使用,就如我们平时接触到的https的TLS等一些证书的实现,也深得非对称加密…

showdoc 文件上传 (cnvd-2020-26585)

showdoc 文件上传 (cnvd-2020-26585) 描述 ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc,你可以方便地使用markdown语法来书写出美观的API文档、数据字典文档、技术文档、在线excel文档等等。 api_page存在任意文…

漏洞复现-showdoc文件上传_v2.8.3_(CNVD-2020-26585)

showdoc文件上传_v2.8.3_CNVD-2020-26585 漏洞信息 showdoc 2.8.3 以下版本中存在安全漏洞CNVD-2020-26585文件上传漏洞 描述 ShowDoc是一个非常适合IT团队的在线API文档、技术文档工具。通过showdoc,你可以方便地使用markdown语法来书写出美观的API文档、数据字…

做国外问卷调查的工作靠谱吗?

哈喽大家好,我是橙河网络,最近网上都在传做问卷能赚美金的项目,也就是“海外问卷调查”,我在这跟大家简单唠唠它是个啥,做国外问卷调查的工作靠谱吗? 海外问卷调查,顾名思义,就是我…

开始学习Go编程

探索Go编程中的语法、数据类型和控制流 Go,又称为Golang,因其简单性、性能和效率而广受欢迎。在本文中,我们将深入研究构成Go编程语言基础的基本概念。从理解其语法和数据类型到掌握控制流和函数,我们将为您提供启动Go编程之旅所…

芋道前后端分离项目跳过登录

后端接口 1. nacos配置 根据以上两图可以发现芋道的跳过登录配置在nacos或者yml可以配置成如下样式 将所有需要跳过登录的方法写在permit-all_urls下级即可 2. PermitAll注解:不管登入,不登入 都能访问 注:如果一个页面有多个接口那么所有接口均需要写…

【算法-数组1】二分查找 和 移除元素

今天,带来XXX的讲解。文中不足错漏之处望请斧正! 理论基础 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标&#…