chapter-5 数据库设计

news/2024/5/22 8:05:39/文章来源:https://blog.csdn.net/qq_38758371/article/details/130094074

以下课程来源于MOOC学习—原课程请见:数据库原理与应用
考研复习

引言

设计的时候:

我们为什么不能设计成R(学号,课程号,姓名,所咋系,系主任,成绩)?

因为存在数据冗余(存在姓名。所在系,系主任的信息冗余)

因为存在更新异常无法插入学生信息,系 的信息;无法删除学生选课信息)

​ 比如添加学生信息无法添加选课信息,删除学生选课信息可能造成该课程不存在

因为存在数据不一致(修改学生系信息,出现系相同主任不同的情况等)

函数依赖


定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—>Y。其中,X 称为决定因素。

通俗一点,就是给定一个 X 都有唯一的 Y。可以理解为函数 y = f(x);

对于任意的 x 都有唯一的 y ,且 y 的取值由 x 决定。

例如:学生号—>学生姓名,学生年龄等等有关该学生的所有信息
反之,像学生姓名不能决定唯一的学生,因为存在同名的可能,这种情况就不能称作函数依赖。或者学生学号确定后,却不能确定课程编号,因为一对多

根据函数依赖性质可分为以下三种:

  • 完全函数依赖 记F
    • 书上定义基本是:如果存在 X 属性集(注意是集合,说明是联合主键)决定 唯一的 Y ,且 X 中的任一子集都不能决定 唯一的 Y,则 Y 完全依赖于 X。
    • 例如:学生数学成绩完全由该学生的学号和数学课决定,所以数学课成绩完全依赖于(学号,数学课)
  • 部分函数依赖 记P
    • 定义和完全函数依赖有一点不一样,就是 X 的属性集中任一子集可以决定唯一的 Y
    • 例如:学生学号和姓名可以决定唯一的学生,但是学生号也可以决定唯一的学生
  • 传递函数依赖 记t
    • 定义:设 R 为任一关系, X Y Z 为其不同的属性子集,若 X —> Y, Y 不决定 X 且 Y —>Z,则有 X —>Z,称为 Z 传递函数依赖于 X
    • 例如:书的出版编号是唯一,版权归出版社所有,所以只能由该出版社出版。所以存在函数依赖:书出版编号—>出版社名,出版社名—>出版社地址,但是出版社名不能决定唯一的出版书编号(除非出版社只出版过一本书,那我没话说?),则有出版社地址传递函数依赖于出版书编号
  • 平凡函数依赖
    • 设 R 为任一关系, X 属于U,Y属于U,且Y属于X,若X->Y成立,称
    • 例如:(学号,姓名)-> 姓名

候选键

定义1:关系R中某一属性或者属性组K的值可以唯一标识一个元组,而其**任意真子集**不可以,则K为候选键(码)

定义2:关系模式R(U)中,k∈U,且U完全依赖于K

比如有关系模式 R (Sno, Sname, Cno, Cname, Sdept, Sloc, Grade),

其中函数依赖集为 F= {Sno → Sname, Sno → Sdept, Sdept → Sloc,Sno → Sloc, Cno → Cname, (Sno, Cno) → Grade }

那么 R 中的码只能是 (Sno, Cno),Sno 或 Cno 并不能唯一标识一个数据(其实就是不能决定 Grade ),所以单独的 Sno 与 Cno 并不能作为码。

所以可得到主属性:Sno, Cno
;非主属性:Sname, Cname, Sdept, Sloc, Grade

因此:

R(学号,课程号,姓名,所咋系,系主任,成绩)

(学号,课程号)-f->成绩 (学号,课程号)-p->姓名

(学号,课程号)-p->所在系 (学号,课程号)-t->系主任

第一范式1NF

范式:

  1. 数据依赖满足一定约束。

