关系数据库概述

为什么需要数据库?

因为应用程序需要保存用户的数据,比如Word需要把用户文档保存起来,以便下次继续编辑或者拷贝到另一台电脑。

要保存用户的数据,一个最简单的方法是把用户数据写入文件。例如,要保存一个班级所有学生的信息,可以向文件中写入一个CSV文件:

id,name,gender,score
1,小明,M,90
2,小红,F,95
3,小军,M,88
4,小丽,F,88

如果要保存学校所有班级的信息,可以写入另一个CSV文件。

但是,随着应用程序的功能越来越复杂,数据量越来越大,如何管理这些数据就成了大问题:

读写文件并解析出数据需要大量重复代码;
从成千上万的数据中快速查询出指定数据需要复杂的逻辑。
如果每个应用程序都各自写自己的读写数据的代码,一方面效率低,容易出错,另一方面,每个应用程序访问数据的接口都不相同,数据难以复用。

所以,数据库作为一种专门管理数据的软件就出现了。应用程序不需要自己管理数据,而是通过数据库软件提供的接口来读写数据。至于数据本身如何存储到文件,那是数据库软件的事情,应用程序自己并不关心:

┌──────────────┐
│ application  │
└──────────────┘▲│││read││write│││▼
┌──────────────┐
│   database   │
└──────────────┘

这样一来,编写应用程序的时候,数据读写的功能就被大大地简化了。

数据模型

数据库按照数据结构来组织、存储和管理数据,实际上,数据库一共有三种模型:

  • 层次模型
  • 网状模型
  • 关系模型

层次模型就是以“上下级”的层次关系来组织数据的一种方式,层次模型的数据结构看起来就像一颗树:

            ┌─────┐│     │└─────┘│┌───────┴───────┐│               │┌─────┐         ┌─────┐│     │         │     │└─────┘         └─────┘│               │┌───┴───┐       ┌───┴───┐│       │       │       │
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐
│     │ │     │ │     │ │     │
└─────┘ └─────┘ └─────┘ └─────┘

网状模型把每个数据节点和其他很多节点都连接起来,它的数据结构看起来就像很多城市之间的路网:

     ┌─────┐      ┌─────┐┌─│     │──────│     │──┐│ └─────┘      └─────┘  ││    │            │     ││    └──────┬─────┘     ││           │           │
┌─────┐     ┌─────┐     ┌─────┐
│     │─────│     │─────│     │
└─────┘     └─────┘     └─────┘│           │           ││     ┌─────┴─────┐     ││     │           │     ││  ┌─────┐     ┌─────┐  │└──│     │─────│     │──┘└─────┘     └─────┘

关系模型把数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定,它的数据模型看起来就是一个Excel表:

┌─────┬─────┬─────┬─────┬─────┐
│     │     │     │     │     │
├─────┼─────┼─────┼─────┼─────┤
│     │     │     │     │     │
├─────┼─────┼─────┼─────┼─────┤
│     │     │     │     │     │
├─────┼─────┼─────┼─────┼─────┤
│     │     │     │     │     │
└─────┴─────┴─────┴─────┴─────┘

随着时间的推移和市场竞争,最终,基于关系模型的关系数据库获得了绝对市场份额。

为什么关系数据库获得了最广泛的应用?

因为相比层次模型和网状模型,关系模型理解和使用起来最简单。

关系数据库的关系模型是基于数学理论建立的。我们把域(Domain)定义为一组具有相同数据类型的值的集合,给定一组域D1,D2,…,Dn,它们的笛卡尔集定义为D1×D2×……×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n},而D1×D2×……×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn),这里的R表示KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲%&^@!&#;!~%¥%

零基础SQL教程: 关系数据库概述 02相关推荐

  1. sql数据库教程百度云_绘画自学零基础入门教程|五天学会绘画pdf百度云下载!...

    绘画自学零基础入门教程|五天学会绘画pdf百度云下载!画画是可以让人留存记忆的事情.我自己就很喜欢画画来记录生活中一些特别的日子.场景还有我的家人朋友们.有时候,比照片更有故事感和纪念意义-有空拿出来 ...

  2. sql数据库教程百度云_【推荐】零基础水彩画入门教程|零基础水彩教程百度云...

    零基础水彩画入门教程|零基础水彩教程百度云! 照着教程画却总是画不好,这些水彩技法你真的学会了吗? 盲目地照着葫芦画瓢,不懂控制确实很难学会,可以关注一下公众号:每日学绘画,可以领取水彩电子书和全套视 ...

  3. ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course! 教程大小解压后:4.96G 语言:英语+中英文字幕(机译)时长 ...

  4. 计算机pscs6教程,photoshop CS6零基础入门教程

    <photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...

  5. 视频教程-ARDUINO零基础入门教程【代码编程篇】-Arduino

    ARDUINO零基础入门教程[代码编程篇] 精通各种单片机编程,有十年以上ARDUINO,51单片机/STM32/PIC/AVR编程,硬件设计,绘图,编程经验.熟悉各种常用传感器使用和物联网通讯 赵勇 ...

  6. 最适合Java初学者学习的Java零基础入门教程

    各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java. 因此,也是吸引了不少年轻人投入到Java的学习之中. 所以,今天 ...

  7. Python零基础入门教程( 快速入门)

    前言 学无止境,无止境学. 今天要给大家分享的是<Python零基础入门教程01 快速入门>,这是一个系列的教程,从零基础到项目实战.在本教程中,我会给大家介绍Python入门的一些基础知 ...

  8. python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)

    一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...

  9. Wireshark零基础使用教程(超详细)

    「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> Wiresha ...

最新文章

  1. 【Java】类与对象 - 对象的组合
  2. 如何在内嵌 css 中编写: hover_优秀 CSS 代码的 8 个编写技巧!
  3. android 控件id为0,Android Studio错误:(3,0)未找到ID为“com.android.application”的插件...
  4. jQuery之动画效果
  5. hadoop1.2.1伪分布模式安装教程
  6. Ubuntu图形界面配置开机自启动
  7. ABAP:利用SAP定时器自动刷新LIST
  8. try catch用法_synchronized用法总结
  9. jgGrid扩展 显示查询用时
  10. 华为云内容审核—性能更加狂野,价格更加腼腆
  11. Python面试-DB相关
  12. [RHEL5企业级Linux服务攻略]--第5季 Sendmail服务全攻略之高级配置
  13. MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
  14. 命令行安装DHCP服务器
  15. Zoox 的自动驾驶汽车方法
  16. 管家婆财贸双全TOP系列服务器,管家婆财贸双全II
  17. 汉化后的eclipse改成英文版
  18. 三线压力传感器原理_压力传感器接线图及原理介绍
  19. 看到“东大研究生”吐槽华为cpu,海思,请知道的人科普一下吧,我抛砖引玉
  20. 安卓点击跳转到微信公众号

热门文章

  1. .net html转换word,asp.net 实现在线浏览word文档(word转html)
  2. 英语中从句的引导词【。。。】
  3. 如何在地图上画柱状图python_python使用matplotlib绘制柱状图教程
  4. OD 如何设置/选择高亮方案
  5. centos linux 7 IP配置,CentOS 7 配置IP
  6. 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计
  7. .netcore-abp-虚拟文件系统
  8. Linux系统分析与编程-复习总结
  9. 【Edge游览器设置全局Dark模式】
  10. rscp胎位图_【胎位检查解读】胎位检查什么时间最好_什么时候做胎位检查 - 妈妈网百科...