《数据库》笔记整理

数据库 学习笔记

CH01

概念

数据库(DB)的概念

文件系统管理数据存在的局限

  1. 数据冗余与非一致性
    • 文件格式不相容,数据冗余
  2. 程序依赖于数据
    • 新任务要写新程序
  3. 数据孤立
    • 文件格式不相容
  4. 完整性问题
    • 完整性约束 隐于 程序
    • 难修改
  5. 更新的原子性保证问题

  6. 并发访问
    • 未加控制的并发访问会导致不一致性
  7. 安全性问题

数据库是长期存储在计算机内有组织的大量的相关的可共享的数据集合

数据库管理系统(DBMS)的概念

一个数据库管理系统是管理数据库的一些程序的集合

数据库管理系统的功能
用户角度
数据库定义

定义数据库中表(Table)的名称、标题(内含的属性名称以及对该属性的值的要求)等

  • DBMS提供一套数据定义语言(DDL:Data Definition Language)给用户
  • 用户使用DDL描述其所要建立表的格式(定义表名、表标题、列名及其结构形式)
  • DBMS依照用户的定义,创建数据库以及其中的Table
数据库操纵

向数据库的表(Table)中增加/删除/更新数据以及对数据进行查询检索统计

  • DBMS提供一套数据操纵语言(DML:Data Manipulation Language)给用户
  • 用户使用DML描述其所要进行的增、删、改、查等操作
  • DBMS依照用户的操作描述,实际执行这些操作
数据库控制

控制数据库中数据的使用——哪些用户可以使用,哪些不可以

  • DBMS提供一套数据控制语言(DCL:Data Control Language)给用户
  • 用户使用DCL描述其对数据库所要实施的控制
  • DBMS依照用户的描述,实际进行控制
数据库维护

转储、恢复、重组、性能监测、分析

  • DBMS提供一系列程序(实用程序、例行程序)给用户
  • 在这些程序中提供了对数据库维护的各种功能
  • 用户使用这些程序进行各种数据库维护操作

数据库系统(DBS)的概念

数据库系统是指在计算机系统中引入数据库后的系统(一个数据库系统由数据库、DBMS和应用程序组成)

数据库系统的三层结构

数据库系统的体系结构受 运行数据库底层计算机系统【Centralized、Client-server、Parallel(multi-processor)、Distributed】 的影响

目标:

  1. 改变存储结构而不影响用户视图
  2. 物理存储的改变不影响数据库的内部结构
  3. 概念结构的改变不影响所有用户

整体结构

在这里插入图片描述

说明:

  1. 外部层(External Level):用户视图

    描述与某一个特定的用户相关的数据库的部分

    某一用户能够看到与处理的数据

  2. 概念层(Conceptual Level):总体视图

    描述有什么数据存储在数据库中以及这些数据之间的关系

    从全局角度理解、管理的数据,含相应的关联约束

  3. 内部层(Internal Level):数据库在计算机上的物理表示

    描述数据是如何存储在数据库内的

    存储在介质上的数据,含存储路径、存储方式、索引方式等

三层结构举例

在这里插入图片描述

三级模式与数据独立性

数据(视图)与模式

模式:对数据库中数据所进行的一种结构性的描述,所观察到数据的结构信息

示例:某时间点的数据库(表)的实际内容

例子:

在这里插入图片描述

数据独立性
  1. 逻辑数据独立性:概念模式(Conceptual Level)的变化不会影响外模式(External Level)
  2. 物理数据独立性:概念模式(Conceptual Level)不受内模式(Internal Level)的影响——内模式改变不要求概念模式与外模式也发生改变
三级模式与两层映像
三级模式(三级视图)
  1. External Schema:某用户能够看到与处理的数据的结构描述
  2. Conceptual Schema:从全局角度理解和管理的数据的结构描述,含相应的关联约束 体现在数据之间的内在本质联系
  3. Internal Schema:存储在介质上的数据的结构描述,含存储路径、存储方法、索引方式等
两层映像——保证数据独立性
  1. External Schema/Conceptual Schema:实现逻辑数据独立性,概念模式改变只需改E-C映像
  2. Conceptual Schema/Internal Schema:实现物理数据独立性,物理模式改变只需修改C-I映像