​ 补充:关系可以理解为数据表。“关系模式”和“关系”的区别,类似于面向对象程序设计中”类“与”对象“的区别。”关系“是”关系模式“的一个实例,你可以把”关系”理解为一张带数据的表,而“关系模式”是这张数据表的表结构。

第一范式:符合1NF的关系中的每个属性都不可再分

1NF是所有关系型数据库的最基本要求

image-20210121223205278

举例:根据定义R(学号,课程号,姓名,所咋系,系主任,成绩)符合∈1NF

第二范式2NF

2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖

定义:第一范式基础上,每个非主属性 完全依赖于 候选键

但是例子中:(学号,课程号)-p->姓名 (学号,课程号)-p->所在系

image-20210121223604125

分解后解决了数据冗余的问题 和 更新异常的问题

但是仍然存在非主属性系主任对于码学号的传递函数依赖

第三范式3NF

3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖

定义:第二范式基础上,所有 非主属性 不存在 传递依赖于 候选键

image-20210121223947752

由此可见,符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。当然,在实际中,往往为了性能上或者应对扩展的需要,经常 做到2NF或者1NF,但是作为数据库设计人员,至少应该知道,3NF的要求是怎样的。

BCNF

问题:

某公司有若干个仓库;每个仓库只能有一名管理员,一名管理员只能在一个仓库中工作;
一个仓库中可以存放多种物品,一种物品也可以存放在不同的仓库中。每种物品在每个仓库中都有对应的数量。

那么关系模式 仓库(仓库名,管理员,物品名,数量) 属于哪一级范式?

答:已知函数依赖集:仓库名 → 管理员,管理员 → 仓库名,(仓库名,物品名)→ 数量
码:(管理员,物品名),(仓库名,物品名)

主属性:仓库名、管理员、物品名 非主属性:数量

∵ 不存在非主属性对码的部分函数依赖和传递函数依赖。
∴ 此关系模式属于3NF。
基于此关系模式的关系(具体的数据)可能如图所示:

img

好,既然此关系模式已经属于了 3NF,那么这个关系模式是否存在问题呢?

我们来看以下几种操作:

1.先新增加一个仓库,但尚未存放任何物品,是否可以为该仓库指派管理员?——不可

因为物品名也是主属性,根据实体完整性的要求,主属性不能为空。

2.某仓库被清空后,需要删除所有与这个仓库相关的物品存放记录,会带来什么问题?——仓库本身与管理员的信息也被随之删除了。

3.如果某仓库更换了管理员,会带来什么问题?——这个仓库有几条物品存放记录,就要修改多少次管理员信息。

从这里我们可以得出结论,在某些特殊情况下,即使关系模式符合 3NF 的要求,仍然存在着插入异常,修改异常与删除异常的问题,仍然不是 ”好“ 的设计。
造成此问题的原因:存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性【仓库名】对于码【(管理员,物品名)】的部分函数依赖。

解决办法就是要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖

仓库(仓库名,管理员)
库存(仓库名,物品名,数量)

这样,之前的插入异常,修改异常与删除异常的问题就被解决。
以上就是关于 BCNF

总结

image-20210121225033259

Armstrong公理

引出:我们能否根据给定的依赖集 推出完整的函数依赖集

逻辑蕴含

定义:F是关系模式R 的函数依赖集,X,Y是R 的属性子集,对于R 满足F的关系实例(一行数据)r,如果X->Y都成立,称为F逻辑蕴含X->Y

俗话:每行数据的属性X都能推出Y,则

F逻辑蕴含的所有函数依赖的集合(所有函数依赖),称为函数依赖集记F+

目的:根据给定的(部分)依赖集 推出完整的函数依赖集

补充:XY记为X和Y 的并集

基本推理规则

关系R(U,F) U是属性集

(1)自反律:若Y包含于X,X包含于U,则X->Y为F所蕴含。

(2)增广律:若X->Y为F所蕴含,且Z包含于U,则XZ->YZ为F所蕴含。

(3)传递律:若X->Y及Y->Z为F所蕴含,则X->Z为F所蕴含。

