数据库从头学起

当然我们从头学习数据库内容,对于我自己来说,我需要学习的是基本数据库操作的方法,我学习基础,然后一点点丰富自己的库存容量

我们在学习数据库前需要新建一个数据库容器,在linux中新建也可以,利用几句简单的数据命令就可以在自己的系统中新建一个数据库。当然这个数据库跟你在什么平台上创建并没有太大关系https://docs.microsoft.com/zh-CN/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash这个网址可以帮助你创建一个属于你的数据库。

我们学习数据库前,需要一些准备工作,比如一些数据的表格,当然这些都很好操作,只要链接上自己的数据库就行了。

我的话选择利用vs code 超链接到我在ubantu操作系统中自己建立的数据库,当然我们新建的数据库里面是没有任何数据的,我学习的资料来自一本书SQL必知必会 by 福达 ,非常好用的一本书,当然看我这篇文档的兄弟也可以不用去专门找这本书,我和大家一起学习。

在学习之前我们应该在其中准备好应该用到的数据文件,方便我们快速将其利用起来,这本书给了一些自动创建的文档https://forta.com/books/0135182794/,我们只需要将所有内容复制到我们自己的数据库命令中执行即可。

在这本书后有自己专属的习题,大家可以一起来做一下,官方也给出了答案https://forta.com/books/0135182794/challenges/

这里面我们要用到几个表格:

Vendors表的列


    vend_id                  |              唯一的供应商ID
    vend_name                |              供应商名
    vend_address             |              供应商的地址
    vend_city                |              供应商所在城市
    vend_state               |              供应商所在州
    vend_zip                 |              供应商地址邮政编码
    vend_country             |              供应商所在国家

Products表的列


    prod_id                 |               唯一的产品ID
    vend_id                 |               产品供应商ID(关联到Vendors表中的vend_id)
    prod_name               |               产品名
    prod_price              |               产品价格
    prod_desc               |               产品描述

Customers表的列


    cust_id                 |               唯一的顾客ID
    cust_name               |               顾客名
    cust_address            |               顾客的地址
    cust_city               |               顾客所在城市
    pcust_state             |               顾客所在州
    cust_zip                |               顾客地址邮政编码
    cust_country            |               顾客所在国家
    cust_contact            |               顾客的联系名
    cust_email              |               顾客的电子邮件地址

Orders表的列


    order_num               |               唯一的订单号
    order_date              |               订单日期
    cust_id                 |               订单顾客ID(关联到Customers表的cust_id)

OrderItems表的列


    order_num               |               订单号(关联到Orders表的order_num)
    order_item              |               订单物品号(订单内顺序)
    prod_id                 |               产品ID(关联到Products表的prod_id)
    quantity                |               物品数量
    item_price              |               物品价格

首先我们应该学习数据库是有什么基本组成,我们在数据库中都存有什么东西。 数据库中是不区分大小写的,但是平常我们在利用他们的时候,会将语句,关键字,用大写来跟其他的东西区分开来。 数据库中我们会区分很多种数据库管理系统例如:(DB2,Oracle,SQLite等),每个系统中的一些输入方式都不太一样,我们可以在这里主要介绍一种管理系统来写如我们的管理程序。

数据

数据就是描述事物的符号记录集合。

数据库 DB

以某种有组织的方式存储的数据集合。存放数据的仓库。

长期存储在计算机内,有组织的、可共享的大量数据的集合。

数据库管理系统 DBMS

是位于用户与操作系统之间的一层数据管理软件(系统软件)

数据库管理员 DBA

负责全面管理和控制数据库系统。

数据库系统 DBS

指在计算机系统中引入数据库后的系统

是由数据库,数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

数据管理技术发展的推动力

  • 应用的需求
  • 计算机硬件技术的发展
  • 计算机软件系统的发展

数据管理技术的发展