在这里插入图片描述

数据模型

数据模型是描述数据、数据间联系、数据语义以及约束的工具集合

数据模型由三部分组成:

  1. 数据结构
  2. 数据操纵
  3. 完整性约束

主要数据模型

  1. 实体-联系模型(E-R模型)
  2. 关系模型
  3. 面向对象模型
  4. XML半结构化模型
  5. 其他模型
    • 网络模型
    • 层次模型

CH02

关系、关系模式等基本概念

在这里插入图片描述

  1. 元组(行、记录):一行完整的数据,如(A1 B1 C1)
  2. 关系:属性名+表名+数据
  3. 关系模式:属性名+表名
  4. 目、度【degree(arity)】:属性个数
  5. 基数(Cardinality):元组数目

关系的例子:

Relations are Unordered

在这里插入图片描述

属性(Attributes):

  1. The set of allowed values for each attribute is called the domain of the attribute

    属性的值域(domain)

  2. Attribute values are (normally) required to be atomic; that is, indivisible

    属性的值是原子的,也就是不可分割的

  3. The special value null is a member of every domain

    每个值域都会有一个特殊的值:null

  4. The null value causes complications in the definition of many operations

    null这个值会使得在定义许多操作的时候复杂化

关系数据库

不重名规范化关系的集合

(A collection of normalized relations with distinct relation names)


信息被分成几个部分,每一个关系存储这个信息的一部分

例子

  • account : stores information about accounts
  • depositor : stores information about which customer owns which account
  • customer : stores information about customers

Q:能不能将所有的信息存储在一个简单的关系中?

这样将会造成:信息重复、需要大量空值

数据库 表的性质

  1. 关系不重名
  2. 单元格不可再分
  3. 属性不重名
  4. 一个属性来自同一个域
  5. 元组不重复
  6. 列的顺序无所谓
  7. (理论上)行的顺序无所谓【实际上会影响元组方法效率】

Keys(码、键)&Integrity

Keys

Super Keys(SK,超码)

能唯一标识一行的一个或多个属性

Candidate Key(CK,候选码)

候选码是一种超码,而它的任意子集不再是超码

Primary Key(PK,主码、主关键字)

一种候选码,数据库设计者选中用来在同一关系中区分不同元组的候选码

Alternate Keys(AK,备选码)

除了主码之外的其他所有候选码

  1. 一个关系只能有一个主码
  2. 主码通常选择值不变或者很少变化的属性
  3. 在选择主码时,首先考虑应用语义,然后考虑比较值的存储需求和代价
    • 整数常常比长字符串好
    • 单属性主码比复合主码好
Foreign Keys(外码、外键)

一个关系(参照关系)中的属性是另一种关系(被参照关系)的主码,且该属性为参照关系的外码

参照关系中的外键的取值必须与被参照关系中的主键的值一致或者为null

Relation Integrity

关系模型的完整性是对关系的某种约束条件

实体完整性(Entity Integrity)
  1. 码值唯一
  2. 基本表主码的诸属性均不能为空值
    • 空值:代表现在不知道或者对于这个元组不适用
    • Null represents a value for an attribute that is currently unknown or is not applicable for this tuple.
参照完整性(Relation Integrity)

外码取参照码值或者取空值

用户定义的完整性(Enterprise Integrity)

关系模型

关系代数

  1. select(选择):σ
  2. project(投影):Π
  3. union(并):∪
  4. set difference(集合差):-
  5. Cartesian product(笛卡尔积):×
  6. rename(更名):ρ
  7. 其他运算:集合交、连接、除、赋值

关系代数运算以一个或两个关系作为输入,产生一个新的关系作为运算结果

Select Operation

σp(r):在关系r中选择出所有的满足条件p的元组

例子:

Relation r:

在这里插入图片描述

σA=B^D>5(r):

在这里插入图片描述

Project Operation

ΠAttributei, Attributej, …, Attributek(r):得到一个含有列出属性的关系(去掉了重复行)

例子:

Relation r:

在这里插入图片描述

ΠA, C(r):