注:为F所蕴含 === 是函数依赖集的一部分

根据上面三条推理规则可以得到下面三条推理规则:

(1)合并规则:由X->Y, X->Z,有X->YZ

(2)伪传递规则:由X->Y,WY->Z,有XW->Z

(3)分解规则:由X->Y及Z包含于U,有X->Z

引理:X->A1A2A3A4…成立的充要条件 X->Ai都成立

image-20210121230050227

属性集闭包

忽略

闭包:闭包就是由一个属性直接或间接推导出的所有属性的集合

例(1): 设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)+

​ 解: (1) 令X={AE},X(0)=AE

​ (2)在F中寻找尚未使用过的左边是AE的子集的函数依赖,结果是: A→D, E→C;所以 X(1)=X(0)DC=ACDE, 显然 X(1)≠X(0).

​ (3) 在F中寻找尚未使用过的左边是ACDE的子集的函数依赖, 结果是: CD→I;所以 X(2)=X(1)I=ACDEI。虽然X(2)≠X(1),但F中寻找尚未使用过函数依赖的左边已经没有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI。

​ 例如:f={a->b,b->c,a->d,e->f};由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}

函数依赖集等价

F,G是一个关系模式的两个函数依赖集,如果F+=G+,则称F和G 是等价的

F={AB->C,A->B,B->A} G={A->C,A->B,B->A}

充要条件:一个函数的依赖集F+属于另一个函数依赖集G+的子集

(考察 F+中每个函数依赖是否在G+中,同理)

image-20210121230752401

最小函数依赖集

如果函数依赖的集合满足一下称为:

1.对于函数依赖的右端,将其分解为单个属性。如AB->CD分解为AB->C,AB->D

2.对于函数依赖集F中每一个X->A,计算G=F-{X->A},

​ 判断是否A∈(X)G+ 如果能,在F中删除X->A。

3.对于函数依赖集F中每一个X->A,设X=B1B2B3…

​ 判断是否A∈(X-Bi)F+,如果能,X=X-Bi

https://blog.csdn.net/liudongdong19/article/details/85223697

image-20210121231732883 image-20210121231744261

同理推:5-4 F={A->BC,B->AC,C->A} 结果:Fm={A->B,B->C,C->A}

候选键的判定

关系模式中R(U,F)中,如果K∈U,且U**完全依赖**于K,

U是完全依赖K,不能依赖于K 的任何子集 K才能是候选键

利用Armstrong公理

需要熟练掌握Armstrong

image-20210121232023244

※根据闭包的概念

第一种:因为:U是完全依赖K,不能依赖于K 的任何子集

image-20210122081212068

或者以下重要方法:

※计算候选码的方法

对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:

L类 仅出现在函数依赖左部的属性。

R 类 仅出现在函数依赖右部的属性。

N 类 在函数依赖左右两边均未出现的属性。

LR类 在函数依赖左右两边均出现的属性

定理:对于给定的R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员

推论:若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。

例(2):设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B →D,AD →B,AC →D},求R的所有候选码。

解:考察F发现,A,C两属性是L类属性,所以AC必是R的候选码成员,又因为(AC)+=ABCD,所以AC是R的唯一候选码。

定理:对于给定的R及其函数依赖集F,若X(X∈R)是R类属性,则X不在任何候选码中。

定理:对于给定的R及其函数依赖集F,若X(X∈R)是N类属性,则X必包含在R的任一候选码中

推论:对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。

image-20210121232513545

模式分解

低级模式向高级模式分解 比如1NF---->3NF

将一关系模式R(U,F)分解,成多个关系模式(表),并且各个关系模式(表)的属性并集仍为U,各个关系模式(表)的属性集并不包含,每个关系模式的依赖是在F上的投影

特性:保持了函数依赖,具有无损连接性

