zoukankan      html  css  js  c++  java
  • MySQL:初识数据库


    对于大型互联网公司来说,数据的重要性可能比软件本身更重要。据说淘宝业务系统的开发大概消耗约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

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

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

  • 相关阅读:
    oracle常规操作
    shell 的算数运算
    sed 命令小结
    swing
    索引失效
    poj--1258--Agri-Net(最小生成树)
    CodeForces--626C--Block Towers (二分)
    Codeforces--629A--Far Relative’s Birthday Cake(暴力模拟)
    Codeforces--629B--Far Relative’s Problem(模拟)
    hdoj--5104--Primes Problem(素数打表)
  • 原文地址:https://www.cnblogs.com/bqzzz/p/14403761.html
Copyright © 2011-2022 走看看