零基础SQL教程: 关系数据库概述 02
关系数据库概述
为什么需要数据库?
因为应用程序需要保存用户的数据,比如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相关推荐
- sql数据库教程百度云_绘画自学零基础入门教程|五天学会绘画pdf百度云下载!...
绘画自学零基础入门教程|五天学会绘画pdf百度云下载!画画是可以让人留存记忆的事情.我自己就很喜欢画画来记录生活中一些特别的日子.场景还有我的家人朋友们.有时候,比照片更有故事感和纪念意义-有空拿出来 ...
- sql数据库教程百度云_【推荐】零基础水彩画入门教程|零基础水彩教程百度云...
零基础水彩画入门教程|零基础水彩教程百度云! 照着教程画却总是画不好,这些水彩技法你真的学会了吗? 盲目地照着葫芦画瓢,不懂控制确实很难学会,可以关注一下公众号:每日学绘画,可以领取水彩电子书和全套视 ...
- ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course
ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course! 教程大小解压后:4.96G 语言:英语+中英文字幕(机译)时长 ...
- 计算机pscs6教程,photoshop CS6零基础入门教程
<photoshop CS6零基础入门教程>针对零基础学员开设,以教案和实际操作演示相结合的方式,详细地介绍adobe photoshop cs6的各项工具和命令.由浅入深.循序渐进地全面 ...
- 视频教程-ARDUINO零基础入门教程【代码编程篇】-Arduino
ARDUINO零基础入门教程[代码编程篇] 精通各种单片机编程,有十年以上ARDUINO,51单片机/STM32/PIC/AVR编程,硬件设计,绘图,编程经验.熟悉各种常用传感器使用和物联网通讯 赵勇 ...
- 最适合Java初学者学习的Java零基础入门教程
各种各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java. 因此,也是吸引了不少年轻人投入到Java的学习之中. 所以,今天 ...
- Python零基础入门教程( 快速入门)
前言 学无止境,无止境学. 今天要给大家分享的是<Python零基础入门教程01 快速入门>,这是一个系列的教程,从零基础到项目实战.在本教程中,我会给大家介绍Python入门的一些基础知 ...
- python怎么输出浮点数_python 零基础入门教程第 2 章:基本数据类型 (一)
一.什么是数据类型 编程语言通过一些复杂的计算机物理底层机制,创造不同类型的数据,用来表示现实世界中的不同信息,以便于计算机更好的存储和计算. 每种编程语言都会有一些基本的数据类型用来表示现实世界中的 ...
- Wireshark零基础使用教程(超详细)
「作者主页」:士别三日wyx 「作者简介」:CSDN top100.阿里云博客专家.华为云享专家.网络安全领域优质创作者 「专栏简介」:此文章已录入专栏<网络安全快速入门> Wiresha ...
最新文章
- 【Java】类与对象 - 对象的组合
- 如何在内嵌 css 中编写: hover_优秀 CSS 代码的 8 个编写技巧!
- android 控件id为0,Android Studio错误:(3,0)未找到ID为“com.android.application”的插件...
- jQuery之动画效果
- hadoop1.2.1伪分布模式安装教程
- Ubuntu图形界面配置开机自启动
- ABAP:利用SAP定时器自动刷新LIST
- try catch用法_synchronized用法总结
- jgGrid扩展 显示查询用时
- 华为云内容审核—性能更加狂野,价格更加腼腆
- Python面试-DB相关
- [RHEL5企业级Linux服务攻略]--第5季 Sendmail服务全攻略之高级配置
- MSSql使用SQL语句快速查看表对的就说明,及表字段描述及字段类型
- 命令行安装DHCP服务器
- Zoox 的自动驾驶汽车方法
- 管家婆财贸双全TOP系列服务器,管家婆财贸双全II
- 汉化后的eclipse改成英文版
- 三线压力传感器原理_压力传感器接线图及原理介绍
- 看到“东大研究生”吐槽华为cpu,海思,请知道的人科普一下吧,我抛砖引玉
- 安卓点击跳转到微信公众号
热门文章
- .net html转换word,asp.net 实现在线浏览word文档(word转html)
- 英语中从句的引导词【。。。】
- 如何在地图上画柱状图python_python使用matplotlib绘制柱状图教程
- OD 如何设置/选择高亮方案
- centos linux 7 IP配置,CentOS 7 配置IP
- 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计
- .netcore-abp-虚拟文件系统
- Linux系统分析与编程-复习总结
- 【Edge游览器设置全局Dark模式】
- rscp胎位图_【胎位检查解读】胎位检查什么时间最好_什么时候做胎位检查 - 妈妈网百科...