中间过程:

在这里插入图片描述

去掉重复行之后得到结果:

在这里插入图片描述

Union Operation

r ∪ s = { t | t ∈ r or t ∈ s }

要使得合并操作合法,必须满足:

  1. r和s必须有相同的arity

    r, s must have the same arity

    (same number of attributes)

  2. 属性的值域必须是相容的

    The attribute domains must be compatible

    (example: 2nd column of r deals with the same type of values as does the 2nd column of s)

例子:

Relation r:

在这里插入图片描述

Relation s:

在这里插入图片描述

r ∪ s:

在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 学习笔记整理 一、Linux 简介 Linux,全称 GNU/Linux,是一种自由和开放源代码的类 Unix 操作系统,它主要是由 Linus Torvalds 在 1991 年创建的。Linux 操作系统具有多用户、多任务、多线程、支持多种文件系统、网络功能强大等优点。 二、Linux 基础命令 1. 基本操作命令 cd:切换目录,例如:cd /usr/local ls:查看目录下文件,例如:ls /usr/local mkdir:创建目录,例如:mkdir test rmdir:删除目录,例如:rmdir test cp:复制文件,例如:cp a.txt b.txt rm:删除文件,例如:rm a.txt mv:移动文件或修改文件名,例如:mv a.txt b.txt 或 mv a.txt /usr/local 2. 文件操作命令 cat:查看文件内容,例如:cat a.txt more:分页显示文件内容,例如:more a.txt less:分页显示文件内容,例如:less a.txt head:显示文件头部内容,例如:head a.txt tail:显示文件尾部内容,例如:tail a.txt grep:查找文件中的关键字,例如:grep "hello" a.txt 3. 权限相关命令 chmod:修改文件权限,例如:chmod 755 a.txt chown:修改文件所属用户和组,例如:chown user:group a.txt su:切换用户,例如:su root sudo:以管理员权限执行命令,例如:sudo apt-get install nginx 4. 网络相关命令 ping:测试网络连通性,例如:ping www.baidu.com ifconfig:查看网络接口信息,例如:ifconfig netstat:查看网络连接状态,例如:netstat -an nslookup:解析域名,例如:nslookup www.baidu.com 5. 系统管理命令 ps:查看进程状态,例如:ps -ef top:实时查看系统资源占用情况,例如:top kill:终止进程,例如:kill 1234 free:查看系统内存使用情况,例如:free -m df:查看磁盘使用情况,例如:df -h 三、常用 Linux 发行版 1. CentOS CentOS(Community Enterprise Operating System)是一款基于 Red Hat Enterprise Linux(RHEL)源代码的 Linux 发行版,它是一个稳定、可靠且高性能的服务器操作系统,广泛用于企业服务器领域。 2. Ubuntu Ubuntu 是一款基于 Debian 的 Linux 发行版,它以易用性、稳定性和安全性著称,适合用于桌面和服务器领域。 3. Debian Debian 是一个由志愿者组成的开源社区开发的 Linux 发行版,以稳定性和安全性著称,适合用于服务器和桌面领域。 4. Fedora Fedora 是由 Red Hat 公司赞助的一个社区项目,它是一个面向桌面用户的 Linux 发行版,以最新的软件包和技术为特点。 四、Linux 常用软件 1. Apache Apache 是世界上最流行的 Web 服务器软件之一,它是一款免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站搭建。 2. MySQL MySQL 是一款流行的关系型数据库管理系统,它是免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站数据存储。 3. Nginx Nginx 是一款高性能的 Web 服务器软件,它是免费、开源的软件,支持多种操作系统和编程语言,适用于企业和个人网站搭建。 4. Git Git 是一款流行的分布式版本控制系统,它是免费、开源的软件,支持多种操作系统和编程语言,适用于团队协作和代码管理。 五、Linux 学习资源推荐 1. Linux 命令大全 2. Linux 教程 3. Linux 学习路径 4. Linux 知识库 5. Linux 命令在线手册 六、总结 本文介绍了 Linux 的基础知识、常用命令、常用发行版、常用软件和学习资源,希望能够帮助读者快速了解 Linux 并入门。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值