人工管理阶段 文件系统阶段 数据库系统阶段
处于什么时代 20世纪50年代 20世纪50年代——60年代中期 20世纪60年代至今
背景 应用背景 科学计算 科学计算、管理 大规模管理
硬件背景 无直接存取存储设备 磁盘、磁鼓 大容量磁盘
软件背景 没有操作系统 有文件系统 有数据库管理系统
处理方式 批处理 联机实时处理、批处理 联机实时处理、分布处理,批处理
特点 数据的管理员 用户(程序员) 文件系统 数据库管理系统
数据面向的对象 某一应用程序 某一应用 现实世界
数据的共享程度 无共享,冗余度极大 共享性差,冗余度大 共享性高,冗余度小
数据的独立性 不独立,完全依赖于程序 独立性差 具有高度的物理独立性和一定的逻辑独立性
数据的结构化 无结构 记录内有结构,整体无结构 整体结构化,用数据模型描述
数据控制能力 应用程序自己控制 应用程序自己控制 有数据管理系统提供数据安全性、完整性、并发控制和恢复能力

独立性

  • 物理独立性

    程序和用户不考虑存储过程和方式

  • 逻辑独立性

    程序和用户不考虑结构的变化

信息处理的过程

  • 现实世界————概念模型

    由数据库设计人员完成,不依赖于任何具体的数据库系统。

  • 概念模型————逻辑模型

    由数据库设计人员完成,或者借助辅助设计工具完成,依赖具体的系统。

  • 逻辑模型————物理模型

    由DBMS完成。

数据库三大要素

  1. 数据结构
  2. 数据操作
  3. 数据的完整性约束条件

概念模型

  1. 实体

    客观存在并且可以相互区别的事物,任何独立的事物,抽象的概念,对象之间的联系。

  2. 属性

    一个实体可以有多个属性来描述,一个实体中某一特性称之为属性。

  3. 唯一标识实体属性集称为码(又称“候选码”)。

  4. 属性的取值范围称为这个属性的域。

    是一组具有相同数据类型的值的集合。

  5. 实体型

    具有相同属性的实体称为同类实体,用实体名和属性集共同表示同类实体称为实体型。

  6. 实体集

    同类实体的集合。

  7. 联系

  • 1:1 一对一 可隐含在实体对应的关系中
  • 1:n 一对多 可隐含在尸体对应的关系中
  • m:n 多对多 独立,直接用关系表示

完整性约束

  • 实体完整性
  • 参照完整性
    • 外码
  • 用户自定义完整性

关系

一张规范化的二维表。

关系的描述称为关系模式。

  • 列是同质的
  • 不同的咧可以出自统一个
  • 列的顺序可以任意交换
  • 任意两个远足的候选码数值不能相通
  • 原子不可再分

形式化表示

R(U,D,DOM,F)

  • R—–关系名
  • U—–组成该关系的属性名集合
  • D—–属性组U中属性所来自的域
  • DOM—–属性向域的映像集合
  • F—–属性间数据的依赖关系集合

关系类别

  • 基本表 实际存在的表,是实际存储数据的逻辑表示。
  • 查询表 查询结果对应的表
  • 视图表 由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

候选码

候选码 可以有多个

每个候选码可以包含很多属性。

笛卡尔积

可以用一张二维表来表示

笛卡尔积的结果是没有实际语义的

  • 元组 t
  • 分量 d
  • 基数 用来表示笛卡尔积的元组个数
  • 关系 r

主码属性一定是主属性

关系操作

  • 查询操作
  • 更新操作

关系数据语言

  • 关系代数语言

总结:

实体————个体独立存在

实体型————抽象出来的对同类实体的整体描述

实体集————是多个实体型的集合

表是一种结构化文件,可以用来存储某种特定类型的数据,当然数据库中每个表都是不一样的名字,表具有一些特性这些特性定义了数据在表中如何存储。

列和数据类型

所有表都是由一个或者多个列组成。 表中每一列都需要定义一个数据类型,来规定其中的数据。

代表表中的一条记录。如果把表想象成一个网格,网格中垂直的为列,水平的则称为行。

主键

代表了这一列中的值只能唯一,换句话说也就是说通过查找这一行的值,能够精确定位到每一条记录。

Posts in this Series