关系模式分解的无损连接性和保持函数依赖特性对应分解前后关系的( 语义等价 )和(数据等价 )

  • 数据等价是指分解前后的关系实例表示相同的信息内容,用( 无损连接 )特性来衡量。
  • 语义等价是指分解前后的关系模式上的函数依赖集等价,即有相同的函数依赖集闭包,用(保持函数依赖 )特性来衡量。
  • 关系模式分解的无损连接和保持函数依赖两个特性之间( 没有必然联系 )。

为什么希望分解既具有无损连接性又要保持函数依赖?

  • 分解具有无损连接性,即可保持数据等价,那分解之后得到的新关系就不会有信息内容的丢失。
  • 分解保持函数依赖,即可保持函数依赖等价,那么分解之后数据的语义就不会出差错。
  1. 若分解保持函数依赖,模式总可以分解到3NF。
  2. 若分解具有无损连接性,模式一定能分解到BCNF。
  3. 若分解要保持函数依赖且具有无损连接性,模式可以分解到3NF。可以达到BCNF

但是BC范式的两个特性和BCNF的两个特性不能同时拥有

image-20210122083813149

分解

原来的image-20210122081939623

为了解决对学生信息,系信息,选修信息等新数据冗余,不一致,更新异常等问题,我们不断分解成如下的模式,由满足低级范式的模式逐步分解变成高一级的范式

分解后

image-20210122082037348 image-20210122082824158

分解后,三个关系的属性集没有包含关系,并集为关系R 的属性集,关系R 原有的函数依赖也投影到不同的关系模式上,如果对三个关系模式自然连接,可以回到原有的关系(数据表)

判断是否是无损连接

  • 对于一个分解,有k个子集,n个属性,建立一张k行n列的初始表,对于每一行也就是分解的每个子集,把该分解子集出现的属性对应的列写上ajaj,否则写上bijbij
  • 对于每一个依赖,找到左部属性对应的列,根据行的值分组,对于行的值相同的这些行,查看对应右部属性的列,如果这些格子里有a值,那把所有这些格子改成a值,如果没有,改成行最小的b值。如果某个b值改成a值,那么其他行(不属于当前操作的行)的相同b值也要改成a值
  • 如果不变则停止,如果出现有一行为a1 a2 … an,那么说明该连接为无损连接。
  • https://www.cnblogs.com/zxcoder/p/11963759.html

举例:

已知关系模式R(A,B,C,D,E,G)及R上的函数依赖集F={A→BC, C→D, BC→EG, E→A },有R上的一个分解ρ={R1(A,B,C,D),R2(B,C,E,G)},则该分解( 具有无损连接性,但不保持函数依赖)。

已知关系模式R(A, B, C, D, E)及R上函数依赖集F={A→BC,C→D,BC→E,E→A},则分解ρ={R1(ABCE),R2(CD)}满足( 具有无损连接性、保持函数依赖 )。

满足3NF分解

分为保持依赖和无损连接

为了说明求解保持依赖,我们先要会求最小依赖集

(1)最小依赖集求法:

口诀:右侧先拆单,依赖依次删。 还原即可删,再拆左非单。

通过求下面的最小依赖集对口诀进行解释,

img

(2)口诀:

1、 保函依赖分解题,先求最小依赖集。

2、依赖两侧未出现,分成子集放一边,剩余依赖变子集。

3、若要连接成无损,再添候选做子集。

下面通过几道例题讲解口诀:

例1.已知R(ABCDE), F={A ->D,E->D,D->B,BC->D,DC->A}求保持函数依赖的3NF分解,和具有无损连接性及保持函数依赖的3NF分解

第一步:**保函依赖分解题,先求最小依赖集。**先求出R的最小依赖集,可得F={A ->D,E->D,D->B,BC->D,DC->A}

第二步:**依赖两侧未出现,分成子集放一边。首先可以发现没有不出现在两侧的元素不用单独分出一个子集,“剩余依赖变子集”**然后我们将各依赖分别划分为子集得到:{AD} {ED} {DB} {BCD} {DCA},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。

