对于大型互联网公司来说,数据的重要性可能比软件本身更重要。据说淘宝业务系统的开发大概消耗约7000万人民币,而其保存的用户数据的价值远高于此,加上数据分析算法的加持,其产生的价值和收益无疑是巨大的,远远超过静态的程序。

2、数据如何存储?

主流的操作系统都是基于文件的操作系统,Linux 下那句著名的“Linux 一切皆文件”更能说明这一点,所以数据的也是使用文件进行存储。

3、为什么使用数据库管理数据?

例如:可以使用 json 文件保存员工信息:

[
{"name":"张三", "age":25, "salary":5000, "dept": "dev"},
{"name":"李四", "age":24, "salary":7000, "dept": "dev"},
{"name":"王五", "age":35, "salary":15000, "dept": "dev"},
{"name":"赵六", "age":25, "salary":4000, "dept": "test"},
]

对于关系简单、数量小的数据可使用普通文件存储。而当存储数据量大、关系复杂的数据时,数据检索效率太低。例如无法进行条件查询和多表的关联查询数据等,这时就得借助专业的数据库软件。

4、什么是数据库管理系统?

数据库系统(DBMS)是指一个能为用户提供信息服务的系统。

5、什么是关系型数据库?

  • 关系型数据库系统(RDBMS)指使用了关系模型的数据库系统
  • 关系模型中,数据分类存放在不同表中,数据之间可以有联系

6、什么是非关系型数据库?

非关系型数据库又称NoSQL,也是数据分类存放,但数据之间没有关联关系。

7、为什么要使用NoSQL数据库?

NoSQL数据库是关系型数据库的补充,典型应用场景如秒杀库存,关系型数据库使用多线程访问,容易出现超卖等很难处理的问题,而Redis数据库使用单线程,就解决的超卖的问题;还有关系型数据库使用前需要先建立表结构,定义约束等,在高速写入时效率较低,对于海量的低价值数据,会极大降低数据库的处理效率,如登录信息、通知消息等就很适合保存在NoSQL中,NoSQL没有表结构,数据读写没什么校验,读写效率远超关系型数据库。

8、常用NoSQL数据库及使用场景

  • MongoDB:保存新闻或较长的文章字符串等
  • Redis:保存秒杀抢购的商品、热点微博信息等

关于数据库范式

构造数据库需要遵循一定的规则,这种规则就是范式。目前关系型数据库有6种范式,一般只需满足第三范式即可。

第一范式:原子性

数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复属性。

如下数据表不符合第一范式:

student_id name class
1001 张三 一年级三班

修改后:

student_id name grade class
1001 张三 一年级 三班

第一范式是数据库的基本要求,不满足第一范式就不是关系型数据库。

第二范式:唯一性

数据表中的每一条记录必须是唯一的的,通常使用添加主键作为唯一标识。

如下数据不符合第二范式:张三同一天考了两次试,无法区分两次记录

student_id name exam_time
1001 张三 2021-02-15
1001 张三 2021-02-15

修改后:

id student_id name exam_time
1 1001 张三 2021-02-15
2 1001 张三 2021-02-15

第二范式的提出是为了避免保存重复数据,浪费空间。

第三范式:关联性

每列都与主键有直接关系,不存在传递依赖。

如下数据不符合第三范式:

class name english_score math_score
三班 张三 90 100

修改后:

class name student_id
三班 张三 1001
student_id english_score math_score
1001 90 100

当满足了第三范式之后,就同时满足了第一和第二范式

按照第三范式创建数据表,将来检索和提取数据时会很方便。按照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联。

MySQL:初识数据库的更多相关文章

  1. Mysql初识数据库《五》初识sql语句

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要 ...

  2. mysql 初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  3. mysql 初识数据库 目录

    数据库管理软件的由来 数据库概述 MySQL介绍 Window版本 安装mysql linux 安装mysql yum方式 windows平台mysql密码设置 windows平台mysql密码破解设 ...

  4. Mysql初识数据库《四》mysql安装与基本管理

    一.MySQL介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司.MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是 ...

  5. Mysql初识数据库《三》数据库概述

    1 什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机 在计算机中描述一个事物 ...

  6. Mysql初识数据库《二》数据库管理软件的由来

    数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件都运 ...

  7. MySQL初识数据库

    为什要用数据库 第一,将文件和程序存在一台机器上是很不合理的. 第二,操作文件是一件很麻烦的事 你可以理解为 数据库 是一个可以在一台机器上独立工作的,并且可以给我们提供高效.便捷的方式对数据进行增删 ...

  8. Mysql初识数据库《一》下载安装Mysql

    #1.下载:MySQL Community Server 5.7.16 http://dev.mysql.com/downloads/mysql/ #2.解压 如果想要让MySQL安装在指定目录,那么 ...

  9. Mysql(一):初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  10. 第一章 初识数据库Mysql

    初识数据库Mysql(my)   在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...

随机推荐

  1. Preliminaries for Benelux Algorithm Programming Contest 2019

    A. Architecture 如果行最大值中的最大值和列最大值中的最大值不同的话,那么一定会产生矛盾,可以手模一个样例看看. 当满足行列最大值相同条件的时候,就可以判定了. 因为其余的地方一定可以构 ...

  2. poj3415 Common Substrings (后缀数组+单调队列)

    Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 9414   Accepted: 3123 Description A sub ...

  3. Codeforces Round #682 (Div. 2) C. Engineer Artem (构造)

    题意:给你一个\(n\)x\(m\)的矩阵,你可以任意位置的元素+1,只能加一次,问你如何使得任意位置的元素不等于它四周的值.输出操作后的矩阵. 题解:构造,矩阵中某两个下标的和的奇偶性一定和四周的都 ...

  4. log4net GetLogger(source).IsInfoEnabled = false

    GetLogger(source).IsInfoEnabled = false解决办法 在.net core中需要把log4net.config放到 ITCP.Web\ITCP.Web\obj\Rel ...

  5. 流媒体传输协议之 RTP(下篇)

    本系列文章将整理各个流媒体传输协议,包括 RTP/RTCP,RTMP,希望通过深入梳理协议的设计细节,能够给流媒体领域的开发者带来一定的启发. 作者:逸殊 审核:泰一 接上篇:< 流媒体传输协议 ...

  6. codeforces 920E(非原创)

    E. Connected Components? time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  7. redis字符串-sds

    redis自己实现了一种名为简单动态字符串的抽象类型(simple dynamic string)作为字符串的表示.下面将简单介绍sds的实现原理. 一.sds的结构

  8. js uppercase first letter

    js uppercase first letter const str = `abc`; str.slice(0, 1).toUpperCase(); // "A" str.sli ...

  9. CDN 工作原理剖析

    CDN 工作原理剖析 CDN / Content Delivery Network / 内容分发网络 https://www.cloudflare.com/zh-cn/learning/cdn/wha ...

  10. Elastic Search 原理剖析

    Elastic Search 原理剖析 Elasticsearch 是一个开源的分布式 RESTful 搜索和分析引擎,能够解决越来越多不同的应用场景. 搜索引擎 refs https://www.e ...