提交 8eefcd47 编写于 作者: W wizardforcel

2019-08-21 11:35:51

上级 5a12a7cd
......@@ -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)
## 实体集的完全参与
......
......@@ -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)
**注:**
......
......@@ -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
......@@ -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.实例和架构
......
......@@ -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
......@@ -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
......@@ -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`
表:客户
......
......@@ -8,7 +8,7 @@ DBMS 代表 **D** ata **b** ase **M** aagement **S** ystem。我们可以像 DBM
数据库系统基本上是为大量数据而开发的。在处理大量数据时,有两件事需要优化:**存储数据****检索数据**
**存储:**根据数据库系统的原理,数据以这样的方式存储,即在存储之前删除冗余数据(重复数据),它可以获得更少的空间。让我们以一个外行的例子来理解这一点:
在银行系统中,假设一个客户有两个账户,一个是储蓄账户,另一个是工资账户。假设银行商店在一个地方保存帐户数据(这些地方称为表,我们将在稍后学习)和工资帐户数据在另一个地方,在这种情况下,如果客户信息,如客户名称,地址等,都存储在两个地方然后,这只是存储(数据的冗余/重复)的浪费,以更好的方式组织数据,信息应该存储在一个地方,并且两个帐户都应该以某种方式链接到该信息。我们在 DBMS 中实现的一样。
在银行系统中,假设一个客户有两个账户,一个是储蓄账户,另一个是工资账户。假设银行商店在一个地方保存帐户数据(这些地方称为表,我们将在稍后学习)和工资帐户数据在另一个地方,在这种情况下,如果客户信息,如客户名称,地址等,都存储在两个地方然后,这只是存储(数据的冗余/重复)的浪费,以更好的方式组织数据,信息应该存储在一个地方,并且两个帐户都应该以某种方式链接到该信息。我们在 DBMS 中实现的一样。
**快速检索数据**:除了以优化和系统的方式存储数据外,在需要时快速检索数据也很重要。数据库系统确保尽快检索数据。
......
......@@ -65,7 +65,7 @@ Chaitanya Singh 31
## 2.域关系演算(DRC)
在域关系演算中,记录基于域进行过滤。
我们再次采用相同的表来了解 DRC 的工作原理。
我们再次采用相同的表来了解 DRC 的工作原理。
表:学生
```
......
......@@ -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 是表的主要属性
......
......@@ -51,7 +51,7 @@
* 等待/模
* 伤口/等待
以下是每种算法的资源分配的表表示。这两种算法都考虑了进程时代,同时确定了避免死锁的最佳资源分配方式。
以下是每种算法的资源分配的表表示。这两种算法都考虑了进程时代,同时确定了避免死锁的最佳资源分配方式。
| | 等待/模 | 伤口/等待 |
| 较旧的进程需要年轻进程持有的资源 | **旧程序**等待 | **年轻的过程**死了 |
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册