(1)候选码的求解:所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的和两侧均未出现的元素即可求得,

(2)可以发现C E未出现在右边,因此候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{AD} {ED} {DB} {BCD} {DCA} {CE}

例3:image-20210122084706983

满足BCNF的分解

image-20210122084941498 image-20210122085006681 image-20210122085030654 image-20210122085043760 image-20210122085052221

练习:https://www.icourse163.org/learn/PAEU-1003647009?tid=1460983455#/learn/content?type=detail&id=1237298066&cid=1257135194

" alt=“image-20210122085030654” style=“zoom:80%;” />

image-20210122085043760 image-20210122085052221

练习:https://www.icourse163.org/learn/PAEU-1003647009?tid=1460983455#/learn/content?type=detail&id=1237298066&cid=1257135194

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_96733.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++算法初级7——二分查找

C算法初级7——二分查找 文章目录C算法初级7——二分查找在升序的数组上进行二分查找总结应用范围应用二分查找的原理:每次排除掉一半答案,使可能的答案区间快速缩小。 二分查找的时间复杂度:O(log n),因为每次询问会使可行区间的…

appium+python自动化测试启动app

一、部署环境 1、依次下载安装以下工具,并配置环境变量: android sdk Nodejs appium appium-doctor Appium-Python-Client pycharm64 ps:安装包下载和配置环境变量的操作步骤跟着网上各路大神的帖子一步一步做就好了,没啥难度 二、连…

Machine Learning-Ex4(吴恩达课后习题)Neural Networks Learning

目录 1. Neural Networks 1.1 Visualizing the data 1.2 Model representation 1.3 Feedforward and cost function 1.4 Regularized cost function 2. Backpropagation 2.1 Sigmoid gradient 2.2 Random initialization 2.3 Backpropagation 2.4 Gradient Checking…

【数据库原理 • 四】数据库设计和规范化理论

前言 数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前…

linux之jdk1.8环境安装与配置和Maven安装与配置

文章目录一、jdk1.8环境安装1、官网下载&#xff1a;<https://www.oracle.com/java/technologies/downloads/#java8>2、在usr文件夹下新建一个java文件夹3、解压完成后&#xff0c;将文件jdk文件传入到java目录下二、配置环境&#xff08;重点&#xff09;1、按 i 进行编…

蓝牙技术|苹果获空间音频新专利,AirPods可动态调整声学输出

美国商标和专利局&#xff08;USPTO&#xff09;公示的清单显示&#xff0c;苹果在近日获得了一项名为“测定虚拟聆听环境”的新专利。据悉&#xff0c;该技术可以改善用户的聆听体验&#xff0c;增强空间音频的沉浸感&#xff0c;未来有望应用在AirPods上。 这项专利技术可以…

代码随想录_二叉树_二叉树的层序遍历十道题

leetcode102.二叉树的程序遍历 102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&…

文心一言对于宣传文案理解

前言 前段时间对于文心一言开放部分内测邀请&#xff0c;有幸获得邀请内测权限&#xff01;抱着试一试的态度对其进行了使用&#xff0c;结果还是比较满意的。我们来看一下我所说的满意是否能够达到你的要求&#xff01;&#xff01;&#xff01; 使用逻辑 文心一言的使用还…

FPGA lattice 深力科LCMXO3LF-4300C-6BG256I 可实现高效、灵活和安全的工业应用开发 低功耗FPGA解决方案详情讲解

FPGA lattice 深力科LCMXO3LF-4300C-6BG256I 可实现高效、灵活和安全的工业应用开发 低功耗FPGA解决方案详情讲解 超低密度FPGA 是最新的立即启用、非挥发性、小型覆盖区 FPGA&#xff0c;采用先进的封装技术&#xff0c;能让每个元件达到最低成本。此系列采用最新的小型封装&…

android12 displayArea学习

