Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
beginnersbook-zh
提交
8eefcd47
B
beginnersbook-zh
项目概览
OpenDocCN
/
beginnersbook-zh
大约 1 年 前同步成功
通知
0
Star
107
Fork
30
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beginnersbook-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8eefcd47
编写于
8月 21, 2019
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2019-08-21 11:35:51
上级
5a12a7cd
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
95 addition
and
85 deletion
+95
-85
docs/dbms/11.md
docs/dbms/11.md
+7
-7
docs/dbms/12.md
docs/dbms/12.md
+2
-2
docs/dbms/15.md
docs/dbms/15.md
+6
-4
docs/dbms/16.md
docs/dbms/16.md
+8
-5
docs/dbms/17.md
docs/dbms/17.md
+7
-5
docs/dbms/18.md
docs/dbms/18.md
+15
-15
docs/dbms/19.md
docs/dbms/19.md
+40
-37
docs/dbms/2.md
docs/dbms/2.md
+1
-1
docs/dbms/20.md
docs/dbms/20.md
+1
-1
docs/dbms/37.md
docs/dbms/37.md
+5
-5
docs/dbms/45.md
docs/dbms/45.md
+1
-1
docs/dbms/8.md
docs/dbms/8.md
+2
-2
未找到文件。
docs/dbms/11.md
浏览文件 @
8eefcd47
...
...
@@ -10,16 +10,16 @@ ER 图显示了实体集之间的关系。实体集是一组相似的实体,
## 一个简单的 ER 图:
在下图中,我们有两个实体学生和学院及其关系。学生与学院之间的关系是多对一的,因为大学可以有很多学生,但学生不能同时在多所大学学习。学生实体具有诸如
Stu_Id,Stu_Name 和 amp;等属性。 Stu_Addr 和 College 实体具有 Col_ID 和 amp;等属性。 COL_NAME。
在下图中,我们有两个实体学生和学院及其关系。学生与学院之间的关系是多对一的,因为大学可以有很多学生,但学生不能同时在多所大学学习。学生实体具有诸如
`Stu_Id`
,
`Stu_Name`
和
`Stu_Addr`
等属性。
`College`
实体具有
`Col_ID`
和
`COL_NAME`
等属性。
![
E-R Diagram
](
img/789d8be28f7f1f9adf83c57df7fd3fd2.jpg
)
以下是 E-R 图中的几何形状及其含义。我们将在本指南的下一部分(ER 图的组成部分)中详细讨论这些术语,所以现在不要过多担心这些术语,只需经历一次。
**
Rectangle
**
:表示实体集。
**
矩形
**
:表示实体集。
**椭圆**
:属性
**
钻石
**
:关系集
**
菱形
**
:关系集
**行**
:它们将属性链接到实体集和实体集到关系集
]
**双椭圆:**
多值属性
**双椭圆:**
多值属性
**虚线椭圆**
:派生属性
**双矩形**
:弱实体集
**双线**
:实体在关系集中的完全参与
...
...
@@ -45,7 +45,7 @@ ER 图显示了实体集之间的关系。实体集是一组相似的实体,
### 2.属性
属性描述实体的属性。 ER 图中的属性表示为
Oval
。有四种类型的属性:
属性描述实体的属性。 ER 图中的属性表示为
椭圆
。有四种类型的属性:
1.
关键属性
2.
复合属性
...
...
@@ -68,7 +68,7 @@ ER 图显示了实体集之间的关系。实体集是一组相似的实体,
#### 4.派生属性:
派生属性的值是动态的,并且是从另一个属性派生的。它由 ER 图中的
**虚线椭圆**
表示。例如 -
Person age
是一个派生属性,因为它随时间变化,可以从另一个属性(出生日期)派生。
派生属性的值是动态的,并且是从另一个属性派生的。它由 ER 图中的
**虚线椭圆**
表示。例如 -
`Person age`
是一个派生属性,因为它随时间变化,可以从另一个属性(出生日期)派生。
具有多值和派生属性的
**E-R 图**
:
![
Multivalued and derived attribute
](
img/ba8fd060c71734ad1f8996486167f268.jpg
)
...
...
@@ -98,7 +98,7 @@ ER 图中的菱形表示关系,表示实体之间的关系。有四种类型
#### 4.多对多关系
当一个实体的多个实例与另一个实体的多个实例相关联时,它被称为多对多关系。例如,可以将
a
分配给许多项目,并将项目分配给许多学生。
当一个实体的多个实例与另一个实体的多个实例相关联时,它被称为多对多关系。例如,可以将
学生
分配给许多项目,并将项目分配给许多学生。
![
ER diagram many to many relationship example
](
img/d10b2d93bbe0f7deca5d5f8d5b5b4566.jpg
)
## 实体集的完全参与
...
...
docs/dbms/12.md
浏览文件 @
8eefcd47
...
...
@@ -13,10 +13,10 @@
**泛化前的 ER 图如下所示:**
![
DBMS Generalization example - before process ER model
](
img/9c57659c5da5d0fc700cbef20156415f.jpg
)
这两个实体有两个共同的属性:
Name 和 Address
,我们可以使用这些公共属性创建一个通用实体。让我们看一下泛化后的 ER 模型。
这两个实体有两个共同的属性:
`Name`
和
`Address`
,我们可以使用这些公共属性创建一个通用实体。让我们看一下泛化后的 ER 模型。
**泛化后的 ER 图:**
我们创建了一个新的广义实体
Person,这个实体具有两个实体的共同属性。正如你在下面的
[
ER 图
](
https://beginnersbook.com/2015/04/e-r-model-in-dbms/
)
中看到的那样,在泛化过程之后,实体 Student 和 Teacher 分别只有 Grade 和 Salary 的专用属性,它们的公共属性(Name
&
Address
)现在与一个新的相关联实体与两个实体(学生和教师)有关系的人。
我们创建了一个新的广义实体
`Person`
,这个实体具有两个实体的共同属性。正如你在下面的
[
ER 图
](
https://beginnersbook.com/2015/04/e-r-model-in-dbms/
)
中看到的那样,在泛化过程之后,实体
`Student`
和
`Teacher`
分别只有
`Grade`
和
`Salary`
的专用属性,它们的公共属性(
`Name`
&
`Address`
)现在与一个新的相关联实体与两个实体(学生和教师)有关系的人。
![
DBMS Generalization ER diagram
](
img/b753eb4c3023930658c36e88b8cd6f72.jpg
)
**注:**
...
...
docs/dbms/15.md
浏览文件 @
8eefcd47
...
...
@@ -8,7 +8,8 @@
**表:学生**
| Stu_Id | Stu_Name | Stu_Age |
|
`Stu_Id`
|
`Stu_Name`
|
`Stu_Age`
|
| --- | --- | --- |
| 111 | 阿希什 | 23 |
| 123 | Saurav | 22 |
| 169 | 莱斯特 | 24 |
...
...
@@ -16,10 +17,11 @@
**表:课程**
| Stu_Id | COURSE_ID | 课程名 |
|
`Stu_Id`
|
`COURSE_ID`
|
`COURSE_NAME`
|
| --- | --- | --- |
| 111 | C01 | 科学 |
| 111 | C02 | DBMS |
| 169 | C22 | Java
的
|
| 169 | C22 | Java |
| 169 | C39 | 计算机网络 |
这里是 Stu_Id,Stu_Name
&
Stu_Age 是表 Student 和 Stu_Id,Course_Id
&
的表的属性。 Course_Name 是表课程的属性。具有值的行是记录(通常称为元组)。
\ No newline at end of file
这里是
`Stu_Id`
,
`Stu_Name`
&
`Stu_Age`
是表
`Student`
的属性,
`Stu_Id`
,
`Course_Id`
&
`Course_Name`
是
`Course`
表的属性。具有值的行是记录(通常称为元组)。
\ No newline at end of file
docs/dbms/16.md
浏览文件 @
8eefcd47
...
...
@@ -3,7 +3,7 @@
> 原文: [https://beginnersbook.com/2015/04/rdbms-concepts/](https://beginnersbook.com/2015/04/rdbms-concepts/)
**RDBMS**
代表关系数据库管理系统。关系模型可以表示为行和列的表。关系数据库有以下主要组成部分:
1.
表
格
1.
表
2.
记录或元组
3.
字段或列名称或属性
4.
域
...
...
@@ -13,11 +13,12 @@
## 1.表
表是以行和列表示的数据的集合。每个表在数据库中都有一个名称。例如,下表
“STUDENT”
将学生的信息存储在数据库中。
表是以行和列表示的数据的集合。每个表在数据库中都有一个名称。例如,下表
`STUDENT`
将学生的信息存储在数据库中。
**表:学生**
|
**Student_Id**
|
**Student_Name**
|
**Student_Addr**
|
**Student_Age**
|
|
`Student_Id`
|
`Student_Name`
|
`Student_Addr`
|
`Student_Age`
|
| --- | --- | --- | --- |
| 101 | 切塔尼亚 | Dayal Bagh,阿格拉 | 27 |
| 102 | Ajeet | 新德里 | 26 |
| 103 | 拉胡尔 | 古尔冈 | 24 |
...
...
@@ -27,17 +28,19 @@
表的每一行称为记录。它也被称为元组。例如,以下行是我们从上表中获取的记录。
| | | | |
| --- | --- | --- | --- |
| 102 | Ajeet | Delhi | 26 |
## 3.字段或列名称或属性
上表
“STUDENT”有四个字段(或属性):Student_Id,Student_Name,Student_Addr
&
Student_Age
。
上表
`STUDENT`
有四个字段(或属性):
`Student_Id`
,
`Student_Name`
,
`Student_Addr`
&
`Student_Age`
。
## 4.域名
域是表中属性的一组允许值。例如,一个月的域可以接受 1 月,2 月,... 12 月作为值,日期域可以接受所有可能的有效日期等。我们在创建表时指定属性域。
属性不能接受域外的值。例如,在上表
“STUDENT”中,Student_Id 字段具有整数域,因此该字段不能接受非整数的值,例如,Student_Id 不能具有“First”,10.11
等值。
属性不能接受域外的值。例如,在上表
`STUDENT`
中,
`Student_Id`
字段具有整数域,因此该字段不能接受非整数的值,例如,
`Student_Id`
不能具有
`"First"`
,
`10.11`
等值。
## 5.实例和架构
...
...
docs/dbms/17.md
浏览文件 @
8eefcd47
...
...
@@ -12,15 +12,17 @@
**表示为关系表的分层数据示例:**
上述分层模型可以表示为关系表,如下所示:
| Stu_Id | Stu_Name | Stu_Age |
|
`Stu_Id`
|
`Stu_Name`
|
`Stu_Age`
|
| --- | --- | --- |
| 123 | 史蒂夫 | 29 |
| 367 | 切塔尼亚 | 27 |
| 234 | Ajeet | 28 |
课程表:
| COURSE_ID | 课程名 | Stu_Id |
|
`COURSE_ID`
|
`COURSE_NAME`
|
`Stu_Id`
|
| --- | --- | --- |
| C01 | COBOL | 123 |
| C21 | Java 的 | 367 |
| C22 | Perl 的 | 367 |
| C33 | JQuery 的 | 234 |
\ No newline at end of file
| C21 | Java | 367 |
| C22 | Perl | 367 |
| C33 | JQuery | 234 |
\ No newline at end of file
docs/dbms/18.md
浏览文件 @
8eefcd47
...
...
@@ -12,13 +12,13 @@
DDL 用于指定数据库模式。它用于在数据库中创建表,模式,索引,约束等。让我们看看我们可以使用 DDL 在数据库上执行的操作:
*
创建数据库实例 -
[
CREATE
](
https://beginnersbook.com/2014/05/sql-create-database-statement/
)
*
改变数据库的结构 -
**
ALTER
**
*
删除数据库实例 -
[
DROP
](
https://beginnersbook.com/2014/05/sql-drop-database-statement/
)
*
删除数据库实例中的表 -
**
TRUNCATE
**
*
重命名数据库实例 -
**
RENAME
**
*
从数据库中删除对象,例如表 -
**
DROP
**
*
评论 -
**评论
**
*
创建数据库实例 -
[
`CREATE`
](
https://beginnersbook.com/2014/05/sql-create-database-statement/
)
*
改变数据库的结构 -
**
`ALTER`
**
*
删除数据库实例 -
[
`DROP`
](
https://beginnersbook.com/2014/05/sql-drop-database-statement/
)
*
删除数据库实例中的表 -
**
`TRUNCATE`
**
*
重命名数据库实例 -
**
`RENAME`
**
*
从数据库中删除对象,例如表 -
**
`DROP`
**
*
注释 -
**注释
**
所有这些命令都定义或更新数据库模式,这就是它们归入数据定义语言的原因。
...
...
@@ -26,17 +26,17 @@ DDL 用于指定数据库模式。它用于在数据库中创建表,模式,
DML 用于访问和操作数据库中的数据。数据库的以下操作属于 DML:
*
从表
格中读取记录 -
[
SELECT
](
https://beginnersbook.com/2014/05/sql-select-query/
)
*
将记录插入表
格 -
**INSERT
**
*
更新表
格中的数据 -
[
UPDATE
](
https://beginnersbook.com/2014/05/update-query-in-sql/
)
*
删除表中的所有记录 -
[
DELETE
](
https://beginnersbook.com/2014/05/delete-query-in-sql/
)
*
从表
中读取记录 -
[
`SELECT`
](
https://beginnersbook.com/2014/05/sql-select-query/
)
*
将记录插入表
-
**`INSERT`
**
*
更新表
中的数据 -
[
`UPDATE`
](
https://beginnersbook.com/2014/05/update-query-in-sql/
)
*
删除表中的所有记录 -
[
`DELETE`
](
https://beginnersbook.com/2014/05/delete-query-in-sql/
)
### 数据控制语言(DCL)
DCL 用于授予和撤销数据库上的用户访问权限 -
*
授予用户访问权限 -
GRANT
*
撤消用户的访问权限 -
REVOKE
*
授予用户访问权限 -
`GRANT`
*
撤消用户的访问权限 -
`REVOKE`
**在实际数据定义语言中,数据操作语言和数据控制语言不是单独的语言,而是它们是单个数据库语言(如 SQL)的一部分。**
...
...
@@ -44,5 +44,5 @@ DCL 用于授予和撤销数据库上的用户访问权限 -
我们使用 DML 命令进行的数据库更改是使用 TCL 执行或回滚的。
*
保持 DML 命令在数据库中所做的更改 - COMMIT
*
要回滚对数据库所做的更改 - ROLLBACK
\ No newline at end of file
*
保持 DML 命令在数据库中所做的更改 -
`COMMIT`
*
要回滚对数据库所做的更改 -
`ROLLBACK`
\ No newline at end of file
docs/dbms/19.md
浏览文件 @
8eefcd47
...
...
@@ -18,29 +18,29 @@
### 基本/基本操作:
1.
选择(
σ
)
2.
项目(
Π
)
3.
并集(
∪
)
4.
差集运算符(
-
)
5.
笛卡尔积(
X
)
6.
重命名(
ρ
)
1.
选择(
`σ`
)
2.
项目(
`Π`
)
3.
并集(
`∪`
)
4.
差集运算符(
`-`
)
5.
笛卡尔积(
`X`
)
6.
重命名(
`ρ`
)
### 衍生操作:
1.
自然连接(
⋈
)
2.
左,右,全外连接(
⟕,⟖,⟗
)
3.
交集(
∩
)
4.
分区(÷
)
1.
自然连接(
`⋈`
)
2.
左,右,全外连接(
`⟕`
,
`⟖`
,
`⟗`
)
3.
交集(
`∩`
)
4.
除法(
`÷`
)
让我们在示例的帮助下逐一讨论这些操作。
## 选择运算符(`σ`)
选择运算符由 sigma(
σ
)表示,它用于查找满足给定条件的关系(或表)中的元组(或行)。
选择运算符由 sigma(
`σ`
)表示,它用于查找满足给定条件的关系(或表)中的元组(或行)。
如果您了解一点 SQL,那么您可以将其视为 SQL 中的
[
where
子句,它用于相同的目的。
](
https://beginnersbook.com/2014/05/where-clause-in-sql/
)
如果您了解一点 SQL,那么您可以将其视为 SQL 中的
[
`where`
子句,它用于相同的目的。
](
https://beginnersbook.com/2014/05/where-clause-in-sql/
)
**选择运算符语法(
σ
)**
**选择运算符语法(
`σ`
)**
```
σ Condition/Predicate(Relation/Table name)
...
...
@@ -82,9 +82,9 @@ C10111 Raghu Agra
投影运算符由Π符号表示,用于从表(或关系)中选择所需的列(或属性)。
关系代数中的投影运算符类似于 SQL 中的
[
Select
语句。
](
https://beginnersbook.com/2018/11/sql-select/
)
关系代数中的投影运算符类似于 SQL 中的
[
`Select`
语句。
](
https://beginnersbook.com/2018/11/sql-select/
)
**投影运算符语法(
Π
)**
**投影运算符语法(
`Π`
)**
```
∏ column_name1, column_name2, ...., column_nameN(table_name)
...
...
@@ -92,7 +92,7 @@ C10111 Raghu Agra
### 投影运算符(`Π`)示例
在这个例子中,我们有一个包含三列的表
CUSTOMER,我们只想获取表的两列,我们可以在 ProjectOperatorΠ
的帮助下完成。
在这个例子中,我们有一个包含三列的表
`CUSTOMER`
,我们只想获取表的两列,我们可以在 投影运算符
`Π`
的帮助下完成。
```
Table: CUSTOMER
...
...
@@ -130,11 +130,11 @@ Carl Delhi
并集运算符用∪符号表示,用于从两个表(关系)中选择所有行(元组)。
让我们再讨论一下并集运算符。假设我们有两个关系
R1 和 R2 都有相同的列,我们想从这些关系中选择所有元组(行),然后我们可以在这些关系上应用 union
运算符。
让我们再讨论一下并集运算符。假设我们有两个关系
`R1`
和
`R2`
都有相同的列,我们想从这些关系中选择所有元组(行),然后我们可以在这些关系上应用并集
运算符。
**注意:**
两个表中存在的行(元组)只在并集集中出现一次。简而言之,您可以说并集操作后没有重复项。
**并集运算符的语法(
∪
)**
**并集运算符的语法(
`∪`
)**
```
table_name1 ∪ table_name2
...
...
@@ -188,17 +188,17 @@ Steve
```
**注意:**
正如你所看到的那样,输出中没有重复的名称,即使我们在两个表中都有很少的通用名称,同样在
COURSE
表中我们自己也有重复的名称。
**注意:**
正如你所看到的那样,输出中没有重复的名称,即使我们在两个表中都有很少的通用名称,同样在
`COURSE`
表中我们自己也有重复的名称。
## 交集运算符(`∩`)
交集运算符用
∩
符号表示,用于从两个表(关系)中选择公共行(元组)。
交集运算符用
`∩`
符号表示,用于从两个表(关系)中选择公共行(元组)。
假设我们有两个关系
R1 和 R2 都有相同的列,我们想要选择两个关系中存在的所有元组(行),那么在这种情况下我们可以对这两个关系 R1∩R2
应用交集运算。
假设我们有两个关系
`R1`
和
`R2`
都有相同的列,我们想要选择两个关系中存在的所有元组(行),那么在这种情况下我们可以对这两个关系
`R1∩R2`
应用交集运算。
**注意:**
只有那两个表中存在的那些行才会出现在结果集中。
**交集运算符语法(
∩
)**
**交集运算符语法(
`∩`
)**
```
table_name1 ∩ table_name2
...
...
@@ -220,7 +220,7 @@ C115 Lucy S931
```
Table 2:
STUDENT
Table 2:
`STUDENT`
```
Student_Id Student_Name Student_Age
...
...
@@ -253,9 +253,9 @@ Lucy
## 差集运算符(`-`)
差集运算符用
- 符号表示。假设我们有两个关系 R1 和 R2,我们想要选择所有那些存在于关系 R1 中的元组(行)但是
**而不是**
存在于关系 R2 中,这可以使用设置差值 R1-R2
来完成。
差集运算符用
`-`
符号表示。假设我们有两个关系
`R1`
和
`R2`
,我们想要选择所有那些存在于关系
`R1`
中的元组(行)但是
**而不是**
存在于关系
`R2`
中,这可以使用设置差值
`R1-R2`
来完成。
**差集运算符语法(
-
)**
**差集运算符语法(
`-`
)**
```
table_name1 - table_name2
...
...
@@ -266,7 +266,7 @@ table_name1 - table_name2
让我们看看上面我们看到的课程和学生。
**查询:**
让我们编写一个查询来选择
STUDENT 表中但不存在于 COURSE
表中的学生姓名。
让我们编写一个查询来选择
`STUDENT`
表中但不存在于
`COURSE`
表中的学生姓名。
```
∏ Student_Name (STUDENT) - ∏ Student_Name (COURSE)
...
...
@@ -284,9 +284,9 @@ Rick
## 笛卡尔积(`X`)
笛卡儿积用
X 符号表示。假设我们有两个关系 R1 和 R2 然后这两个关系的笛卡尔积(R1 X R2)将第一关系 R1 的每个元组与第二关系 R2
的每个元组组合。我知道这听起来令人困惑,但是一旦我们举一个这样的例子,你就能理解这一点。
笛卡儿积用
`X`
符号表示。假设我们有两个关系
`R1`
和
`R2`
然后这两个关系的笛卡尔积(
`R1 X R2`
)将第一关系
`R1`
的每个元组与第二关系
`R2`
的每个元组组合。我知道这听起来令人困惑,但是一旦我们举一个这样的例子,你就能理解这一点。
**笛卡尔积(
X
)**
的句法
**笛卡尔积(
`X`
)**
的句法
```
R1 X R2
...
...
@@ -294,7 +294,7 @@ R1 X R2
### 笛卡尔积(`X`)示例
表 1:
R
表 1:
`R`
```
Col_A Col_B
...
...
@@ -305,7 +305,7 @@ CC 300
```
表 2:
S
表 2:
`S`
```
Col_X Col_Y
...
...
@@ -317,7 +317,7 @@ ZZ 101
```
**查询:**
让我们找到表
R 和 S
的笛卡尔积。
让我们找到表
`R`
和
`S`
的笛卡尔积。
```
R X S
...
...
@@ -341,17 +341,20 @@ CC 300 ZZ 101
```
**注意:**
输出中的行数始终是每个表中行数的叉积。在我们的示例中,表 1 有 3 行,表 2 有 3 行,因此输出有
3×3 = 9
行。
**注意:**
输出中的行数始终是每个表中行数的叉积。在我们的示例中,表 1 有 3 行,表 2 有 3 行,因此输出有
`3×3 = 9`
行。
## 重命名(`ρ`)
重命名(ρ)操作可用于重命名关系或关系的属性。
**重命名(ρ)语法:**
ρ(new_relation_name,old_relation_name)
重命名(
`ρ`
)操作可用于重命名关系或关系的属性。
**重命名(`ρ`)语法:**
### 重命名(ρ)示例
```
ρ(new_relation_name, old_relation_name)
```
### 重命名(`ρ`)示例
假设我们有一个表客户,我们正在获取客户名称,我们将结果关系重命名为
CUST_NAMES
。
假设我们有一个表客户,我们正在获取客户名称,我们将结果关系重命名为
`CUST_NAMES`
。
表:客户
...
...
docs/dbms/2.md
浏览文件 @
8eefcd47
...
...
@@ -8,7 +8,7 @@ DBMS 代表 **D** ata **b** ase **M** aagement **S** ystem。我们可以像 DBM
数据库系统基本上是为大量数据而开发的。在处理大量数据时,有两件事需要优化:
**存储数据**
和
**检索数据**
。
**存储:**
根据数据库系统的原理,数据以这样的方式存储,即在存储之前删除冗余数据(重复数据),它可以获得更少的空间。让我们以一个外行的例子来理解这一点:
在银行系统中,假设一个客户有两个账户,一个是储蓄账户,另一个是工资账户。假设银行商店在一个地方保存帐户数据(这些地方称为表
格
,我们将在稍后学习)和工资帐户数据在另一个地方,在这种情况下,如果客户信息,如客户名称,地址等,都存储在两个地方然后,这只是存储(数据的冗余/重复)的浪费,以更好的方式组织数据,信息应该存储在一个地方,并且两个帐户都应该以某种方式链接到该信息。我们在 DBMS 中实现的一样。
在银行系统中,假设一个客户有两个账户,一个是储蓄账户,另一个是工资账户。假设银行商店在一个地方保存帐户数据(这些地方称为表,我们将在稍后学习)和工资帐户数据在另一个地方,在这种情况下,如果客户信息,如客户名称,地址等,都存储在两个地方然后,这只是存储(数据的冗余/重复)的浪费,以更好的方式组织数据,信息应该存储在一个地方,并且两个帐户都应该以某种方式链接到该信息。我们在 DBMS 中实现的一样。
**快速检索数据**
:除了以优化和系统的方式存储数据外,在需要时快速检索数据也很重要。数据库系统确保尽快检索数据。
...
...
docs/dbms/20.md
浏览文件 @
8eefcd47
...
...
@@ -65,7 +65,7 @@ Chaitanya Singh 31
## 2.域关系演算(DRC)
在域关系演算中,记录基于域进行过滤。
我们再次采用相同的表
格
来了解 DRC 的工作原理。
我们再次采用相同的表来了解 DRC 的工作原理。
表:学生
```
...
...
docs/dbms/37.md
浏览文件 @
8eefcd47
...
...
@@ -8,7 +8,7 @@
数据库未范式时会发生三种类型的异常。这些是 - 插入,更新和删除异常。我们举一个例子来理解这一点。
**示例**
:假设制造公司将员工详细信息存储在名为 employee 的表中,该表具有四个属性:emp_id 用于存储员工的 id,emp_name 用于存储员工的姓名,emp_address 用于存储员工的地址,emp_dept 用于存储部门详细信息员工的工作方式。在某些时候,表
格
看起来像这样:
**示例**
:假设制造公司将员工详细信息存储在名为 employee 的表中,该表具有四个属性:emp_id 用于存储员工的 id,emp_name 用于存储员工的姓名,emp_address 用于存储员工的地址,emp_dept 用于存储部门详细信息员工的工作方式。在某些时候,表看起来像这样:
| EMP_ID | EMP_NAME | emp_address | 删除 emp_dept |
| 101 | 干草堆 | 新德里 | D001 |
...
...
@@ -66,7 +66,7 @@
如果以下两个条件成立,则表示在 2NF 中:
*
表
格
为 1NF(第一范式)
*
表为 1NF(第一范式)
*
没有非素数属性取决于表的任何候选键的适当子集。
不属于任何候选键的属性称为非素数属性。
...
...
@@ -83,7 +83,7 @@
**候选键**
:{teacher_id,subject}
**非素数属性**
:teacher_age
该表在 1 NF 中,因为每个属性都有原子值。但是,它不在 2NF 中,因为非素数属性 teacher_age 仅依赖于 teacher_id,它是候选键的适当子集。这违反了 2NF 的规则,因为规则说“
**没有**
非素数属性依赖于表
格
的任何候选键的正确子集”。
该表在 1 NF 中,因为每个属性都有原子值。但是,它不在 2NF 中,因为非素数属性 teacher_age 仅依赖于 teacher_id,它是候选键的适当子集。这违反了 2NF 的规则,因为规则说“
**没有**
非素数属性依赖于表的任何候选键的正确子集”。
为了使表符合 2NF,我们可以在两个表中打破它:
**teacher_details 表:**
...
...
@@ -106,14 +106,14 @@
## 第三范式(3NF)
如果满足以下条件,则表
格
设计为 3NF:
如果满足以下条件,则表设计为 3NF:
*
表必须是 2NF
*
[
应删除任何超级键上非主要属性的传递函数依赖
](
https://beginnersbook.com/2015/04/transitive-dependency-in-dbms/
)
。
不属于任何
[
候选键
](
https://beginnersbook.com/2015/04/candidate-key-in-dbms/
)
的属性称为非素数属性。
换句话说,3NF 可以这样解释:如果表
格在 2NF 中,则表格
在 3NF 中,并且对于每个函数依赖性 X-
>
Y 至少满足下列条件之一:
换句话说,3NF 可以这样解释:如果表
在 2NF 中,则表
在 3NF 中,并且对于每个函数依赖性 X-
>
Y 至少满足下列条件之一:
*
X 是表的
[
超级键
](
https://beginnersbook.com/2015/04/super-key-in-dbms/
)
*
Y 是表的主要属性
...
...
docs/dbms/45.md
浏览文件 @
8eefcd47
...
...
@@ -51,7 +51,7 @@
*
等待/模
*
伤口/等待
以下是每种算法的资源分配的表
格
表示。这两种算法都考虑了进程时代,同时确定了避免死锁的最佳资源分配方式。
以下是每种算法的资源分配的表表示。这两种算法都考虑了进程时代,同时确定了避免死锁的最佳资源分配方式。
| | 等待/模 | 伤口/等待 |
| 较旧的进程需要年轻进程持有的资源 |
**旧程序**
等待 |
**年轻的过程**
死了 |
...
...
docs/dbms/8.md
浏览文件 @
8eefcd47
...
...
@@ -11,10 +11,10 @@
**逻辑级**
:这是 3 级数据抽象架构的中间层。它描述了数据库中存储的数据。
**
查看级别
**
:最高级别的数据抽象。此级别描述用户与数据库系统的交互。
**
视图级
**
:最高级别的数据抽象。此级别描述用户与数据库系统的交互。
**示例**
:假设我们将客户信息存储在客户表中。在
**物理级**
,这些记录可以描述为内存中的存储块(字节,千兆字节,太字节等)。这些细节通常对程序员来说是隐藏的。
在
**逻辑级**
,这些记录可以被描述为字段和属性以及它们的数据类型,它们之间的关系可以在逻辑上实现。程序员通常在这个级别工作,因为他们知道有关数据库系统的这些事情。
在
**视图级别**
,用户只需在 GUI 的帮助下与系统交互并在屏幕上输入详细信息,他们不知道数据的存储方式和存储的数据;这些细节对他们来说是隐藏的。
\ No newline at end of file
在
**视图级**
,用户只需在 GUI 的帮助下与系统交互并在屏幕上输入详细信息,他们不知道数据的存储方式和存储的数据;这些细节对他们来说是隐藏的。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录