一&#xff1a;数据结构分析 1&#xff1a;android 12 WindowContainer 的类继承关系如下 下图为 WindowContainer 简要的对象图。 下图是 Aosp默认的display层次结构对象图。 Aosp定义的feature有如下 FEATURE_ROOT 0; FEATURE_DEFAULT_TASK_CONTAINER 1; FEATURE_WINDOW_…

正版软件 Directory Opus 12 Pro Windows 平台上的资源管理器,定是功能完全、可定制化程度高的那款。

Directory Opus 是一款 Windows 平台上的资源管理器&#xff0c;定是功能最完全、可定制化程度最高的那款。你可以通过它完成几乎所有操作&#xff0c;包括查看图片元信息、预览图片、阅读文本文件内容、批量重命名、操作压缩文件以及 FTP 同步请求等。 Directory Opus 是一款由…

使用大华惠智双目半球网络摄像机DH-IPC-HD4140X-E2获取人流量统计数据

记录一下使用Java的SpringBoot大华SDK在智慧公厕项目中使大华惠智双目半球网络摄像机DH-IPC-HD4140X-E2获取人流量统计数据 首先根据说明书登录摄像头&#xff0c;一般摄像头都有自己的账号和密码(可能是admin admin 也可能是admin 888888 还有可能是admin 12345)&#xff0c;…

DriveGPT、车企订单背后,为什么毫末每年都能搞出新东西?

作者 | 祥威 编辑 | 德新 4月11日&#xff0c;毫末智行正式发布自动驾驶生成式大模型 DriveGPT&#xff0c;中文名 雪湖海若&#xff0c;可以提升自动驾驶认知能力&#xff0c;最终提升规控效率。 雪湖海若的核心&#xff0c;是将各种驾驶场景作为Token输入到模型中&#xff…

零基础搭建私人影音媒体平台【远程访问Jellyfin播放器】

文章目录1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置4.公网访问测试5. 结语1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&#xf…

react 1:jsx-组件-状态-事件

主要是为了解决什么问题 &#xff1f; 构建那些数据会随时间改变的大型应用 React 特点 虚拟 DOM 组件系统 单向数据流 jsx语法 jsx语法 组件创建方式 两种&#xff1a;class类组件&#xff0c;函数方式创建 代码快捷生成插件&#xff1a;&#xff1a;&#xff1a;rc…

算法 || DFS(深度优先搜索) BFS(广度优先搜索)

&#xff11;、基本概念 dfs全称为Depth First Search,即深度优先搜索。它的思想是沿着每一条可能的路径一个节点一个节点地往下搜索,搜到了路径的到终点再回溯,一直到所有路径搜索完为止。 bfsbfs全称为Breath First Search,即广度(宽度)优先搜索。它的思想是将每一层的结搜…

浅谈 如果做微服务了 这个模块怎么去划分?

如果做微服务了 这个模块怎么去划分&#xff1f; 还是高内聚 低耦合的一个思想吧 &#xff0c;单一职责的设计原则&#xff0c;也是一个封装的思想吧&#xff0c; 业务维度&#xff1a; ​ 按照业务的关联程度来决定&#xff0c;关联比较密切的业务适合拆分为一个微服务&…

Pandas.read_excel详解

文章目录基础知识语法参数详解-index_col参数详解-header参数详解-usecols参数详解-dtype其他参数多表读取基础知识 pandas 可以读取多种的数据格式&#xff0c;针对excel来说&#xff0c;可以使用read_excel()读取数据&#xff0c;如下&#xff1a; import pandas as pd dfp…

linux下使用lftp的小结

lftp的功能比较强大&#xff0c;相比原来用ftp&#xff0c;方便了很多。 1、登陆&#xff1a; lftp ftp://yournamesite pwd:***** 或 open ftp://yournamesite 2、基本操作&#xff08;转&#xff09; lftp使用介绍 lftp 是一个功能强大的下载工具&#xff0c;它支持访问…